diff options
Diffstat (limited to 'src/parser/token.rs')
| -rw-r--r-- | src/parser/token.rs | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/parser/token.rs b/src/parser/token.rs new file mode 100644 index 0000000..8c3a445 --- /dev/null +++ b/src/parser/token.rs @@ -0,0 +1,62 @@ +// rST does indentation for lists by using the column after the list item +// i’ll represent it as BulletList → Indent. e.g.: +// +//1. * foo +// * bar +// +// becomes: +// +//EnumList(Arabic, Period) → Indent(3) +// → BulletList(Asterisk) → Indent(2) +// → Line("foo") +// → Dedent(2) +// → BulletList(Asterisk) → Indent(2) +// → Line("bar") +//→ Dedent(5) + +//http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#bullet-lists + +enum BulletListType { Ast, Plus, Minus, Bullet, TriBullet, HyphenBullet } +enum EnumListChar { Arabic, AlphaUpper, AlphaLower, RomanUpper, RomanLower, Auto } +enum EnumListType { Period, ParenEnclosed, Paren } +enum AdornmentChar { + Bang, DQuote, Hash, Dollar, Percent, Amp, SQuote, LParen, RParen, Ast, Plus, Comma, + Minus, Period, Slash, Colon, Semicolon, Less, Eq, More, Question, At, LBrack, + Backslash, RBrack, Caret, Underscore, Backtick, LBrace, Pipe, RBrace, Tilde, +} +enum FootnoteType { Numbered(usize), AutoNumber, AutoSymbol, AutoNamed(String) } + +enum TokenBlockLevel { + EmptyLine, + Indent(u8), // plain indents mean blockquotes + Dedent(u8), + Line(String), + + Adornment(AdornmentChar, u32), // ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~ + // for a transition, this must be surrounded by blank lines, and be of length ≥ 4 + + ListBulletItem(BulletListType), // *, +, -, •, ‣, ⁃ + ListEnumItem(EnumListChar, EnumListType), // 1, A, a, I, i; 1., (1), 1) + ListDefinitionTerm(String, Option<String>), //term and classifiers + ListFieldName(String), + ListOption(String), + ListOptionArg(String), + + BlockLiteral, + BlockQuotedLiteral(AdornmentChar), + // line blocks use pipes (|) + BlockDoctest(String), + + GridTableLine(String), + GridTableRow(String), + SimpleTableLine(String), + + Footnote(FootnoteType), // [1], [#], [*], [#foo] + Citation(String), + Directive(String, String), // name and args + SubstitutionDef(String, String), // symbol and substitited line TODO: maybe only the former? + Comment, + CommentEmpty, // if not followed by anything, “..” is special + Target(String, String), + TargetAnonymous(String), +} |
