# 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 파서에 직접 넣지 않는다. - 포맷별 파서의 정규식 변경 시 다른 포맷 동작을 함께 수정하지 않는다.