A basic parser for .srt files (subtitles) based on
Don't use parseOnly!
This module uses now peekChar in parseDialog, which replaces the ad-hoc method used before. As a consequence it doesn't play well with Data.Attoparsec.Text.parseOnly on some conditions.
You should use just
parse or the parseOnly' function I provide to avoid
problems until further notice. Hopefully in the next version of attoparsec
this will be solved , so keep an eye for removal!.
Terminology of the module
All the sections of a Line have their corresponding ADT in Text.Subtitles.SRT.Datatypes
2 00:00:50,050 --> 00:00:52,217 X1:1 X2:2 Y1:1 Y2:2 Drama here
The whole Line is represented in the
Line ADT which constructors
represented by different ADTs
- The first line is called index, which is the first constructor of
- The second one is called
Range, which correspond to two separated
- After the range is an optional field called Rectangle which says what geometry should the text obey.
- The last one is the
subs. Which is just Text and correspond to the third constructor of
Main Parser, gives you a list of all the Lines of the subtitle. It fails if the subtitle doesn't have any Lines.
The individual Line parser. Given the upper example return the corresponding Line representation