arti_mark 0.1.beta2 → 0.1.beta3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ea5f180d2dd60c4f6db67fb8b673956325d66111
4
- data.tar.gz: bad7e4794e96a3cc9006bb2b41e01207ccd85dc7
3
+ metadata.gz: 2a753ec42964f583942ab77b63d3b65156c06311
4
+ data.tar.gz: 399b0886774cdea1efee7c110b756016f379d6ba
5
5
  SHA512:
6
- metadata.gz: 19f4378e07bb418869482366e8c525c45bb65d175b23532f3dc4cdc1b80fb8e2b86d1d4210cc78973163ef2ae29754830b8a92491ca5d708b65e3d83bd4170ef
7
- data.tar.gz: d59262778224de2eda466a835cad0429fbd16622ce92ddb3e40d41c48a849126b1526bae3d9a493322ac8095b902e0a0975b379fd447326f2215d6f7c7edca12
6
+ metadata.gz: 9123fd9378a7dd31e676332ab8828f83b6c1fd2d39dea64109af297e7e736438fd65730119d365814b43d44a160b07bb719007c3ab85d7fa5191a1217e277212
7
+ data.tar.gz: 2b5d2f0827b7d224487793542fd59f3217daf0403a55d0c6d2da02c7264c8cb2e5be13c45f7e1be70d20b2679304e962227f692a0cac8d089494731374d61729
@@ -4,16 +4,16 @@
4
4
  eof = !.
5
5
  space = ' ' | '\t'
6
6
  eof_comment = lh space* "#" (!eof .)*
7
- comment = lh space* "#" (!nl .)* nl
8
-
7
+ comment = lh space* "#" (!nl .)* nl empty_line*
9
8
  - = ( space | comment )*
10
9
  empty_line = lh - nl
11
10
  nl = /\r?\n/
12
11
  lh = /^/
13
- le = nl | /$/
12
+ le = nl | eof
14
13
  word = < /[\w0-9]/ ( '-' | /[\w0-9]/ )* > { text }
15
14
  num = < [0-9]+ > { text.to_i }
16
15
 
16
+
17
17
  #common syntax
18
18
  classname = '.' word:classname { classname }
19
19
  classnames = (classname)*:classnames { classnames }
@@ -23,35 +23,31 @@ idnames = (idname)*:idnames { idnames }
23
23
  commandname = word:name idnames?:idnames classnames?:classes { {:name => name, :ids => idnames, :classes => classes} }
