# subtitle

## 목적 / 책임

SRT, SMI, VTT 등 자막 포맷을 파싱하고 공통 자막 모델로 변환한다.

## 포함 경로

- `lib/subtitle/` — 자막 파서, 공통 모델, 시간 처리

## 제외 경로

- `lib/charset/` — 문자셋 변환 및 코드 페이지 책임
- `lib/platform/` — 파일 접근과 플랫폼 분기 책임

## 주요 구성 요소

- `ParserBase` — 파서 공통 계약과 HTML 태그 제거 로직
- `Subtitles`, `Subtitle`, `Time` — 자막 데이터 모델
- `parser_srt.dart`, `parser_smi.dart`, `parser_vtt.dart` — 포맷별 파서

## 유지할 패턴

- 포맷별 파서는 `ParserBase` 계약을 유지한다.
- 시간 처리 변경 시 기존 포맷별 파서의 경계값을 함께 점검한다.

## 다른 도메인과의 경계

- **charset**: 문자열 디코딩 문제는 charset 도메인에서 처리하고 subtitle은 파싱된 문자열 구조에 집중한다.
- **application-core**: 자막 모델을 앱 데이터 모델과 직접 결합하지 않는다.

## 금지 사항

- 특정 파일 시스템이나 네트워크 접근을 subtitle 파서에 직접 넣지 않는다.
- 포맷별 파서의 정규식 변경 시 다른 포맷 동작을 함께 수정하지 않는다.
