Module: Enolib::Grammar
- Defined in:
- lib/enolib/grammar_regexp.rb
Constant Summary collapse
- OPTIONAL =
/([^\n]+?)?/.source
- REQUIRED =
/(\S[^\n]*?)/.source
- EMPTY =
/()/.source
- EMPTY_LINE_INDEX =
1
- DIRECT_LINE_CONTINUATION =
| value
/(\|)[^\S\n]*#{OPTIONAL}/.source
- DIRECT_LINE_CONTINUATION_OPERATOR_INDEX =
2
- DIRECT_LINE_CONTINUATION_VALUE_INDEX =
3
- SPACED_LINE_CONTINUATION =
\ value
/(\\)[^\S\n]*#{OPTIONAL}/.source
- SPACED_LINE_CONTINUATION_OPERATOR_INDEX =
4
- SPACED_LINE_CONTINUATION_VALUE_INDEX =
5
- CONTINUATION =
/#{DIRECT_LINE_CONTINUATION}|#{SPACED_LINE_CONTINUATION}/.source
- COMMENT =
> Comment
/(>)[^\S\n]*#{OPTIONAL}/.source
- COMMENT_OPERATOR_INDEX =
6
- COMMENT_VALUE_INDEX =
7
- LIST_ITEM =
-
value
-
/(-)(?!-)[^\S\n]*#{OPTIONAL}/.source
- LIST_ITEM_OPERATOR_INDEX =
8
- LIST_ITEM_VALUE_INDEX =
9
- MULTILINE_FIELD =
– key
/(-{2,})(?!-)[^\S\n]*#{REQUIRED}/.source
- MULTILINE_FIELD_OPERATOR_INDEX =
10
- MULTILINE_FIELD_KEY_INDEX =
11
- SECTION_OPERATOR =
#
/(#+)(?!#)/.source
- SECTION_OPERATOR_INDEX =
12
- SECTION_KEY_UNESCAPED =
# key
/([^\s`<][^<\n]*?)/.source
- SECTION_KEY_UNESCAPED_INDEX =
13
- SECTION_KEY_ESCAPE_BEGIN_OPERATOR_INDEX =
# ‘key`
14
- SECTION_KEY_ESCAPED =
TODO: Should this exclude the backreference inside the quotes? (as in ((?:(?!1).)+) ) here and elsewhere (probably not because it’s not greedy.?!
/(`+)(?!`)[^\S\n]*(\S[^\n]*?)[^\S\n]*(#{"\\#{SECTION_KEY_ESCAPE_BEGIN_OPERATOR_INDEX}"})/.source
- SECTION_KEY_ESCAPED_INDEX =
15
- SECTION_KEY_ESCAPE_END_OPERATOR_INDEX =
16
- SECTION_KEY =
# key < template # ‘key` < template
/(?:#{SECTION_KEY_UNESCAPED}|#{SECTION_KEY_ESCAPED})/.source
- SECTION_TEMPLATE =
/(?:(<(?!<)|<<)[^\S\n]*#{REQUIRED})?/.source
- SECTION =
/#{SECTION_OPERATOR}\s*#{SECTION_KEY}[^\S\n]*#{SECTION_TEMPLATE}/.source
- SECTION_COPY_OPERATOR_INDEX =
17
- SECTION_TEMPLATE_INDEX =
18
- EARLY_DETERMINED =
/#{CONTINUATION}|#{COMMENT}|#{LIST_ITEM}|#{MULTILINE_FIELD}|#{SECTION}/.source
- KEY_UNESCAPED =
key
/([^\s>#\-`\\|:=<][^\n:=<]*?)/.source
- KEY_UNESCAPED_INDEX =
19
- KEY_ESCAPE_BEGIN_OPERATOR_INDEX =
‘key`
20
- KEY_ESCAPED =
/(`+)(?!`)[^\S\n]*(\S[^\n]*?)[^\S\n]*(#{"\\#{KEY_ESCAPE_BEGIN_OPERATOR_INDEX}"})/.source
- KEY_ESCAPED_INDEX =
21
- KEY_ESCAPE_END_OPERATOR_INDEX =
22
- KEY =
/(?:#{KEY_UNESCAPED}|#{KEY_ESCAPED})/.source
- ELEMENT_OR_FIELD =
: : value
/(:)[^\S\n]*#{OPTIONAL}/.source
- ELEMENT_OPERATOR_INDEX =
23
- FIELD_VALUE_INDEX =
24
- FIELDSET_ENTRY =
value
/(=)[^\S\n]*#{OPTIONAL}/.source
- FIELDSET_ENTRY_OPERATOR_INDEX =
25
- FIELDSET_ENTRY_VALUE_INDEX =
26
- COPY =
< template << template
/(<(?!<)|<<)\s*#{REQUIRED}/.source
- COPY_OPERATOR_INDEX =
27
- TEMPLATE_INDEX =
28
- LATE_DETERMINED =
/#{KEY}\s*(?:#{ELEMENT_OR_FIELD}|#{FIELDSET_ENTRY}|#{COPY})/.source
- NOT_EMPTY =
/(?:#{EARLY_DETERMINED}|#{LATE_DETERMINED})/.source
- REGEX =
/[^\S\n]*(?:#{EMPTY}|#{NOT_EMPTY})[^\S\n]*(?=\n|$)/.freeze