24
24
  parameter = < ( /[^,)]/* | '"' /[^"]/* '"' | "'" /[^']/* "'" ) > { text }
25
25
  parameters = < parameter (',' parameter)* > { text }
26
- command = commandname:commandname ('(' - parameters:arg - ')')? { arg ||= ''; commandname.merge({ :args => arg.split(',') }) }
26
+ command = commandname:cn ('(' - parameters:arg - ')')? { arg ||= ''; cn.merge({ :args => arg.split(',') }) }
27
27
 
28
28
  # paragraph
29
- implicit_paragraph = < (!paragraph_delimiter - documentline - ):paragraph > { create_item(:paragraph, nil, paragraph, raw: text) }
29
+ implicit_paragraph = < (!paragraph_delimiter - documentline:p -) > { create_item(:paragraph, nil, p, raw: text) }
30
30
  paragraph = explicit_paragraph | implicit_paragraph
31
31
 
32
32
  # paragraph_group
33
- paragraph_group = < (paragraph nl | paragraph )+:paragraphs empty_line* > { create_item(:paragraph_group, nil, paragraphs, raw: text) }
33
+ paragraph_group = < paragraph+:p empty_line* > { create_item(:paragraph_group, nil, p, raw: text) }
34
34
 
35
35
  # explicit block
36
- blockhead = lh - command:command - '{' - le { command }
37
- blockend = lh - '}' - le
36
+ blockhead = lh - command:command - '{' - nl empty_line* { command }
37
+ blockend = lh - '}' - le empty_line*
38
38
  blockbody = (!blockend block)+:body { body }
39
- explicit_block = < blockhead:head blockbody:body blockend > { create_item(:block, head, body, raw: text) }
39
+ explicit_block = < blockhead:head - blockbody:body - blockend > { create_item(:block, head, body, raw: text) }
40
40
 
41
41
  # inline command
42
42
  inline = img_inline | common_inline
43
- common_inline = < '[' command:command '{' documentcontent_except('}'):content '}' ']' > { create_item(:inline, command, content, raw: text) }
44
-
45
- #img inline
46
- img_command = command:command &{ command[:name] == 'img' && command[:args].size == 2}
47
- img_inline = < '[' img_command:command ']' > { create_item(:inline, command, nil, raw: text) }
43
+ common_inline = < '[' command:c '{' documentcontent_except('}'):content '}' ']' > { create_item(:inline, c, content, raw: text) }
44
+ img_command = command:c &{ c[:name] == 'img' && c[:args].size == 2}
45
+ img_inline = < '[' img_command:c ']' > { create_item(:inline, c, nil, raw: text) }
48
46
 
49
47
  # special line commands
50
- # newpage
51
- newpage = line_command:item &{ item[:name] == 'newpage' }
52
48
  # explicit paragraph
53
- explicit_paragraph_command = command:command &{ command[:name] == 'p' }
54
- explicit_paragraph = < lh - explicit_paragraph_command:command ':' documentcontent?:content le > { create_item(:paragraph, command, content, raw:text) }
49
+ explicit_paragraph_command = command:c &{ c[:name] == 'p' }
50
+ explicit_paragraph = < lh - explicit_paragraph_command:c ':' documentcontent?:content le empty_line*> { create_item(:paragraph, c, content, raw:text) }
55
51
 
56
52
  # unordered list
57
53
  unordered_list = < unordered_item+:items > { create_item(:ul, nil, items, raw: text) }
@@ -69,12 +65,20 @@ items_list = unordered_list | ordered_list | definition_list
69
65
 
70
66
 
71
67
  # generic line command
72
- line_command = < lh - (!explicit_paragraph_command command):command ':' documentcontent?:content le > { create_item(:line_command, command, content, raw: text) }
68
+ line_command = < lh - !explicit_paragraph_command command:c ':' documentcontent?:content - le empty_line* > { create_item(:line_command, c, content, raw: text) }
73
69
 
74
70
  # blocks
75
- block = items_list | line_command | explicit_block | paragraph_group | empty_line+
76
- block_delimiter = blockhead | blockend | newpage
77
- paragraph_delimiter = block | block_delimiter
71
+ line_block = items_list | line_command
72
+ block = (line_block | explicit_block | paragraph_group):block empty_line* {block}
73
+ block_delimiter = blockhead | blockend
74
+ paragraph_delimiter = block_delimiter | line_block
75
+
76
+
77
+ #header
78
+ stylesheets = < lh - 'stylesheets:' !le charstring:s nl > { create_item(:stylesheets, {:stylesheets => s.split(',').map(&:strip)}, nil, raw:text) }
79
+ title = < lh - 'title:' !le charstring:t nl > { create_item(:title, {:title => t }, nil, raw:text) }
80
+ lang = < lh - 'lang:' !le charstring:l nl > { create_item(:lang, {:lang => l }, nil, raw:text) }
81
+ header = (stylesheets | title | lang) empty_line*
78
82
 
79
83
  # texts
80
84
  char = < /[[:print:]]/ > { text }
@@ -83,15 +87,9 @@ char_except(e) = char:c &{ c != e }
83
87
  charstring_except(e) = < char_except(e)* > { text }
84
88
  documentcontent_except(e) = (inline | !inline char_except(e))+:content ~parse_text(content)
85
89
  documentcontent = (inline | !inline char)+:content ~parse_text(content)
86
- documentline = lh documentcontent:content /$/ { content }
87
-
88
- #header
89
- stylesheets = < lh - 'stylesheets:' (!le charstring):stylesheets le > { create_item(:stylesheets, {:stylesheets => stylesheets.split(',').map(&:strip)}, nil, raw:text) }
90
- title = < lh - 'title:' (!le charstring):title le > { create_item(:title, {:title => title }, nil, raw:text) }
91
- lang = < lh - 'lang:' (!le charstring):lang le > { create_item(:lang, {:lang => lang }, nil, raw:text) }
92
- header = stylesheets | title | lang
90
+ documentline = lh documentcontent:content le { content }
93
91
 
94
92
  #root
95
- root = header*:headers block*:blocks eof_comment? eof { headers + blocks }
93
+ root = header*:headers - block*:blocks - eof_comment? eof { headers.concat blocks.select{ |x| !x.nil?} }
96
94
 
97
95
 
@@ -87,7 +87,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
87
87
  return _tmp
88
88
  end
89
89
 
90
- # comment = lh space* "#" (!nl .)* nl
90
+ # comment = lh space* "#" (!nl .)* nl empty_line*
91
91
  def _comment
92
92
 
93
93
  _save = self.pos
@@ -138,6 +138,15 @@ class ArtiMark::Parser < KPeg::CompiledParser
138
138
  break
139
139
  end
140
140
  _tmp = apply(:_nl)
141
+ unless _tmp
142
+ self.pos = _save
143
+ break
144
+ end
145
+ while true
146
+ _tmp = apply(:_empty_line)
147
+ break unless _tmp
148
+ end
149
+ _tmp = true
141
150
  unless _tmp
142
151
  self.pos = _save
143
152
  end
@@ -210,7 +219,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
210
219
  return _tmp
211
220
  end
212
221
 
213
- # le = (nl | /$/)
222
+ # le = (nl | eof)
214
223
  def _le
215
224
 
216
225
  _save = self.pos
@@ -218,7 +227,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
218
227
  _tmp = apply(:_nl)
219
228
  break if _tmp
220
229
  self.pos = _save
221
- _tmp = scan(/\A(?-mix:$)/)
230
+ _tmp = apply(:_eof)
222
231
  break if _tmp
223
232
  self.pos = _save
224
233
  break
@@ -644,13 +653,13 @@ class ArtiMark::Parser < KPeg::CompiledParser
644
653
  return _tmp
645
654
  end
646
655
 
647
- # command = commandname:commandname ("(" - parameters:arg - ")")? { arg ||= ''; commandname.merge({ :args => arg.split(',') }) }
656
+ # command = commandname:cn ("(" - parameters:arg - ")")? { arg ||= ''; cn.merge({ :args => arg.split(',') }) }
648
657
  def _command
649
658
 
650
659
  _save = self.pos
651
660
  while true # sequence
652
661
  _tmp = apply(:_commandname)
653
- commandname = @result
662
+ cn = @result
654
663
  unless _tmp
655
664
  self.pos = _save
656
665
  break
@@ -695,7 +704,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
695
704
  self.pos = _save
696
705
  break
697
706
  end
698
- @result = begin; arg ||= ''; commandname.merge({ :args => arg.split(',') }) ; end
707
+ @result = begin; arg ||= ''; cn.merge({ :args => arg.split(',') }) ; end
699
708
  _tmp = true
700
709
  unless _tmp
701
710
  self.pos = _save
@@ -707,7 +716,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
707
716
  return _tmp
708
717
  end
709
718
 
710
- # implicit_paragraph = < (!paragraph_delimiter - documentline -):paragraph > { create_item(:paragraph, nil, paragraph, raw: text) }
719
+ # implicit_paragraph = < !paragraph_delimiter - documentline:p - > { create_item(:paragraph, nil, p, raw: text) }
711
720
  def _implicit_paragraph
712
721
 
713
722
  _save = self.pos
@@ -730,6 +739,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
730
739
  break
731
740
  end
732
741
  _tmp = apply(:_documentline)
742
+ p = @result
733
743
  unless _tmp
734
744
  self.pos = _save1
735
745
  break
@@ -741,7 +751,6 @@ class ArtiMark::Parser < KPeg::CompiledParser
741
751
  break
742
752
  end # end sequence
743
753
 
744
- paragraph = @result
745
754
  if _tmp
746
755
  text = get_text(_text_start)
747
756
  end
@@ -749,7 +758,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
749
758
  self.pos = _save
750
759
  break
751
760
  end
752
- @result = begin; create_item(:paragraph, nil, paragraph, raw: text) ; end
761
+ @result = begin; create_item(:paragraph, nil, p, raw: text) ; end
753
762
  _tmp = true
754
763
  unless _tmp
755
764
  self.pos = _save
@@ -779,7 +788,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
779
788
  return _tmp
780
789
  end
781
790
 
782
- # paragraph_group = < (paragraph nl | paragraph)+:paragraphs empty_line* > { create_item(:paragraph_group, nil, paragraphs, raw: text) }
791
+ # paragraph_group = < paragraph+:p empty_line* > { create_item(:paragraph_group, nil, p, raw: text) }
783
792
  def _paragraph_group
784
793
 
785
794
  _save = self.pos
@@ -790,61 +799,11 @@ class ArtiMark::Parser < KPeg::CompiledParser
790
799
  while true # sequence
791
800
  _save2 = self.pos
792
801
  _ary = []
793
-
794
- _save3 = self.pos
795
- while true # choice
796
-
797
- _save4 = self.pos
798
- while true # sequence
799
- _tmp = apply(:_paragraph)
800
- unless _tmp
801
- self.pos = _save4
802
- break
803
- end
804
- _tmp = apply(:_nl)
805
- unless _tmp
806
- self.pos = _save4
807
- end
808
- break
809
- end # end sequence
810
-
811
- break if _tmp
812
- self.pos = _save3
813
- _tmp = apply(:_paragraph)
814
- break if _tmp
815
- self.pos = _save3
816
- break
817
- end # end choice
818
-
802
+ _tmp = apply(:_paragraph)
819
803
  if _tmp
820
804
  _ary << @result
821
805
  while true
822
-
823
- _save5 = self.pos
824
- while true # choice
825
-
826
- _save6 = self.pos
827
- while true # sequence
828
- _tmp = apply(:_paragraph)
829
- unless _tmp
830
- self.pos = _save6
831
- break
832
- end
833
- _tmp = apply(:_nl)
834
- unless _tmp
835
- self.pos = _save6
836
- end
837
- break
838
- end # end sequence
839
-
840
- break if _tmp
841
- self.pos = _save5
842
- _tmp = apply(:_paragraph)
843
- break if _tmp
844
- self.pos = _save5
845
- break
846
- end # end choice
847
-
806
+ _tmp = apply(:_paragraph)
848
807
  _ary << @result if _tmp
849
808
  break unless _tmp
850
809
  end
@@ -853,7 +812,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
853
812
  else
854
813
  self.pos = _save2
855
814
  end
856
- paragraphs = @result
815
+ p = @result
857
816
  unless _tmp
858
817
  self.pos = _save1
859
818
  break
@@ -876,7 +835,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
876
835
  self.pos = _save
877
836
  break
878
837
  end
879
- @result = begin; create_item(:paragraph_group, nil, paragraphs, raw: text) ; end
838
+ @result = begin; create_item(:paragraph_group, nil, p, raw: text) ; end
880
839
  _tmp = true
881
840
  unless _tmp
882
841
  self.pos = _save
@@ -888,7 +847,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
888
847
  return _tmp
889
848
  end
890
849
 
891
- # blockhead = lh - command:command - "{" - le { command }
850
+ # blockhead = lh - command:command - "{" - nl empty_line* { command }
892
851
  def _blockhead
893
852
 
894
853
  _save = self.pos
@@ -924,7 +883,16 @@ class ArtiMark::Parser < KPeg::CompiledParser
924
883
  self.pos = _save
925
884
  break
926
885
  end
927
- _tmp = apply(:_le)
886
+ _tmp = apply(:_nl)
887
+ unless _tmp
888
+ self.pos = _save
889
+ break
890
+ end
891
+ while true
892
+ _tmp = apply(:_empty_line)
893
+ break unless _tmp
894
+ end
895
+ _tmp = true
928
896
  unless _tmp
929
897
  self.pos = _save
930
898
  break
@@ -941,7 +909,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
941
909
  return _tmp
942
910
  end
943
911
 
944
- # blockend = lh - "}" - le
912
+ # blockend = lh - "}" - le empty_line*
945
913
  def _blockend
946
914
 
947
915
  _save = self.pos
@@ -967,6 +935,15 @@ class ArtiMark::Parser < KPeg::CompiledParser
967
935
  break
968
936
  end
969
937
  _tmp = apply(:_le)
938
+ unless _tmp
939
+ self.pos = _save
940
+ break
941
+ end
942
+ while true
943
+ _tmp = apply(:_empty_line)
944
+ break unless _tmp
945
+ end
946
+ _tmp = true
970
947
  unless _tmp
971
948
  self.pos = _save
972
949
  end
@@ -1048,7 +1025,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
1048
1025
  return _tmp
1049
1026
  end
1050
1027
 
1051
- # explicit_block = < blockhead:head blockbody:body blockend > { create_item(:block, head, body, raw: text) }
1028
+ # explicit_block = < blockhead:head - blockbody:body - blockend > { create_item(:block, head, body, raw: text) }
1052
1029
  def _explicit_block
1053
1030
 
1054
1031
  _save = self.pos
@@ -1063,12 +1040,22 @@ class ArtiMark::Parser < KPeg::CompiledParser
1063
1040
  self.pos = _save1
1064
1041
  break
1065
1042
  end
1043
+ _tmp = apply(:__hyphen_)
1044
+ unless _tmp
1045
+ self.pos = _save1
1046
+ break
1047
+ end
1066
1048
  _tmp = apply(:_blockbody)
1067
1049
  body = @result
1068
1050
  unless _tmp
1069
1051
  self.pos = _save1
1070
1052
  break
1071
1053
  end
1054
+ _tmp = apply(:__hyphen_)
1055
+ unless _tmp
1056
+ self.pos = _save1
1057
+ break
1058
+ end
1072
1059
  _tmp = apply(:_blockend)
1073
1060
  unless _tmp
1074
1061
  self.pos = _save1
@@ -1113,7 +1100,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
1113
1100
  return _tmp
1114
1101
  end
1115
1102
 
1116
- # common_inline = < "[" command:command "{" documentcontent_except('}'):content "}" "]" > { create_item(:inline, command, content, raw: text) }
1103
+ # common_inline = < "[" command:c "{" documentcontent_except('}'):content "}" "]" > { create_item(:inline, c, content, raw: text) }
1117
1104
  def _common_inline
1118
1105
 
1119
1106
  _save = self.pos
@@ -1128,7 +1115,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
1128
1115
  break
1129
1116
  end
1130
1117
  _tmp = apply(:_command)
1131
- command = @result
1118
+ c = @result
1132
1119
  unless _tmp
1133
1120
  self.pos = _save1
1134
1121
  break
@@ -1163,7 +1150,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
1163
1150
  self.pos = _save
1164
1151
  break
1165
1152
  end
1166
- @result = begin; create_item(:inline, command, content, raw: text) ; end
1153
+ @result = begin; create_item(:inline, c, content, raw: text) ; end
1167
1154
  _tmp = true
1168
1155
  unless _tmp
1169
1156
  self.pos = _save
@@ -1175,19 +1162,19 @@ class ArtiMark::Parser < KPeg::CompiledParser
1175
1162
  return _tmp
1176
1163
  end
1177
1164
 
1178
- # img_command = command:command &{ command[:name] == 'img' && command[:args].size == 2}
1165
+ # img_command = command:c &{ c[:name] == 'img' && c[:args].size == 2}
1179
1166
  def _img_command
1180
1167
 
1181
1168
  _save = self.pos
1182
1169
  while true # sequence
1183
1170
  _tmp = apply(:_command)
1184
- command = @result
1171
+ c = @result
1185
1172
  unless _tmp
1186
1173
  self.pos = _save
1187
1174
  break
1188
1175
  end
1189
1176
  _save1 = self.pos
1190
- _tmp = begin; command[:name] == 'img' && command[:args].size == 2; end
1177
+ _tmp = begin; c[:name] == 'img' && c[:args].size == 2; end
1191
1178
  self.pos = _save1
1192
1179
  unless _tmp
1193
1180
  self.pos = _save
@@ -1199,7 +1186,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
1199
1186
  return _tmp
1200
1187
  end
1201
1188
 
1202
- # img_inline = < "[" img_command:command "]" > { create_item(:inline, command, nil, raw: text) }
1189
+ # img_inline = < "[" img_command:c "]" > { create_item(:inline, c, nil, raw: text) }
1203
1190
  def _img_inline
1204
1191
 
1205
1192
  _save = self.pos
@@ -1214,7 +1201,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
1214
1201
  break
1215
1202
  end
1216
1203
  _tmp = apply(:_img_command)
1217
- command = @result
1204
+ c = @result
1218
1205
  unless _tmp
1219
1206
  self.pos = _save1
1220
1207
  break
@@ -1233,7 +1220,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
1233
1220
  self.pos = _save
1234
1221
  break
1235
1222
  end
1236
- @result = begin; create_item(:inline, command, nil, raw: text) ; end
1223
+ @result = begin; create_item(:inline, c, nil, raw: text) ; end
1237
1224
  _tmp = true
1238
1225
  unless _tmp
1239
1226
  self.pos = _save
@@ -1245,43 +1232,19 @@ class ArtiMark::Parser < KPeg::CompiledParser
1245
1232
  return _tmp
1246
1233
  end
1247
1234
 
1248
- # newpage = line_command:item &{ item[:name] == 'newpage' }
1249
- def _newpage
1250
-
1251
- _save = self.pos
1252
- while true # sequence
1253
- _tmp = apply(:_line_command)
1254
- item = @result
1255
- unless _tmp
1256
- self.pos = _save
1257
- break
1258
- end
1259
- _save1 = self.pos
1260
- _tmp = begin; item[:name] == 'newpage' ; end
1261
- self.pos = _save1
1262
- unless _tmp
1263
- self.pos = _save
1264
- end
1265
- break
1266
- end # end sequence
1267
-
1268
- set_failed_rule :_newpage unless _tmp
1269
- return _tmp
1270
- end
1271
-
1272
- # explicit_paragraph_command = command:command &{ command[:name] == 'p' }
1235
+ # explicit_paragraph_command = command:c &{ c[:name] == 'p' }
1273
1236
  def _explicit_paragraph_command
1274
1237
 
1275
1238
  _save = self.pos
1276
1239
  while true # sequence
1277
1240
  _tmp = apply(:_command)
1278
- command = @result
1241
+ c = @result
1279
1242
  unless _tmp
1280
1243
  self.pos = _save
1281
1244
  break
1282
1245
  end
1283
1246
  _save1 = self.pos
1284
- _tmp = begin; command[:name] == 'p' ; end
1247
+ _tmp = begin; c[:name] == 'p' ; end
1285
1248
  self.pos = _save1
1286
1249
  unless _tmp
1287
1250
  self.pos = _save
@@ -1293,7 +1256,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
1293
1256
  return _tmp
1294
1257
  end
1295
1258
 
1296
- # explicit_paragraph = < lh - explicit_paragraph_command:command ":" documentcontent?:content le > { create_item(:paragraph, command, content, raw:text) }
1259
+ # explicit_paragraph = < lh - explicit_paragraph_command:c ":" documentcontent?:content le empty_line* > { create_item(:paragraph, c, content, raw:text) }
1297
1260
  def _explicit_paragraph
1298
1261
 
1299
1262
  _save = self.pos
@@ -1313,7 +1276,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
1313
1276
  break
1314
1277
  end
1315
1278
  _tmp = apply(:_explicit_paragraph_command)
1316
- command = @result
1279
+ c = @result
1317
1280
  unless _tmp
1318
1281
  self.pos = _save1
1319
1282
  break
@@ -1336,6 +1299,15 @@ class ArtiMark::Parser < KPeg::CompiledParser
1336
1299
  break
1337
1300
  end
1338
1301
  _tmp = apply(:_le)
1302
+ unless _tmp
1303
+ self.pos = _save1
1304
+ break
1305
+ end
1306
+ while true
1307
+ _tmp = apply(:_empty_line)
1308
+ break unless _tmp
1309
+ end
1310
+ _tmp = true
1339
1311
  unless _tmp
1340
1312
  self.pos = _save1
1341
1313
  end
@@ -1349,7 +1321,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
1349
1321
  self.pos = _save
1350
1322
  break
1351
1323
  end
1352
- @result = begin; create_item(:paragraph, command, content, raw:text) ; end
1324
+ @result = begin; create_item(:paragraph, c, content, raw:text) ; end
1353
1325
  _tmp = true
1354
1326
  unless _tmp
1355
1327
  self.pos = _save
@@ -1684,7 +1656,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
1684
1656
  return _tmp
1685
1657
  end
1686
1658
 
1687
- # line_command = < lh - (!explicit_paragraph_command command):command ":" documentcontent?:content le > { create_item(:line_command, command, content, raw: text) }
1659
+ # line_command = < lh - !explicit_paragraph_command command:c ":" documentcontent?:content - le empty_line* > { create_item(:line_command, c, content, raw: text) }
1688
1660
  def _line_command
1689
1661
 
1690
1662
  _save = self.pos
@@ -1703,25 +1675,16 @@ class ArtiMark::Parser < KPeg::CompiledParser
1703
1675
  self.pos = _save1
1704
1676
  break
1705
1677
  end
1706
-
1707
1678
  _save2 = self.pos
1708
- while true # sequence
1709
- _save3 = self.pos
1710
- _tmp = apply(:_explicit_paragraph_command)
1711
- _tmp = _tmp ? nil : true
1712
- self.pos = _save3
1713
- unless _tmp
1714
- self.pos = _save2
1715
- break
1716
- end
1717
- _tmp = apply(:_command)
1718
- unless _tmp
1719
- self.pos = _save2
1720
- end
1679
+ _tmp = apply(:_explicit_paragraph_command)
1680
+ _tmp = _tmp ? nil : true
1681
+ self.pos = _save2
1682
+ unless _tmp
1683
+ self.pos = _save1
1721
1684
  break
1722
- end # end sequence
1723
-
1724
- command = @result
1685
+ end
1686
+ _tmp = apply(:_command)
1687
+ c = @result
1725
1688
  unless _tmp
1726
1689
  self.pos = _save1
1727
1690
  break
@@ -1731,19 +1694,33 @@ class ArtiMark::Parser < KPeg::CompiledParser
1731
1694
  self.pos = _save1
1732
1695
  break
1733
1696
  end
1734
- _save4 = self.pos
1697
+ _save3 = self.pos
1735
1698
  _tmp = apply(:_documentcontent)
1736
1699
  @result = nil unless _tmp
1737
1700
  unless _tmp
1738
1701
  _tmp = true
1739
- self.pos = _save4
1702
+ self.pos = _save3
1740
1703
  end
1741
1704
  content = @result
1742
1705
  unless _tmp
1743
1706
  self.pos = _save1
1744
1707
  break
1745
1708
  end
1709
+ _tmp = apply(:__hyphen_)
1710
+ unless _tmp
1711
+ self.pos = _save1
1712
+ break
1713
+ end
1746
1714
  _tmp = apply(:_le)
1715
+ unless _tmp
1716
+ self.pos = _save1
1717
+ break
1718
+ end
1719
+ while true
1720
+ _tmp = apply(:_empty_line)
1721
+ break unless _tmp
1722
+ end
1723
+ _tmp = true
1747
1724
  unless _tmp
1748
1725
  self.pos = _save1
1749
1726
  end
@@ -1757,7 +1734,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
1757
1734
  self.pos = _save
1758
1735
  break
1759
1736
  end
1760
- @result = begin; create_item(:line_command, command, content, raw: text) ; end
1737
+ @result = begin; create_item(:line_command, c, content, raw: text) ; end
1761
1738
  _tmp = true
1762
1739
  unless _tmp
1763
1740
  self.pos = _save
@@ -1769,8 +1746,8 @@ class ArtiMark::Parser < KPeg::CompiledParser
1769
1746
  return _tmp
1770
1747
  end
1771
1748
 
1772
- # block = (items_list | line_command | explicit_block | paragraph_group | empty_line+)
1773
- def _block
1749
+ # line_block = (items_list | line_command)
1750
+ def _line_block
1774
1751
 
1775
1752
  _save = self.pos
1776
1753
  while true # choice
@@ -1780,33 +1757,60 @@ class ArtiMark::Parser < KPeg::CompiledParser
1780
1757
  _tmp = apply(:_line_command)
1781
1758
  break if _tmp
1782
1759
  self.pos = _save
1783
- _tmp = apply(:_explicit_block)
1784
- break if _tmp
1785
- self.pos = _save
1786
- _tmp = apply(:_paragraph_group)
1787
- break if _tmp
1788
- self.pos = _save
1760
+ break
1761
+ end # end choice
1762
+
1763
+ set_failed_rule :_line_block unless _tmp
1764
+ return _tmp
1765
+ end
1766
+
1767
+ # block = (line_block | explicit_block | paragraph_group):block empty_line* {block}
1768
+ def _block
1769
+
1770
+ _save = self.pos
1771
+ while true # sequence
1772
+
1789
1773
  _save1 = self.pos
1790
- _tmp = apply(:_empty_line)
1791
- if _tmp
1792
- while true
1793
- _tmp = apply(:_empty_line)
1794
- break unless _tmp
1795
- end
1796
- _tmp = true
1797
- else
1774
+ while true # choice
1775
+ _tmp = apply(:_line_block)
1776
+ break if _tmp
1777
+ self.pos = _save1
1778
+ _tmp = apply(:_explicit_block)
1779
+ break if _tmp
1780
+ self.pos = _save1
1781
+ _tmp = apply(:_paragraph_group)
1782
+ break if _tmp
1798
1783
  self.pos = _save1
1784
+ break
1785
+ end # end choice
1786
+
1787
+ block = @result
1788
+ unless _tmp
1789
+ self.pos = _save
1790
+ break
1791
+ end
1792
+ while true
1793
+ _tmp = apply(:_empty_line)
1794
+ break unless _tmp
1795
+ end
1796
+ _tmp = true
1797
+ unless _tmp
1798
+ self.pos = _save
1799
+ break
1800
+ end
1801
+ @result = begin; block; end
1802
+ _tmp = true
1803
+ unless _tmp
1804
+ self.pos = _save
1799
1805
  end
1800
- break if _tmp
1801
- self.pos = _save
1802
1806
  break
1803
- end # end choice
1807
+ end # end sequence
1804
1808
 
1805
1809
  set_failed_rule :_block unless _tmp
1806
1810
  return _tmp
1807
1811
  end
1808
1812
 
1809
- # block_delimiter = (blockhead | blockend | newpage)
1813
+ # block_delimiter = (blockhead | blockend)
1810
1814
  def _block_delimiter
1811
1815
 
1812
1816
  _save = self.pos
@@ -1817,9 +1821,6 @@ class ArtiMark::Parser < KPeg::CompiledParser
1817
1821
  _tmp = apply(:_blockend)
1818
1822
  break if _tmp
1819
1823
  self.pos = _save
1820
- _tmp = apply(:_newpage)
1821
- break if _tmp
1822
- self.pos = _save
1823
1824
  break
1824
1825
  end # end choice
1825
1826
 
@@ -1827,15 +1828,15 @@ class ArtiMark::Parser < KPeg::CompiledParser
1827
1828
  return _tmp
1828
1829
  end
1829
1830
 
1830
- # paragraph_delimiter = (block | block_delimiter)
1831
+ # paragraph_delimiter = (block_delimiter | line_block)
1831
1832
  def _paragraph_delimiter
1832
1833
 
1833
1834
  _save = self.pos
1834
1835
  while true # choice
1835
- _tmp = apply(:_block)
1836
+ _tmp = apply(:_block_delimiter)
1836
1837
  break if _tmp
1837
1838
  self.pos = _save
1838
- _tmp = apply(:_block_delimiter)
1839
+ _tmp = apply(:_line_block)
1839
1840
  break if _tmp
1840
1841
  self.pos = _save
1841
1842
  break
@@ -1845,13 +1846,51 @@ class ArtiMark::Parser < KPeg::CompiledParser
1845
1846
  return _tmp
1846
1847
  end
1847
1848
 
1848
- # char = < /[[:print:]]/ > { text }
1849
- def _char
1849
+ # stylesheets = < lh - "stylesheets:" !le charstring:s nl > { create_item(:stylesheets, {:stylesheets => s.split(',').map(&:strip)}, nil, raw:text) }
1850
+ def _stylesheets
1850
1851
 
1851
1852
  _save = self.pos
1852
1853
  while true # sequence
1853
1854
  _text_start = self.pos
1854
- _tmp = scan(/\A(?-mix:[[:print:]])/)
1855
+
1856
+ _save1 = self.pos
1857
+ while true # sequence
1858
+ _tmp = apply(:_lh)
1859
+ unless _tmp
1860
+ self.pos = _save1
1861
+ break
1862
+ end
1863
+ _tmp = apply(:__hyphen_)
1864
+ unless _tmp
1865
+ self.pos = _save1
1866
+ break
1867
+ end
1868
+ _tmp = match_string("stylesheets:")
1869
+ unless _tmp
1870
+ self.pos = _save1
1871
+ break
1872
+ end
1873
+ _save2 = self.pos
1874
+ _tmp = apply(:_le)
1875
+ _tmp = _tmp ? nil : true
1876
+ self.pos = _save2
1877
+ unless _tmp
1878
+ self.pos = _save1
1879
+ break
1880
+ end
1881
+ _tmp = apply(:_charstring)
1882
+ s = @result
1883
+ unless _tmp
1884
+ self.pos = _save1
1885
+ break
1886
+ end
1887
+ _tmp = apply(:_nl)
1888
+ unless _tmp
1889
+ self.pos = _save1
1890
+ end
1891
+ break
1892
+ end # end sequence
1893
+
1855
1894
  if _tmp
1856
1895
  text = get_text(_text_start)
1857
1896
  end
@@ -1859,7 +1898,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
1859
1898
  self.pos = _save
1860
1899
  break
1861
1900
  end
1862
- @result = begin; text ; end
1901
+ @result = begin; create_item(:stylesheets, {:stylesheets => s.split(',').map(&:strip)}, nil, raw:text) ; end
1863
1902
  _tmp = true
1864
1903
  unless _tmp
1865
1904
  self.pos = _save
@@ -1867,39 +1906,232 @@ class ArtiMark::Parser < KPeg::CompiledParser
1867
1906
  break
1868
1907
  end # end sequence
1869
1908
 
1870
- set_failed_rule :_char unless _tmp
1909
+ set_failed_rule :_stylesheets unless _tmp
1871
1910
  return _tmp
1872
1911
  end
1873
1912
 
1874
- # charstring = < char* > { text }
1875
- def _charstring
1913
+ # title = < lh - "title:" !le charstring:t nl > { create_item(:title, {:title => t }, nil, raw:text) }
1914
+ def _title
1876
1915
 
1877
1916
  _save = self.pos
1878
1917
  while true # sequence
1879
1918
  _text_start = self.pos
1880
- while true
1881
- _tmp = apply(:_char)
1882
- break unless _tmp
1883
- end
1884
- _tmp = true
1885
- if _tmp
1886
- text = get_text(_text_start)
1887
- end
1888
- unless _tmp
1889
- self.pos = _save
1890
- break
1891
- end
1892
- @result = begin; text ; end
1893
- _tmp = true
1894
- unless _tmp
1895
- self.pos = _save
1896
- end
1897
- break
1898
- end # end sequence
1899
-
1900
- set_failed_rule :_charstring unless _tmp
1901
- return _tmp
1902
- end
1919
+
1920
+ _save1 = self.pos
1921
+ while true # sequence
1922
+ _tmp = apply(:_lh)
1923
+ unless _tmp
1924
+ self.pos = _save1
1925
+ break
1926
+ end
1927
+ _tmp = apply(:__hyphen_)
1928
+ unless _tmp
1929
+ self.pos = _save1
1930
+ break
1931
+ end
1932
+ _tmp = match_string("title:")
1933
+ unless _tmp
1934
+ self.pos = _save1
1935
+ break
1936
+ end
1937
+ _save2 = self.pos
1938
+ _tmp = apply(:_le)
1939
+ _tmp = _tmp ? nil : true
1940
+ self.pos = _save2
1941
+ unless _tmp
1942
+ self.pos = _save1
1943
+ break
1944
+ end
1945
+ _tmp = apply(:_charstring)
1946
+ t = @result
1947
+ unless _tmp
1948
+ self.pos = _save1
1949
+ break
1950
+ end
1951
+ _tmp = apply(:_nl)
1952
+ unless _tmp
1953
+ self.pos = _save1
1954
+ end
1955
+ break
1956
+ end # end sequence
1957
+
1958
+ if _tmp
1959
+ text = get_text(_text_start)
1960
+ end
1961
+ unless _tmp
1962
+ self.pos = _save
1963
+ break
1964
+ end
1965
+ @result = begin; create_item(:title, {:title => t }, nil, raw:text) ; end
1966
+ _tmp = true
1967
+ unless _tmp
1968
+ self.pos = _save
1969
+ end
1970
+ break
1971
+ end # end sequence
1972
+
1973
+ set_failed_rule :_title unless _tmp
1974
+ return _tmp
1975
+ end
1976
+
1977
+ # lang = < lh - "lang:" !le charstring:l nl > { create_item(:lang, {:lang => l }, nil, raw:text) }
1978
+ def _lang
1979
+
1980
+ _save = self.pos
1981
+ while true # sequence
1982
+ _text_start = self.pos
1983
+
1984
+ _save1 = self.pos
1985
+ while true # sequence
1986
+ _tmp = apply(:_lh)
1987
+ unless _tmp
1988
+ self.pos = _save1
1989
+ break
1990
+ end
1991
+ _tmp = apply(:__hyphen_)
1992
+ unless _tmp
1993
+ self.pos = _save1
1994
+ break
1995
+ end
1996
+ _tmp = match_string("lang:")
1997
+ unless _tmp
1998
+ self.pos = _save1
1999
+ break
2000
+ end
2001
+ _save2 = self.pos
2002
+ _tmp = apply(:_le)
2003
+ _tmp = _tmp ? nil : true
2004
+ self.pos = _save2
2005
+ unless _tmp
2006
+ self.pos = _save1
2007
+ break
2008
+ end
2009
+ _tmp = apply(:_charstring)
2010
+ l = @result
2011
+ unless _tmp
2012
+ self.pos = _save1
2013
+ break
2014
+ end
2015
+ _tmp = apply(:_nl)
2016
+ unless _tmp
2017
+ self.pos = _save1
2018
+ end
2019
+ break
2020
+ end # end sequence
2021
+
2022
+ if _tmp
2023
+ text = get_text(_text_start)
2024
+ end
2025
+ unless _tmp
2026
+ self.pos = _save
2027
+ break
2028
+ end
2029
+ @result = begin; create_item(:lang, {:lang => l }, nil, raw:text) ; end
2030
+ _tmp = true
2031
+ unless _tmp
2032
+ self.pos = _save
2033
+ end
2034
+ break
2035
+ end # end sequence
2036
+
2037
+ set_failed_rule :_lang unless _tmp
2038
+ return _tmp
2039
+ end
2040
+
2041
+ # header = (stylesheets | title | lang) empty_line*
2042
+ def _header
2043
+
2044
+ _save = self.pos
2045
+ while true # sequence
2046
+
2047
+ _save1 = self.pos
2048
+ while true # choice
2049
+ _tmp = apply(:_stylesheets)
2050
+ break if _tmp
2051
+ self.pos = _save1
2052
+ _tmp = apply(:_title)
2053
+ break if _tmp
2054
+ self.pos = _save1
2055
+ _tmp = apply(:_lang)
2056
+ break if _tmp
2057
+ self.pos = _save1
2058
+ break
2059
+ end # end choice
2060
+
2061
+ unless _tmp
2062
+ self.pos = _save
2063
+ break
2064
+ end
2065
+ while true
2066
+ _tmp = apply(:_empty_line)
2067
+ break unless _tmp
2068
+ end
2069
+ _tmp = true
2070
+ unless _tmp
2071
+ self.pos = _save
2072
+ end
2073
+ break
2074
+ end # end sequence
2075
+
2076
+ set_failed_rule :_header unless _tmp
2077
+ return _tmp
2078
+ end
2079
+
2080
+ # char = < /[[:print:]]/ > { text }
2081
+ def _char
2082
+
2083
+ _save = self.pos
2084
+ while true # sequence
2085
+ _text_start = self.pos
2086
+ _tmp = scan(/\A(?-mix:[[:print:]])/)
2087
+ if _tmp
2088
+ text = get_text(_text_start)
2089
+ end
2090
+ unless _tmp
2091
+ self.pos = _save
2092
+ break
2093
+ end
2094
+ @result = begin; text ; end
2095
+ _tmp = true
2096
+ unless _tmp
2097
+ self.pos = _save
2098
+ end
2099
+ break
2100
+ end # end sequence
2101
+
2102
+ set_failed_rule :_char unless _tmp
2103
+ return _tmp
2104
+ end
2105
+
2106
+ # charstring = < char* > { text }
2107
+ def _charstring
2108
+
2109
+ _save = self.pos
2110
+ while true # sequence
2111
+ _text_start = self.pos
2112
+ while true
2113
+ _tmp = apply(:_char)
2114
+ break unless _tmp
2115
+ end
2116
+ _tmp = true
2117
+ if _tmp
2118
+ text = get_text(_text_start)
2119
+ end
2120
+ unless _tmp
2121
+ self.pos = _save
2122
+ break
2123
+ end
2124
+ @result = begin; text ; end
2125
+ _tmp = true
2126
+ unless _tmp
2127
+ self.pos = _save
2128
+ end
2129
+ break
2130
+ end # end sequence
2131
+
2132
+ set_failed_rule :_charstring unless _tmp
2133
+ return _tmp
2134
+ end
1903
2135
 
1904
2136
  # char_except = char:c &{ c != e }
1905
2137
  def _char_except(e)
@@ -2141,7 +2373,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
2141
2373
  return _tmp
2142
2374
  end
2143
2375
 
2144
- # documentline = lh documentcontent:content /$/ { content }
2376
+ # documentline = lh documentcontent:content le { content }
2145
2377
  def _documentline
2146
2378
 
2147
2379
  _save = self.pos
@@ -2157,7 +2389,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
2157
2389
  self.pos = _save
2158
2390
  break
2159
2391
  end
2160
- _tmp = scan(/\A(?-mix:$)/)
2392
+ _tmp = apply(:_le)
2161
2393
  unless _tmp
2162
2394
  self.pos = _save
2163
2395
  break
@@ -2174,247 +2406,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
2174
2406
  return _tmp
2175
2407
  end
2176
2408
 
2177
- # stylesheets = < lh - "stylesheets:" (!le charstring):stylesheets le > { create_item(:stylesheets, {:stylesheets => stylesheets.split(',').map(&:strip)}, nil, raw:text) }
2178
- def _stylesheets
2179
-
2180
- _save = self.pos
2181
- while true # sequence
2182
- _text_start = self.pos
2183
-
2184
- _save1 = self.pos
2185
- while true # sequence
2186
- _tmp = apply(:_lh)
2187
- unless _tmp
2188
- self.pos = _save1
2189
- break
2190
- end
2191
- _tmp = apply(:__hyphen_)
2192
- unless _tmp
2193
- self.pos = _save1
2194
- break
2195
- end
2196
- _tmp = match_string("stylesheets:")
2197
- unless _tmp
2198
- self.pos = _save1
2199
- break
2200
- end
2201
-
2202
- _save2 = self.pos
2203
- while true # sequence
2204
- _save3 = self.pos
2205
- _tmp = apply(:_le)
2206
- _tmp = _tmp ? nil : true
2207
- self.pos = _save3
2208
- unless _tmp
2209
- self.pos = _save2
2210
- break
2211
- end
2212
- _tmp = apply(:_charstring)
2213
- unless _tmp
2214
- self.pos = _save2
2215
- end
2216
- break
2217
- end # end sequence
2218
-
2219
- stylesheets = @result
2220
- unless _tmp
2221
- self.pos = _save1
2222
- break
2223
- end
2224
- _tmp = apply(:_le)
2225
- unless _tmp
2226
- self.pos = _save1
2227
- end
2228
- break
2229
- end # end sequence
2230
-
2231
- if _tmp
2232
- text = get_text(_text_start)
2233
- end
2234
- unless _tmp
2235
- self.pos = _save
2236
- break
2237
- end
2238
- @result = begin; create_item(:stylesheets, {:stylesheets => stylesheets.split(',').map(&:strip)}, nil, raw:text) ; end
2239
- _tmp = true
2240
- unless _tmp
2241
- self.pos = _save
2242
- end
2243
- break
2244
- end # end sequence
2245
-
2246
- set_failed_rule :_stylesheets unless _tmp
2247
- return _tmp
2248
- end
2249
-
2250
- # title = < lh - "title:" (!le charstring):title le > { create_item(:title, {:title => title }, nil, raw:text) }
2251
- def _title
2252
-
2253
- _save = self.pos
2254
- while true # sequence
2255
- _text_start = self.pos
2256
-
2257
- _save1 = self.pos
2258
- while true # sequence
2259
- _tmp = apply(:_lh)
2260
- unless _tmp
2261
- self.pos = _save1
2262
- break
2263
- end
2264
- _tmp = apply(:__hyphen_)
2265
- unless _tmp
2266
- self.pos = _save1
2267
- break
2268
- end
2269
- _tmp = match_string("title:")
2270
- unless _tmp
2271
- self.pos = _save1
2272
- break
2273
- end
2274
-
2275
- _save2 = self.pos
2276
- while true # sequence
2277
- _save3 = self.pos
2278
- _tmp = apply(:_le)
2279
- _tmp = _tmp ? nil : true
2280
- self.pos = _save3
2281
- unless _tmp
2282
- self.pos = _save2
2283
- break
2284
- end
2285
- _tmp = apply(:_charstring)
2286
- unless _tmp
2287
- self.pos = _save2
2288
- end
2289
- break
2290
- end # end sequence
2291
-
2292
- title = @result
2293
- unless _tmp
2294
- self.pos = _save1
2295
- break
2296
- end
2297
- _tmp = apply(:_le)
2298
- unless _tmp
2299
- self.pos = _save1
2300
- end
2301
- break
2302
- end # end sequence
2303
-
2304
- if _tmp
2305
- text = get_text(_text_start)
2306
- end
2307
- unless _tmp
2308
- self.pos = _save
2309
- break
2310
- end
2311
- @result = begin; create_item(:title, {:title => title }, nil, raw:text) ; end
2312
- _tmp = true
2313
- unless _tmp
2314
- self.pos = _save
2315
- end
2316
- break
2317
- end # end sequence
2318
-
2319
- set_failed_rule :_title unless _tmp
2320
- return _tmp
2321
- end
2322
-
2323
- # lang = < lh - "lang:" (!le charstring):lang le > { create_item(:lang, {:lang => lang }, nil, raw:text) }
2324
- def _lang
2325
-
2326
- _save = self.pos
2327
- while true # sequence
2328
- _text_start = self.pos
2329
-
2330
- _save1 = self.pos
2331
- while true # sequence
2332
- _tmp = apply(:_lh)
2333
- unless _tmp
2334
- self.pos = _save1
2335
- break
2336
- end
2337
- _tmp = apply(:__hyphen_)
2338
- unless _tmp
2339
- self.pos = _save1
2340
- break
2341
- end
2342
- _tmp = match_string("lang:")
2343
- unless _tmp
2344
- self.pos = _save1
2345
- break
2346
- end
2347
-
2348
- _save2 = self.pos
2349
- while true # sequence
2350
- _save3 = self.pos
2351
- _tmp = apply(:_le)
2352
- _tmp = _tmp ? nil : true
2353
- self.pos = _save3
2354
- unless _tmp
2355
- self.pos = _save2
2356
- break
2357
- end
2358
- _tmp = apply(:_charstring)
2359
- unless _tmp
2360
- self.pos = _save2
2361
- end
2362
- break
2363
- end # end sequence
2364
-
2365
- lang = @result
2366
- unless _tmp
2367
- self.pos = _save1
2368
- break
2369
- end
2370
- _tmp = apply(:_le)
2371
- unless _tmp
2372
- self.pos = _save1
2373
- end
2374
- break
2375
- end # end sequence
2376
-
2377
- if _tmp
2378
- text = get_text(_text_start)
2379
- end
2380
- unless _tmp
2381
- self.pos = _save
2382
- break
2383
- end
2384
- @result = begin; create_item(:lang, {:lang => lang }, nil, raw:text) ; end
2385
- _tmp = true
2386
- unless _tmp
2387
- self.pos = _save
2388
- end
2389
- break
2390
- end # end sequence
2391
-
2392
- set_failed_rule :_lang unless _tmp
2393
- return _tmp
2394
- end
2395
-
2396
- # header = (stylesheets | title | lang)
2397
- def _header
2398
-
2399
- _save = self.pos
2400
- while true # choice
2401
- _tmp = apply(:_stylesheets)
2402
- break if _tmp
2403
- self.pos = _save
2404
- _tmp = apply(:_title)
2405
- break if _tmp
2406
- self.pos = _save
2407
- _tmp = apply(:_lang)
2408
- break if _tmp
2409
- self.pos = _save
2410
- break
2411
- end # end choice
2412
-
2413
- set_failed_rule :_header unless _tmp
2414
- return _tmp
2415
- end
2416
-
2417
- # root = header*:headers block*:blocks eof_comment? eof { headers + blocks }
2409
+ # root = header*:headers - block*:blocks - eof_comment? eof { headers.concat blocks.select{ |x| !x.nil?} }
2418
2410
  def _root
2419
2411
 
2420
2412
  _save = self.pos
@@ -2432,6 +2424,11 @@ class ArtiMark::Parser < KPeg::CompiledParser
2432
2424
  self.pos = _save
2433
2425
  break
2434
2426
  end
2427
+ _tmp = apply(:__hyphen_)
2428
+ unless _tmp
2429
+ self.pos = _save
2430
+ break
2431
+ end
2435
2432
  _ary = []
2436
2433
  while true
2437
2434
  _tmp = apply(:_block)
@@ -2445,6 +2442,11 @@ class ArtiMark::Parser < KPeg::CompiledParser
2445
2442
  self.pos = _save
2446
2443
  break
2447
2444
  end
2445
+ _tmp = apply(:__hyphen_)
2446
+ unless _tmp
2447
+ self.pos = _save
2448
+ break
2449
+ end
2448
2450
  _save3 = self.pos
2449
2451
  _tmp = apply(:_eof_comment)
2450
2452
  unless _tmp
@@ -2460,7 +2462,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
2460
2462
  self.pos = _save
2461
2463
  break
2462
2464
  end
2463
- @result = begin; headers + blocks ; end
2465
+ @result = begin; headers.concat blocks.select{ |x| !x.nil?} ; end
2464
2466
  _tmp = true
2465
2467
  unless _tmp
2466
2468
  self.pos = _save
@@ -2476,12 +2478,12 @@ class ArtiMark::Parser < KPeg::CompiledParser
2476
2478
  Rules[:_eof] = rule_info("eof", "!.")
2477
2479
  Rules[:_space] = rule_info("space", "(\" \" | \"\\\\t\")")
2478
2480
  Rules[:_eof_comment] = rule_info("eof_comment", "lh space* \"\#\" (!eof .)*")
2479
- Rules[:_comment] = rule_info("comment", "lh space* \"\#\" (!nl .)* nl")
2481
+ Rules[:_comment] = rule_info("comment", "lh space* \"\#\" (!nl .)* nl empty_line*")
2480
2482
  Rules[:__hyphen_] = rule_info("-", "(space | comment)*")
2481
2483
  Rules[:_empty_line] = rule_info("empty_line", "lh - nl")
2482
2484
  Rules[:_nl] = rule_info("nl", "/\\r?\\n/")
2483
2485
  Rules[:_lh] = rule_info("lh", "/^/")
2484
- Rules[:_le] = rule_info("le", "(nl | /$/)")
2486
+ Rules[:_le] = rule_info("le", "(nl | eof)")
2485
2487
  Rules[:_word] = rule_info("word", "< /[\\w0-9]/ (\"-\" | /[\\w0-9]/)* > { text }")
2486
2488
  Rules[:_num] = rule_info("num", "< [0-9]+ > { text.to_i }")
2487
2489
  Rules[:_classname] = rule_info("classname", "\".\" word:classname { classname }")
@@ -2491,21 +2493,20 @@ class ArtiMark::Parser < KPeg::CompiledParser
2491
2493
  Rules[:_commandname] = rule_info("commandname", "word:name idnames?:idnames classnames?:classes { {:name => name, :ids => idnames, :classes => classes} }")
2492
2494
  Rules[:_parameter] = rule_info("parameter", "< (/[^,)]/* | \"\\\"\" /[^\"]/* \"\\\"\" | \"'\" /[^']/* \"'\") > { text }")
2493
2495
  Rules[:_parameters] = rule_info("parameters", "< parameter (\",\" parameter)* > { text }")
2494
- Rules[:_command] = rule_info("command", "commandname:commandname (\"(\" - parameters:arg - \")\")? { arg ||= ''; commandname.merge({ :args => arg.split(',') }) }")
2495
- Rules[:_implicit_paragraph] = rule_info("implicit_paragraph", "< (!paragraph_delimiter - documentline -):paragraph > { create_item(:paragraph, nil, paragraph, raw: text) }")
2496
+ Rules[:_command] = rule_info("command", "commandname:cn (\"(\" - parameters:arg - \")\")? { arg ||= ''; cn.merge({ :args => arg.split(',') }) }")
2497
+ Rules[:_implicit_paragraph] = rule_info("implicit_paragraph", "< !paragraph_delimiter - documentline:p - > { create_item(:paragraph, nil, p, raw: text) }")
2496
2498
  Rules[:_paragraph] = rule_info("paragraph", "(explicit_paragraph | implicit_paragraph)")
2497
- Rules[:_paragraph_group] = rule_info("paragraph_group", "< (paragraph nl | paragraph)+:paragraphs empty_line* > { create_item(:paragraph_group, nil, paragraphs, raw: text) }")
2498
- Rules[:_blockhead] = rule_info("blockhead", "lh - command:command - \"{\" - le { command }")
2499
- Rules[:_blockend] = rule_info("blockend", "lh - \"}\" - le")
2499
+ Rules[:_paragraph_group] = rule_info("paragraph_group", "< paragraph+:p empty_line* > { create_item(:paragraph_group, nil, p, raw: text) }")
2500
+ Rules[:_blockhead] = rule_info("blockhead", "lh - command:command - \"{\" - nl empty_line* { command }")
2501
+ Rules[:_blockend] = rule_info("blockend", "lh - \"}\" - le empty_line*")
2500
2502
  Rules[:_blockbody] = rule_info("blockbody", "(!blockend block)+:body { body }")
2501
- Rules[:_explicit_block] = rule_info("explicit_block", "< blockhead:head blockbody:body blockend > { create_item(:block, head, body, raw: text) }")
2503
+ Rules[:_explicit_block] = rule_info("explicit_block", "< blockhead:head - blockbody:body - blockend > { create_item(:block, head, body, raw: text) }")
2502
2504
  Rules[:_inline] = rule_info("inline", "(img_inline | common_inline)")
2503
- Rules[:_common_inline] = rule_info("common_inline", "< \"[\" command:command \"{\" documentcontent_except('}'):content \"}\" \"]\" > { create_item(:inline, command, content, raw: text) }")
2504
- Rules[:_img_command] = rule_info("img_command", "command:command &{ command[:name] == 'img' && command[:args].size == 2}")
2505
- Rules[:_img_inline] = rule_info("img_inline", "< \"[\" img_command:command \"]\" > { create_item(:inline, command, nil, raw: text) }")
2506
- Rules[:_newpage] = rule_info("newpage", "line_command:item &{ item[:name] == 'newpage' }")
2507
- Rules[:_explicit_paragraph_command] = rule_info("explicit_paragraph_command", "command:command &{ command[:name] == 'p' }")
2508
- Rules[:_explicit_paragraph] = rule_info("explicit_paragraph", "< lh - explicit_paragraph_command:command \":\" documentcontent?:content le > { create_item(:paragraph, command, content, raw:text) }")
2505
+ Rules[:_common_inline] = rule_info("common_inline", "< \"[\" command:c \"{\" documentcontent_except('}'):content \"}\" \"]\" > { create_item(:inline, c, content, raw: text) }")
2506
+ Rules[:_img_command] = rule_info("img_command", "command:c &{ c[:name] == 'img' && c[:args].size == 2}")
2507
+ Rules[:_img_inline] = rule_info("img_inline", "< \"[\" img_command:c \"]\" > { create_item(:inline, c, nil, raw: text) }")
2508
+ Rules[:_explicit_paragraph_command] = rule_info("explicit_paragraph_command", "command:c &{ c[:name] == 'p' }")
2509
+ Rules[:_explicit_paragraph] = rule_info("explicit_paragraph", "< lh - explicit_paragraph_command:c \":\" documentcontent?:content le empty_line* > { create_item(:paragraph, c, content, raw:text) }")
2509
2510
  Rules[:_unordered_list] = rule_info("unordered_list", "< unordered_item+:items > { create_item(:ul, nil, items, raw: text) }")
2510
2511
  Rules[:_unordered_item] = rule_info("unordered_item", "< lh \"*:\" documentcontent:content le > { create_item(:li, nil, content, raw: text) }")
2511
2512
  Rules[:_ordered_list] = rule_info("ordered_list", "< ordered_item+:items > { create_item(:ol, nil, items, raw: text) }")
@@ -2513,21 +2514,22 @@ class ArtiMark::Parser < KPeg::CompiledParser
2513
2514
  Rules[:_definition_list] = rule_info("definition_list", "< definition_item+:items > { create_item(:dl, nil, items, raw: text) }")
2514
2515
  Rules[:_definition_item] = rule_info("definition_item", "< lh \";:\" - documentcontent_except(':'):term \":\" - documentcontent:definition le > { create_item(:dtdd, {:args => [term, definition]}, nil, raw: text) }")
2515
2516
  Rules[:_items_list] = rule_info("items_list", "(unordered_list | ordered_list | definition_list)")
2516
- Rules[:_line_command] = rule_info("line_command", "< lh - (!explicit_paragraph_command command):command \":\" documentcontent?:content le > { create_item(:line_command, command, content, raw: text) }")
2517
- Rules[:_block] = rule_info("block", "(items_list | line_command | explicit_block | paragraph_group | empty_line+)")
2518
- Rules[:_block_delimiter] = rule_info("block_delimiter", "(blockhead | blockend | newpage)")
2519
- Rules[:_paragraph_delimiter] = rule_info("paragraph_delimiter", "(block | block_delimiter)")
2517
+ Rules[:_line_command] = rule_info("line_command", "< lh - !explicit_paragraph_command command:c \":\" documentcontent?:content - le empty_line* > { create_item(:line_command, c, content, raw: text) }")
2518
+ Rules[:_line_block] = rule_info("line_block", "(items_list | line_command)")
2519
+ Rules[:_block] = rule_info("block", "(line_block | explicit_block | paragraph_group):block empty_line* {block}")
2520
+ Rules[:_block_delimiter] = rule_info("block_delimiter", "(blockhead | blockend)")
2521
+ Rules[:_paragraph_delimiter] = rule_info("paragraph_delimiter", "(block_delimiter | line_block)")
2522
+ Rules[:_stylesheets] = rule_info("stylesheets", "< lh - \"stylesheets:\" !le charstring:s nl > { create_item(:stylesheets, {:stylesheets => s.split(',').map(&:strip)}, nil, raw:text) }")
2523
+ Rules[:_title] = rule_info("title", "< lh - \"title:\" !le charstring:t nl > { create_item(:title, {:title => t }, nil, raw:text) }")
2524
+ Rules[:_lang] = rule_info("lang", "< lh - \"lang:\" !le charstring:l nl > { create_item(:lang, {:lang => l }, nil, raw:text) }")
2525
+ Rules[:_header] = rule_info("header", "(stylesheets | title | lang) empty_line*")
2520
2526
  Rules[:_char] = rule_info("char", "< /[[:print:]]/ > { text }")
2521
2527
  Rules[:_charstring] = rule_info("charstring", "< char* > { text }")
2522
2528
  Rules[:_char_except] = rule_info("char_except", "char:c &{ c != e }")
2523
2529
  Rules[:_charstring_except] = rule_info("charstring_except", "< char_except(e)* > { text }")
2524
2530
  Rules[:_documentcontent_except] = rule_info("documentcontent_except", "(inline | !inline char_except(e))+:content {parse_text(content)}")
2525
2531
  Rules[:_documentcontent] = rule_info("documentcontent", "(inline | !inline char)+:content {parse_text(content)}")
2526
- Rules[:_documentline] = rule_info("documentline", "lh documentcontent:content /$/ { content }")
2527
- Rules[:_stylesheets] = rule_info("stylesheets", "< lh - \"stylesheets:\" (!le charstring):stylesheets le > { create_item(:stylesheets, {:stylesheets => stylesheets.split(',').map(&:strip)}, nil, raw:text) }")
2528
- Rules[:_title] = rule_info("title", "< lh - \"title:\" (!le charstring):title le > { create_item(:title, {:title => title }, nil, raw:text) }")
2529
- Rules[:_lang] = rule_info("lang", "< lh - \"lang:\" (!le charstring):lang le > { create_item(:lang, {:lang => lang }, nil, raw:text) }")
2530
- Rules[:_header] = rule_info("header", "(stylesheets | title | lang)")
2531
- Rules[:_root] = rule_info("root", "header*:headers block*:blocks eof_comment? eof { headers + blocks }")
2532
+ Rules[:_documentline] = rule_info("documentline", "lh documentcontent:content le { content }")
2533
+ Rules[:_root] = rule_info("root", "header*:headers - block*:blocks - eof_comment? eof { headers.concat blocks.select{ |x| !x.nil?} }")
2532
2534
  # :startdoc:
2533
2535
  end