arti_mark 0.1.beta3 → 0.1.beta5
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 +4 -4
- data/CHANGELOG.md +4 -4
- data/README.md +108 -7
- data/lib/arti_mark.rb +30 -35
- data/lib/arti_mark/html/abstract_item_writer.rb +14 -0
- data/lib/arti_mark/html/context.rb +100 -79
- data/lib/arti_mark/html/generator.rb +51 -34
- data/lib/arti_mark/html/header_writer.rb +3 -0
- data/lib/arti_mark/html/pages.rb +56 -0
- data/lib/arti_mark/html/paragraph_writer.rb +52 -0
- data/lib/arti_mark/parser.kpeg +34 -6
- data/lib/arti_mark/parser.kpeg.rb +1015 -128
- data/lib/arti_mark/version.rb +1 -1
- data/spec/arti_mark_spec.rb +338 -82
- data/spec/created_files/.gitignore +1 -0
- data/spec/fixture/test_src_ja.arti +3 -1
- metadata +7 -18
- data/lib/arti_mark/article_parser.rb +0 -12
- data/lib/arti_mark/base_parser.rb +0 -26
- data/lib/arti_mark/block_image_parser.rb +0 -27
- data/lib/arti_mark/command_lexer.rb +0 -83
- data/lib/arti_mark/common_block_parser.rb +0 -36
- data/lib/arti_mark/definition_list_parser.rb +0 -23
- data/lib/arti_mark/div_parser.rb +0 -12
- data/lib/arti_mark/head_parser.rb +0 -20
- data/lib/arti_mark/html/result.rb +0 -27
- data/lib/arti_mark/list_parser.rb +0 -27
- data/lib/arti_mark/ordered_list_parser.rb +0 -14
- data/lib/arti_mark/paragraph_parser.rb +0 -30
- data/lib/arti_mark/section_parser.rb +0 -12
- data/lib/arti_mark/syntax.rb +0 -147
- data/lib/arti_mark/universal_block_parser.rb +0 -10
- data/lib/arti_mark/unordered_list_parser.rb +0 -14
@@ -1,10 +1,12 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
require 'arti_mark/html/util'
|
3
|
-
require 'arti_mark/html/
|
3
|
+
require 'arti_mark/html/pages'
|
4
4
|
require 'arti_mark/html/context'
|
5
5
|
require 'arti_mark/html/tag_writer'
|
6
6
|
require 'arti_mark/html/header_writer'
|
7
|
+
require 'arti_mark/html/paragraph_writer'
|
7
8
|
require 'arti_mark/html/writer_selector'
|
9
|
+
require 'arti_mark/html/abstract_item_writer'
|
8
10
|
module ArtiMark
|
9
11
|
module Html
|
10
12
|
class Generator
|
@@ -13,6 +15,7 @@ module ArtiMark
|
|
13
15
|
def initialize(param = {})
|
14
16
|
@context = Context.new(param)
|
15
17
|
article_writer = TagWriter.create('article', self)
|
18
|
+
section_writer = TagWriter.create('section', self)
|
16
19
|
link_writer = TagWriter.create('a', self, trailer: '',
|
17
20
|
item_preprocessor: proc do |item|
|
18
21
|
(item[:attrs] ||= {}).merge!({:href => [ item[:args][0] ]})
|
@@ -20,31 +23,23 @@ module ArtiMark
|
|
20
23
|
end)
|
21
24
|
|
22
25
|
header_writer = HeaderWriter.new self
|
23
|
-
|
26
|
+
paragraph_writer = ParagraphWriter.new self
|
27
|
+
abstract_item_writer = AbstractItemWriter.new self
|
24
28
|
@writers = {
|
25
|
-
:
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
item
|
30
|
-
end
|
31
|
-
),
|
32
|
-
:paragraph_group =>
|
33
|
-
TagWriter.create("div", self,
|
34
|
-
item_preprocessor: proc do |item|
|
35
|
-
add_class item, 'pgroup'
|
36
|
-
item[:no_tag] = true unless @context.enable_pgroup
|
37
|
-
item
|
38
|
-
end
|
39
|
-
),
|
40
|
-
|
29
|
+
:page => abstract_item_writer,
|
30
|
+
:headers => abstract_item_writer,
|
31
|
+
:paragraph => paragraph_writer,
|
32
|
+
:paragraph_group => paragraph_writer,
|
41
33
|
:block =>
|
42
34
|
WriterSelector.new(self,
|
43
35
|
{
|
44
36
|
'd' => TagWriter.create('div', self),
|
45
37
|
'art' => article_writer,
|
46
38
|
'arti' => article_writer,
|
47
|
-
'article' => article_writer
|
39
|
+
'article' => article_writer,
|
40
|
+
'sec' => section_writer,
|
41
|
+
'sect' => section_writer,
|
42
|
+
'section' => section_writer,
|
48
43
|
}),
|
49
44
|
:line_command =>
|
50
45
|
WriterSelector.new(self,
|
@@ -69,21 +64,6 @@ module ArtiMark
|
|
69
64
|
:done
|
70
65
|
end
|
71
66
|
),
|
72
|
-
'newpage' =>
|
73
|
-
TagWriter.create('div', self,
|
74
|
-
item_preprocessor: proc do |item|
|
75
|
-
item[:no_tag] = true
|
76
|
-
item
|
77
|
-
end,
|
78
|
-
write_body_preprocessor: proc do |item|
|
79
|
-
title = nil
|
80
|
-
if item[:args].size > 0 && item[:args][0].size > 0
|
81
|
-
title = escape_html item[:args].first
|
82
|
-
end
|
83
|
-
@context.start_html(title)
|
84
|
-
:done
|
85
|
-
end
|
86
|
-
),
|
87
67
|
|
88
68
|
}),
|
89
69
|
:inline =>
|
@@ -128,10 +108,47 @@ module ArtiMark
|
|
128
108
|
output "<dd>"; write_array item[:args][1]; output "</dd>"
|
129
109
|
:done
|
130
110
|
end),
|
111
|
+
:newpage =>
|
112
|
+
TagWriter.create('div', self,
|
113
|
+
item_preprocessor: proc do |item|
|
114
|
+
item[:no_tag] = true
|
115
|
+
item
|
116
|
+
end,
|
117
|
+
write_body_preprocessor: proc do |item|
|
118
|
+
title = nil
|
119
|
+
if item[:args].size > 0 && item[:args][0].size > 0
|
120
|
+
title = escape_html item[:args].first
|
121
|
+
end
|
122
|
+
@context.title = title unless title.nil?
|
123
|
+
@context.end_html
|
124
|
+
:done
|
125
|
+
end
|
126
|
+
),
|
127
|
+
#headed-section
|
128
|
+
:h_section =>
|
129
|
+
TagWriter.create('section', self, write_body_preprocessor: proc do |item|
|
130
|
+
output "<h#{item[:level]}>#{item[:heading].strip}</h#{item[:level]}>\n"
|
131
|
+
:continue
|
132
|
+
end),
|
131
133
|
# headers
|
132
134
|
:stylesheets => header_writer,
|
133
135
|
:title => header_writer,
|
134
136
|
:lang => header_writer,
|
137
|
+
:paragraph_style => header_writer,
|
138
|
+
# pre-formatted
|
139
|
+
:preformatted =>
|
140
|
+
TagWriter.create('pre', self,write_body_preprocessor: proc do |item|
|
141
|
+
output "<code>" if item[:name] == 'precode'
|
142
|
+
output item[:children].join "\n"
|
143
|
+
output "</code>" if item[:name] == 'precode'
|
144
|
+
:done
|
145
|
+
end),
|
146
|
+
#break
|
147
|
+
:br =>
|
148
|
+
TagWriter.create('br', self, item_preprocessor: proc do |item|
|
149
|
+
item[:no_body] = true
|
150
|
+
item
|
151
|
+
end),
|
135
152
|
}
|
136
153
|
end
|
137
154
|
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'securerandom'
|
2
|
+
module ArtiMark
|
3
|
+
module Html
|
4
|
+
class Context
|
5
|
+
class Pages
|
6
|
+
attr_reader :created_files
|
7
|
+
def initialize(filename_base = nil, sequence_format='%05d')
|
8
|
+
@filename_base = filename_base || "noramark_#{SecureRandom.uuid}"
|
9
|
+
@sequence_format = sequence_format || '%05d'
|
10
|
+
@result = []
|
11
|
+
end
|
12
|
+
|
13
|
+
def last
|
14
|
+
@result.last[:content]
|
15
|
+
end
|
16
|
+
|
17
|
+
def size
|
18
|
+
@result.size
|
19
|
+
end
|
20
|
+
|
21
|
+
def <<(page)
|
22
|
+
seq = @result.size + 1
|
23
|
+
@result << { content: page, filename: "#{@filename_base}_#{@sequence_format%(seq)}.xhtml" }
|
24
|
+
end
|
25
|
+
|
26
|
+
def [](num)
|
27
|
+
page = @result[num]
|
28
|
+
page.nil? ? nil : page[:content]
|
29
|
+
end
|
30
|
+
|
31
|
+
def pages
|
32
|
+
@result
|
33
|
+
end
|
34
|
+
|
35
|
+
def write_as_files(directory: nil)
|
36
|
+
dir = directory || Dir.pwd
|
37
|
+
Dir.chdir(dir) do
|
38
|
+
@result.each do
|
39
|
+
|page|
|
40
|
+
File.open(page[:filename], 'w+') do
|
41
|
+
|file|
|
42
|
+
file << page[:content]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
def write_as_single_file(filename)
|
48
|
+
File.open(filename, 'w+') {
|
49
|
+
|file|
|
50
|
+
file << @result[0][:content]
|
51
|
+
}
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
module ArtiMark
|
3
|
+
module Html
|
4
|
+
class ParagraphWriter
|
5
|
+
def initialize(generator)
|
6
|
+
@generator = generator
|
7
|
+
@context = generator.context
|
8
|
+
@writer_set = { use_paragraph_group: {
|
9
|
+
:paragraph =>
|
10
|
+
TagWriter.create('p', @generator, chop_last_space: true,
|
11
|
+
item_preprocessor: proc do |item|
|
12
|
+
add_class(item, 'noindent') if item[:children][0] =~/^(「|『|()/ # TODO: should be plaggable}
|
13
|
+
item
|
14
|
+
end
|
15
|
+
),
|
16
|
+
:paragraph_group =>
|
17
|
+
TagWriter.create("div", @generator,
|
18
|
+
item_preprocessor: proc do |item|
|
19
|
+
add_class item, 'pgroup'
|
20
|
+
item[:no_tag] = true unless @context.enable_pgroup
|
21
|
+
item
|
22
|
+
end
|
23
|
+
)
|
24
|
+
},
|
25
|
+
default: {
|
26
|
+
:paragraph =>
|
27
|
+
TagWriter.create(nil, @generator, chop_last_space: true,
|
28
|
+
item_preprocessor: proc do |item|
|
29
|
+
item[:no_tag] = true
|
30
|
+
item
|
31
|
+
end),
|
32
|
+
:paragraph_group =>
|
33
|
+
TagWriter.create("p", @generator,
|
34
|
+
item_preprocessor: proc do |item|
|
35
|
+
item[:children] = item[:children].inject([]) do |memo, item|
|
36
|
+
memo << { :type => :br, :args => [] } if !memo.last.nil? && memo.last[:type] == :paragraph && item[:type] == :paragraph
|
37
|
+
memo << item
|
38
|
+
end
|
39
|
+
item
|
40
|
+
end
|
41
|
+
)
|
42
|
+
}
|
43
|
+
}
|
44
|
+
end
|
45
|
+
def write(item)
|
46
|
+
writer_set = @writer_set[@context.paragraph_style]
|
47
|
+
writer_set = @writer_set['default'] if writer_set.nil?
|
48
|
+
writer_set[item[:type]].write(item)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/lib/arti_mark/parser.kpeg
CHANGED
@@ -38,6 +38,12 @@ blockend = lh - '}' - le empty_line*
|
|
38
38
|
blockbody = (!blockend block)+:body { body }
|
39
39
|
explicit_block = < blockhead:head - blockbody:body - blockend > { create_item(:block, head, body, raw: text) }
|
40
40
|
|
41
|
+
# preformatted block
|
42
|
+
preformatted_command = command:command &{ ['pre', 'precode'].include? command[:name] }
|
43
|
+
preformatted_command_head = lh - preformatted_command:command - '<<' &/[\w0-9]/ { command }
|
44
|
+
preformat_end(start) = lh word:delimiter &{ delimiter == start }
|
45
|
+
preformatted_block = < lh - preformatted_command_head:command !nl word:delimiter nl (!preformat_end(delimiter) (lh charstring nl))+:content preformat_end(delimiter) > { create_item(:preformatted, command, content, raw: text) }
|
46
|
+
|
41
47
|
# inline command
|
42
48
|
inline = img_inline | common_inline
|
43
49
|
common_inline = < '[' command:c '{' documentcontent_except('}'):content '}' ']' > { create_item(:inline, c, content, raw: text) }
|
@@ -45,10 +51,17 @@ img_command = command:c &{ c[:name] == 'img' && c[:args].size == 2}
|
|
45
51
|
img_inline = < '[' img_command:c ']' > { create_item(:inline, c, nil, raw: text) }
|
46
52
|
|
47
53
|
# special line commands
|
54
|
+
commandname_for_special_line_command = newpage_command | explicit_paragraph_command
|
55
|
+
|
56
|
+
# newpage
|
57
|
+
newpage_command = command:command &{ command[:name] == 'newpage' }
|
58
|
+
newpage = < lh - newpage_command:c ':' documentcontent?:content - nl > { create_item(:newpage, c, content, raw:text) }
|
59
|
+
|
48
60
|
# explicit paragraph
|
49
61
|
explicit_paragraph_command = command:c &{ c[:name] == 'p' }
|
50
62
|
explicit_paragraph = < lh - explicit_paragraph_command:c ':' documentcontent?:content le empty_line*> { create_item(:paragraph, c, content, raw:text) }
|
51
63
|
|
64
|
+
|
52
65
|
# unordered list
|
53
66
|
unordered_list = < unordered_item+:items > { create_item(:ul, nil, items, raw: text) }
|
54
67
|
unordered_item = < lh '*:' documentcontent:content le > { create_item(:li, nil, content, raw: text) }
|
@@ -65,20 +78,30 @@ items_list = unordered_list | ordered_list | definition_list
|
|
65
78
|
|
66
79
|
|
67
80
|
# generic line command
|
68
|
-
line_command = < lh - !
|
81
|
+
line_command = < lh - !commandname_for_special_line_command command:c ':' documentcontent?:content - le empty_line* > { create_item(:line_command, c, content, raw: text) }
|
69
82
|
|
70
83
|
# blocks
|
71
|
-
line_block =
|
72
|
-
block = (line_block | explicit_block | paragraph_group):block empty_line* {block}
|
84
|
+
line_block = items_list | line_command
|
85
|
+
block = (preformatted_block | headed_section | line_block | explicit_block | paragraph_group ):block empty_line* {block}
|
73
86
|
block_delimiter = blockhead | blockend
|
74
|
-
paragraph_delimiter = block_delimiter | line_block
|
87
|
+
paragraph_delimiter = block_delimiter | preformatted_command_head | line_block | newpage | headed_start
|
75
88
|
|
89
|
+
# markdown-style headings
|
90
|
+
h_start_mark(n) = < '='+ ':' > &{ text.length - 1 == n }
|
91
|
+
h_markup_terminator(n) = lh - < '='+ ':' > &{ text.length - 1 <= n }
|
92
|
+
|
93
|
+
h_start(n) = lh - h_start_mark(n) charstring:s le { { level: n, heading: s } }
|
94
|
+
h_section(n) = < h_start(n):h (!h_markup_terminator(n) !eof block)+:content > { create_item(:h_section, h, content, raw: text) }
|
95
|
+
|
96
|
+
headed_start = h_start(1) | h_start(2) | h_start(3) | h_start(4) | h_start(5) | h_start(6)
|
97
|
+
headed_section = h_section(1) | h_section(2)| h_section(3)| h_section(4)| h_section(5) | h_section(6)
|
76
98
|
|
77
99
|
#header
|
78
100
|
stylesheets = < lh - 'stylesheets:' !le charstring:s nl > { create_item(:stylesheets, {:stylesheets => s.split(',').map(&:strip)}, nil, raw:text) }
|
79
101
|
title = < lh - 'title:' !le charstring:t nl > { create_item(:title, {:title => t }, nil, raw:text) }
|
80
102
|
lang = < lh - 'lang:' !le charstring:l nl > { create_item(:lang, {:lang => l }, nil, raw:text) }
|
81
|
-
|
103
|
+
paragraph_style = < lh - 'paragraph-style:' !le charstring:l nl > { create_item(:paragraph_style, {:paragraph_style => l }, nil, raw:text) }
|
104
|
+
header = (stylesheets | title | lang | paragraph_style ) empty_line*
|
82
105
|
|
83
106
|
# texts
|
84
107
|
char = < /[[:print:]]/ > { text }
|
@@ -89,7 +112,12 @@ documentcontent_except(e) = (inline | !inline char_except(e))+:content ~parse_te
|
|
89
112
|
documentcontent = (inline | !inline char)+:content ~parse_text(content)
|
90
113
|
documentline = lh documentcontent:content le { content }
|
91
114
|
|
115
|
+
#page
|
116
|
+
headers = header*:headers { create_item(:headers, nil, headers) }
|
117
|
+
page = headers:headers - (!newpage block)*:blocks { create_item(:page, nil, [headers] + blocks.select{ |x| !x.nil?}) }
|
118
|
+
newpaged_page = newpage:newpage page:page { page[:children] = page[:children].unshift newpage; page }
|
92
119
|
#root
|
93
|
-
root =
|
120
|
+
root = page:page newpaged_page*:pages - eof_comment? eof { [ page ] + pages }
|
121
|
+
|
94
122
|
|
95
123
|
|
@@ -1082,6 +1082,253 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
1082
1082
|
return _tmp
|
1083
1083
|
end
|
1084
1084
|
|
1085
|
+
# preformatted_command = command:command &{ ['pre', 'precode'].include? command[:name] }
|
1086
|
+
def _preformatted_command
|
1087
|
+
|
1088
|
+
_save = self.pos
|
1089
|
+
while true # sequence
|
1090
|
+
_tmp = apply(:_command)
|
1091
|
+
command = @result
|
1092
|
+
unless _tmp
|
1093
|
+
self.pos = _save
|
1094
|
+
break
|
1095
|
+
end
|
1096
|
+
_save1 = self.pos
|
1097
|
+
_tmp = begin; ['pre', 'precode'].include? command[:name] ; end
|
1098
|
+
self.pos = _save1
|
1099
|
+
unless _tmp
|
1100
|
+
self.pos = _save
|
1101
|
+
end
|
1102
|
+
break
|
1103
|
+
end # end sequence
|
1104
|
+
|
1105
|
+
set_failed_rule :_preformatted_command unless _tmp
|
1106
|
+
return _tmp
|
1107
|
+
end
|
1108
|
+
|
1109
|
+
# preformatted_command_head = lh - preformatted_command:command - "<<" &/[\w0-9]/ { command }
|
1110
|
+
def _preformatted_command_head
|
1111
|
+
|
1112
|
+
_save = self.pos
|
1113
|
+
while true # sequence
|
1114
|
+
_tmp = apply(:_lh)
|
1115
|
+
unless _tmp
|
1116
|
+
self.pos = _save
|
1117
|
+
break
|
1118
|
+
end
|
1119
|
+
_tmp = apply(:__hyphen_)
|
1120
|
+
unless _tmp
|
1121
|
+
self.pos = _save
|
1122
|
+
break
|
1123
|
+
end
|
1124
|
+
_tmp = apply(:_preformatted_command)
|
1125
|
+
command = @result
|
1126
|
+
unless _tmp
|
1127
|
+
self.pos = _save
|
1128
|
+
break
|
1129
|
+
end
|
1130
|
+
_tmp = apply(:__hyphen_)
|
1131
|
+
unless _tmp
|
1132
|
+
self.pos = _save
|
1133
|
+
break
|
1134
|
+
end
|
1135
|
+
_tmp = match_string("<<")
|
1136
|
+
unless _tmp
|
1137
|
+
self.pos = _save
|
1138
|
+
break
|
1139
|
+
end
|
1140
|
+
_save1 = self.pos
|
1141
|
+
_tmp = scan(/\A(?-mix:[\w0-9])/)
|
1142
|
+
self.pos = _save1
|
1143
|
+
unless _tmp
|
1144
|
+
self.pos = _save
|
1145
|
+
break
|
1146
|
+
end
|
1147
|
+
@result = begin; command ; end
|
1148
|
+
_tmp = true
|
1149
|
+
unless _tmp
|
1150
|
+
self.pos = _save
|
1151
|
+
end
|
1152
|
+
break
|
1153
|
+
end # end sequence
|
1154
|
+
|
1155
|
+
set_failed_rule :_preformatted_command_head unless _tmp
|
1156
|
+
return _tmp
|
1157
|
+
end
|
1158
|
+
|
1159
|
+
# preformat_end = lh word:delimiter &{ delimiter == start }
|
1160
|
+
def _preformat_end(start)
|
1161
|
+
|
1162
|
+
_save = self.pos
|
1163
|
+
while true # sequence
|
1164
|
+
_tmp = apply(:_lh)
|
1165
|
+
unless _tmp
|
1166
|
+
self.pos = _save
|
1167
|
+
break
|
1168
|
+
end
|
1169
|
+
_tmp = apply(:_word)
|
1170
|
+
delimiter = @result
|
1171
|
+
unless _tmp
|
1172
|
+
self.pos = _save
|
1173
|
+
break
|
1174
|
+
end
|
1175
|
+
_save1 = self.pos
|
1176
|
+
_tmp = begin; delimiter == start ; end
|
1177
|
+
self.pos = _save1
|
1178
|
+
unless _tmp
|
1179
|
+
self.pos = _save
|
1180
|
+
end
|
1181
|
+
break
|
1182
|
+
end # end sequence
|
1183
|
+
|
1184
|
+
set_failed_rule :_preformat_end unless _tmp
|
1185
|
+
return _tmp
|
1186
|
+
end
|
1187
|
+
|
1188
|
+
# preformatted_block = < lh - preformatted_command_head:command !nl word:delimiter nl (!preformat_end(delimiter) lh charstring nl)+:content preformat_end(delimiter) > { create_item(:preformatted, command, content, raw: text) }
|
1189
|
+
def _preformatted_block
|
1190
|
+
|
1191
|
+
_save = self.pos
|
1192
|
+
while true # sequence
|
1193
|
+
_text_start = self.pos
|
1194
|
+
|
1195
|
+
_save1 = self.pos
|
1196
|
+
while true # sequence
|
1197
|
+
_tmp = apply(:_lh)
|
1198
|
+
unless _tmp
|
1199
|
+
self.pos = _save1
|
1200
|
+
break
|
1201
|
+
end
|
1202
|
+
_tmp = apply(:__hyphen_)
|
1203
|
+
unless _tmp
|
1204
|
+
self.pos = _save1
|
1205
|
+
break
|
1206
|
+
end
|
1207
|
+
_tmp = apply(:_preformatted_command_head)
|
1208
|
+
command = @result
|
1209
|
+
unless _tmp
|
1210
|
+
self.pos = _save1
|
1211
|
+
break
|
1212
|
+
end
|
1213
|
+
_save2 = self.pos
|
1214
|
+
_tmp = apply(:_nl)
|
1215
|
+
_tmp = _tmp ? nil : true
|
1216
|
+
self.pos = _save2
|
1217
|
+
unless _tmp
|
1218
|
+
self.pos = _save1
|
1219
|
+
break
|
1220
|
+
end
|
1221
|
+
_tmp = apply(:_word)
|
1222
|
+
delimiter = @result
|
1223
|
+
unless _tmp
|
1224
|
+
self.pos = _save1
|
1225
|
+
break
|
1226
|
+
end
|
1227
|
+
_tmp = apply(:_nl)
|
1228
|
+
unless _tmp
|
1229
|
+
self.pos = _save1
|
1230
|
+
break
|
1231
|
+
end
|
1232
|
+
_save3 = self.pos
|
1233
|
+
_ary = []
|
1234
|
+
|
1235
|
+
_save4 = self.pos
|
1236
|
+
while true # sequence
|
1237
|
+
_save5 = self.pos
|
1238
|
+
_tmp = apply_with_args(:_preformat_end, delimiter)
|
1239
|
+
_tmp = _tmp ? nil : true
|
1240
|
+
self.pos = _save5
|
1241
|
+
unless _tmp
|
1242
|
+
self.pos = _save4
|
1243
|
+
break
|
1244
|
+
end
|
1245
|
+
_tmp = apply(:_lh)
|
1246
|
+
unless _tmp
|
1247
|
+
self.pos = _save4
|
1248
|
+
break
|
1249
|
+
end
|
1250
|
+
_tmp = apply(:_charstring)
|
1251
|
+
unless _tmp
|
1252
|
+
self.pos = _save4
|
1253
|
+
break
|
1254
|
+
end
|
1255
|
+
_tmp = apply(:_nl)
|
1256
|
+
unless _tmp
|
1257
|
+
self.pos = _save4
|
1258
|
+
end
|
1259
|
+
break
|
1260
|
+
end # end sequence
|
1261
|
+
|
1262
|
+
if _tmp
|
1263
|
+
_ary << @result
|
1264
|
+
while true
|
1265
|
+
|
1266
|
+
_save6 = self.pos
|
1267
|
+
while true # sequence
|
1268
|
+
_save7 = self.pos
|
1269
|
+
_tmp = apply_with_args(:_preformat_end, delimiter)
|
1270
|
+
_tmp = _tmp ? nil : true
|
1271
|
+
self.pos = _save7
|
1272
|
+
unless _tmp
|
1273
|
+
self.pos = _save6
|
1274
|
+
break
|
1275
|
+
end
|
1276
|
+
_tmp = apply(:_lh)
|
1277
|
+
unless _tmp
|
1278
|
+
self.pos = _save6
|
1279
|
+
break
|
1280
|
+
end
|
1281
|
+
_tmp = apply(:_charstring)
|
1282
|
+
unless _tmp
|
1283
|
+
self.pos = _save6
|
1284
|
+
break
|
1285
|
+
end
|
1286
|
+
_tmp = apply(:_nl)
|
1287
|
+
unless _tmp
|
1288
|
+
self.pos = _save6
|
1289
|
+
end
|
1290
|
+
break
|
1291
|
+
end # end sequence
|
1292
|
+
|
1293
|
+
_ary << @result if _tmp
|
1294
|
+
break unless _tmp
|
1295
|
+
end
|
1296
|
+
_tmp = true
|
1297
|
+
@result = _ary
|
1298
|
+
else
|
1299
|
+
self.pos = _save3
|
1300
|
+
end
|
1301
|
+
content = @result
|
1302
|
+
unless _tmp
|
1303
|
+
self.pos = _save1
|
1304
|
+
break
|
1305
|
+
end
|
1306
|
+
_tmp = apply_with_args(:_preformat_end, delimiter)
|
1307
|
+
unless _tmp
|
1308
|
+
self.pos = _save1
|
1309
|
+
end
|
1310
|
+
break
|
1311
|
+
end # end sequence
|
1312
|
+
|
1313
|
+
if _tmp
|
1314
|
+
text = get_text(_text_start)
|
1315
|
+
end
|
1316
|
+
unless _tmp
|
1317
|
+
self.pos = _save
|
1318
|
+
break
|
1319
|
+
end
|
1320
|
+
@result = begin; create_item(:preformatted, command, content, raw: text) ; end
|
1321
|
+
_tmp = true
|
1322
|
+
unless _tmp
|
1323
|
+
self.pos = _save
|
1324
|
+
end
|
1325
|
+
break
|
1326
|
+
end # end sequence
|
1327
|
+
|
1328
|
+
set_failed_rule :_preformatted_block unless _tmp
|
1329
|
+
return _tmp
|
1330
|
+
end
|
1331
|
+
|
1085
1332
|
# inline = (img_inline | common_inline)
|
1086
1333
|
def _inline
|
1087
1334
|
|
@@ -1232,19 +1479,37 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
1232
1479
|
return _tmp
|
1233
1480
|
end
|
1234
1481
|
|
1235
|
-
#
|
1236
|
-
def
|
1482
|
+
# commandname_for_special_line_command = (newpage_command | explicit_paragraph_command)
|
1483
|
+
def _commandname_for_special_line_command
|
1484
|
+
|
1485
|
+
_save = self.pos
|
1486
|
+
while true # choice
|
1487
|
+
_tmp = apply(:_newpage_command)
|
1488
|
+
break if _tmp
|
1489
|
+
self.pos = _save
|
1490
|
+
_tmp = apply(:_explicit_paragraph_command)
|
1491
|
+
break if _tmp
|
1492
|
+
self.pos = _save
|
1493
|
+
break
|
1494
|
+
end # end choice
|
1495
|
+
|
1496
|
+
set_failed_rule :_commandname_for_special_line_command unless _tmp
|
1497
|
+
return _tmp
|
1498
|
+
end
|
1499
|
+
|
1500
|
+
# newpage_command = command:command &{ command[:name] == 'newpage' }
|
1501
|
+
def _newpage_command
|
1237
1502
|
|
1238
1503
|
_save = self.pos
|
1239
1504
|
while true # sequence
|
1240
1505
|
_tmp = apply(:_command)
|
1241
|
-
|
1506
|
+
command = @result
|
1242
1507
|
unless _tmp
|
1243
1508
|
self.pos = _save
|
1244
1509
|
break
|
1245
1510
|
end
|
1246
1511
|
_save1 = self.pos
|
1247
|
-
_tmp = begin;
|
1512
|
+
_tmp = begin; command[:name] == 'newpage' ; end
|
1248
1513
|
self.pos = _save1
|
1249
1514
|
unless _tmp
|
1250
1515
|
self.pos = _save
|
@@ -1252,12 +1517,12 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
1252
1517
|
break
|
1253
1518
|
end # end sequence
|
1254
1519
|
|
1255
|
-
set_failed_rule :
|
1520
|
+
set_failed_rule :_newpage_command unless _tmp
|
1256
1521
|
return _tmp
|
1257
1522
|
end
|
1258
1523
|
|
1259
|
-
#
|
1260
|
-
def
|
1524
|
+
# newpage = < lh - newpage_command:c ":" documentcontent?:content - nl > { create_item(:newpage, c, content, raw:text) }
|
1525
|
+
def _newpage
|
1261
1526
|
|
1262
1527
|
_save = self.pos
|
1263
1528
|
while true # sequence
|
@@ -1275,7 +1540,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
1275
1540
|
self.pos = _save1
|
1276
1541
|
break
|
1277
1542
|
end
|
1278
|
-
_tmp = apply(:
|
1543
|
+
_tmp = apply(:_newpage_command)
|
1279
1544
|
c = @result
|
1280
1545
|
unless _tmp
|
1281
1546
|
self.pos = _save1
|
@@ -1298,16 +1563,12 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
1298
1563
|
self.pos = _save1
|
1299
1564
|
break
|
1300
1565
|
end
|
1301
|
-
_tmp = apply(:
|
1566
|
+
_tmp = apply(:__hyphen_)
|
1302
1567
|
unless _tmp
|
1303
1568
|
self.pos = _save1
|
1304
1569
|
break
|
1305
1570
|
end
|
1306
|
-
|
1307
|
-
_tmp = apply(:_empty_line)
|
1308
|
-
break unless _tmp
|
1309
|
-
end
|
1310
|
-
_tmp = true
|
1571
|
+
_tmp = apply(:_nl)
|
1311
1572
|
unless _tmp
|
1312
1573
|
self.pos = _save1
|
1313
1574
|
end
|
@@ -1321,7 +1582,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
1321
1582
|
self.pos = _save
|
1322
1583
|
break
|
1323
1584
|
end
|
1324
|
-
@result = begin; create_item(:
|
1585
|
+
@result = begin; create_item(:newpage, c, content, raw:text) ; end
|
1325
1586
|
_tmp = true
|
1326
1587
|
unless _tmp
|
1327
1588
|
self.pos = _save
|
@@ -1329,20 +1590,121 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
1329
1590
|
break
|
1330
1591
|
end # end sequence
|
1331
1592
|
|
1332
|
-
set_failed_rule :
|
1593
|
+
set_failed_rule :_newpage unless _tmp
|
1333
1594
|
return _tmp
|
1334
1595
|
end
|
1335
1596
|
|
1336
|
-
#
|
1337
|
-
def
|
1597
|
+
# explicit_paragraph_command = command:c &{ c[:name] == 'p' }
|
1598
|
+
def _explicit_paragraph_command
|
1338
1599
|
|
1339
1600
|
_save = self.pos
|
1340
1601
|
while true # sequence
|
1341
|
-
|
1602
|
+
_tmp = apply(:_command)
|
1603
|
+
c = @result
|
1604
|
+
unless _tmp
|
1605
|
+
self.pos = _save
|
1606
|
+
break
|
1607
|
+
end
|
1342
1608
|
_save1 = self.pos
|
1343
|
-
|
1344
|
-
|
1345
|
-
|
1609
|
+
_tmp = begin; c[:name] == 'p' ; end
|
1610
|
+
self.pos = _save1
|
1611
|
+
unless _tmp
|
1612
|
+
self.pos = _save
|
1613
|
+
end
|
1614
|
+
break
|
1615
|
+
end # end sequence
|
1616
|
+
|
1617
|
+
set_failed_rule :_explicit_paragraph_command unless _tmp
|
1618
|
+
return _tmp
|
1619
|
+
end
|
1620
|
+
|
1621
|
+
# explicit_paragraph = < lh - explicit_paragraph_command:c ":" documentcontent?:content le empty_line* > { create_item(:paragraph, c, content, raw:text) }
|
1622
|
+
def _explicit_paragraph
|
1623
|
+
|
1624
|
+
_save = self.pos
|
1625
|
+
while true # sequence
|
1626
|
+
_text_start = self.pos
|
1627
|
+
|
1628
|
+
_save1 = self.pos
|
1629
|
+
while true # sequence
|
1630
|
+
_tmp = apply(:_lh)
|
1631
|
+
unless _tmp
|
1632
|
+
self.pos = _save1
|
1633
|
+
break
|
1634
|
+
end
|
1635
|
+
_tmp = apply(:__hyphen_)
|
1636
|
+
unless _tmp
|
1637
|
+
self.pos = _save1
|
1638
|
+
break
|
1639
|
+
end
|
1640
|
+
_tmp = apply(:_explicit_paragraph_command)
|
1641
|
+
c = @result
|
1642
|
+
unless _tmp
|
1643
|
+
self.pos = _save1
|
1644
|
+
break
|
1645
|
+
end
|
1646
|
+
_tmp = match_string(":")
|
1647
|
+
unless _tmp
|
1648
|
+
self.pos = _save1
|
1649
|
+
break
|
1650
|
+
end
|
1651
|
+
_save2 = self.pos
|
1652
|
+
_tmp = apply(:_documentcontent)
|
1653
|
+
@result = nil unless _tmp
|
1654
|
+
unless _tmp
|
1655
|
+
_tmp = true
|
1656
|
+
self.pos = _save2
|
1657
|
+
end
|
1658
|
+
content = @result
|
1659
|
+
unless _tmp
|
1660
|
+
self.pos = _save1
|
1661
|
+
break
|
1662
|
+
end
|
1663
|
+
_tmp = apply(:_le)
|
1664
|
+
unless _tmp
|
1665
|
+
self.pos = _save1
|
1666
|
+
break
|
1667
|
+
end
|
1668
|
+
while true
|
1669
|
+
_tmp = apply(:_empty_line)
|
1670
|
+
break unless _tmp
|
1671
|
+
end
|
1672
|
+
_tmp = true
|
1673
|
+
unless _tmp
|
1674
|
+
self.pos = _save1
|
1675
|
+
end
|
1676
|
+
break
|
1677
|
+
end # end sequence
|
1678
|
+
|
1679
|
+
if _tmp
|
1680
|
+
text = get_text(_text_start)
|
1681
|
+
end
|
1682
|
+
unless _tmp
|
1683
|
+
self.pos = _save
|
1684
|
+
break
|
1685
|
+
end
|
1686
|
+
@result = begin; create_item(:paragraph, c, content, raw:text) ; end
|
1687
|
+
_tmp = true
|
1688
|
+
unless _tmp
|
1689
|
+
self.pos = _save
|
1690
|
+
end
|
1691
|
+
break
|
1692
|
+
end # end sequence
|
1693
|
+
|
1694
|
+
set_failed_rule :_explicit_paragraph unless _tmp
|
1695
|
+
return _tmp
|
1696
|
+
end
|
1697
|
+
|
1698
|
+
# unordered_list = < unordered_item+:items > { create_item(:ul, nil, items, raw: text) }
|
1699
|
+
def _unordered_list
|
1700
|
+
|
1701
|
+
_save = self.pos
|
1702
|
+
while true # sequence
|
1703
|
+
_text_start = self.pos
|
1704
|
+
_save1 = self.pos
|
1705
|
+
_ary = []
|
1706
|
+
_tmp = apply(:_unordered_item)
|
1707
|
+
if _tmp
|
1346
1708
|
_ary << @result
|
1347
1709
|
while true
|
1348
1710
|
_tmp = apply(:_unordered_item)
|
@@ -1656,7 +2018,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
1656
2018
|
return _tmp
|
1657
2019
|
end
|
1658
2020
|
|
1659
|
-
# line_command = < lh - !
|
2021
|
+
# line_command = < lh - !commandname_for_special_line_command command:c ":" documentcontent?:content - le empty_line* > { create_item(:line_command, c, content, raw: text) }
|
1660
2022
|
def _line_command
|
1661
2023
|
|
1662
2024
|
_save = self.pos
|
@@ -1676,7 +2038,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
1676
2038
|
break
|
1677
2039
|
end
|
1678
2040
|
_save2 = self.pos
|
1679
|
-
_tmp = apply(:
|
2041
|
+
_tmp = apply(:_commandname_for_special_line_command)
|
1680
2042
|
_tmp = _tmp ? nil : true
|
1681
2043
|
self.pos = _save2
|
1682
2044
|
unless _tmp
|
@@ -1699,28 +2061,404 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
1699
2061
|
@result = nil unless _tmp
|
1700
2062
|
unless _tmp
|
1701
2063
|
_tmp = true
|
1702
|
-
self.pos = _save3
|
2064
|
+
self.pos = _save3
|
2065
|
+
end
|
2066
|
+
content = @result
|
2067
|
+
unless _tmp
|
2068
|
+
self.pos = _save1
|
2069
|
+
break
|
2070
|
+
end
|
2071
|
+
_tmp = apply(:__hyphen_)
|
2072
|
+
unless _tmp
|
2073
|
+
self.pos = _save1
|
2074
|
+
break
|
2075
|
+
end
|
2076
|
+
_tmp = apply(:_le)
|
2077
|
+
unless _tmp
|
2078
|
+
self.pos = _save1
|
2079
|
+
break
|
2080
|
+
end
|
2081
|
+
while true
|
2082
|
+
_tmp = apply(:_empty_line)
|
2083
|
+
break unless _tmp
|
2084
|
+
end
|
2085
|
+
_tmp = true
|
2086
|
+
unless _tmp
|
2087
|
+
self.pos = _save1
|
2088
|
+
end
|
2089
|
+
break
|
2090
|
+
end # end sequence
|
2091
|
+
|
2092
|
+
if _tmp
|
2093
|
+
text = get_text(_text_start)
|
2094
|
+
end
|
2095
|
+
unless _tmp
|
2096
|
+
self.pos = _save
|
2097
|
+
break
|
2098
|
+
end
|
2099
|
+
@result = begin; create_item(:line_command, c, content, raw: text) ; end
|
2100
|
+
_tmp = true
|
2101
|
+
unless _tmp
|
2102
|
+
self.pos = _save
|
2103
|
+
end
|
2104
|
+
break
|
2105
|
+
end # end sequence
|
2106
|
+
|
2107
|
+
set_failed_rule :_line_command unless _tmp
|
2108
|
+
return _tmp
|
2109
|
+
end
|
2110
|
+
|
2111
|
+
# line_block = (items_list | line_command)
|
2112
|
+
def _line_block
|
2113
|
+
|
2114
|
+
_save = self.pos
|
2115
|
+
while true # choice
|
2116
|
+
_tmp = apply(:_items_list)
|
2117
|
+
break if _tmp
|
2118
|
+
self.pos = _save
|
2119
|
+
_tmp = apply(:_line_command)
|
2120
|
+
break if _tmp
|
2121
|
+
self.pos = _save
|
2122
|
+
break
|
2123
|
+
end # end choice
|
2124
|
+
|
2125
|
+
set_failed_rule :_line_block unless _tmp
|
2126
|
+
return _tmp
|
2127
|
+
end
|
2128
|
+
|
2129
|
+
# block = (preformatted_block | headed_section | line_block | explicit_block | paragraph_group):block empty_line* {block}
|
2130
|
+
def _block
|
2131
|
+
|
2132
|
+
_save = self.pos
|
2133
|
+
while true # sequence
|
2134
|
+
|
2135
|
+
_save1 = self.pos
|
2136
|
+
while true # choice
|
2137
|
+
_tmp = apply(:_preformatted_block)
|
2138
|
+
break if _tmp
|
2139
|
+
self.pos = _save1
|
2140
|
+
_tmp = apply(:_headed_section)
|
2141
|
+
break if _tmp
|
2142
|
+
self.pos = _save1
|
2143
|
+
_tmp = apply(:_line_block)
|
2144
|
+
break if _tmp
|
2145
|
+
self.pos = _save1
|
2146
|
+
_tmp = apply(:_explicit_block)
|
2147
|
+
break if _tmp
|
2148
|
+
self.pos = _save1
|
2149
|
+
_tmp = apply(:_paragraph_group)
|
2150
|
+
break if _tmp
|
2151
|
+
self.pos = _save1
|
2152
|
+
break
|
2153
|
+
end # end choice
|
2154
|
+
|
2155
|
+
block = @result
|
2156
|
+
unless _tmp
|
2157
|
+
self.pos = _save
|
2158
|
+
break
|
2159
|
+
end
|
2160
|
+
while true
|
2161
|
+
_tmp = apply(:_empty_line)
|
2162
|
+
break unless _tmp
|
2163
|
+
end
|
2164
|
+
_tmp = true
|
2165
|
+
unless _tmp
|
2166
|
+
self.pos = _save
|
2167
|
+
break
|
2168
|
+
end
|
2169
|
+
@result = begin; block; end
|
2170
|
+
_tmp = true
|
2171
|
+
unless _tmp
|
2172
|
+
self.pos = _save
|
2173
|
+
end
|
2174
|
+
break
|
2175
|
+
end # end sequence
|
2176
|
+
|
2177
|
+
set_failed_rule :_block unless _tmp
|
2178
|
+
return _tmp
|
2179
|
+
end
|
2180
|
+
|
2181
|
+
# block_delimiter = (blockhead | blockend)
|
2182
|
+
def _block_delimiter
|
2183
|
+
|
2184
|
+
_save = self.pos
|
2185
|
+
while true # choice
|
2186
|
+
_tmp = apply(:_blockhead)
|
2187
|
+
break if _tmp
|
2188
|
+
self.pos = _save
|
2189
|
+
_tmp = apply(:_blockend)
|
2190
|
+
break if _tmp
|
2191
|
+
self.pos = _save
|
2192
|
+
break
|
2193
|
+
end # end choice
|
2194
|
+
|
2195
|
+
set_failed_rule :_block_delimiter unless _tmp
|
2196
|
+
return _tmp
|
2197
|
+
end
|
2198
|
+
|
2199
|
+
# paragraph_delimiter = (block_delimiter | preformatted_command_head | line_block | newpage | headed_start)
|
2200
|
+
def _paragraph_delimiter
|
2201
|
+
|
2202
|
+
_save = self.pos
|
2203
|
+
while true # choice
|
2204
|
+
_tmp = apply(:_block_delimiter)
|
2205
|
+
break if _tmp
|
2206
|
+
self.pos = _save
|
2207
|
+
_tmp = apply(:_preformatted_command_head)
|
2208
|
+
break if _tmp
|
2209
|
+
self.pos = _save
|
2210
|
+
_tmp = apply(:_line_block)
|
2211
|
+
break if _tmp
|
2212
|
+
self.pos = _save
|
2213
|
+
_tmp = apply(:_newpage)
|
2214
|
+
break if _tmp
|
2215
|
+
self.pos = _save
|
2216
|
+
_tmp = apply(:_headed_start)
|
2217
|
+
break if _tmp
|
2218
|
+
self.pos = _save
|
2219
|
+
break
|
2220
|
+
end # end choice
|
2221
|
+
|
2222
|
+
set_failed_rule :_paragraph_delimiter unless _tmp
|
2223
|
+
return _tmp
|
2224
|
+
end
|
2225
|
+
|
2226
|
+
# h_start_mark = < "="+ ":" > &{ text.length - 1 == n }
|
2227
|
+
def _h_start_mark(n)
|
2228
|
+
|
2229
|
+
_save = self.pos
|
2230
|
+
while true # sequence
|
2231
|
+
_text_start = self.pos
|
2232
|
+
|
2233
|
+
_save1 = self.pos
|
2234
|
+
while true # sequence
|
2235
|
+
_save2 = self.pos
|
2236
|
+
_tmp = match_string("=")
|
2237
|
+
if _tmp
|
2238
|
+
while true
|
2239
|
+
_tmp = match_string("=")
|
2240
|
+
break unless _tmp
|
2241
|
+
end
|
2242
|
+
_tmp = true
|
2243
|
+
else
|
2244
|
+
self.pos = _save2
|
2245
|
+
end
|
2246
|
+
unless _tmp
|
2247
|
+
self.pos = _save1
|
2248
|
+
break
|
2249
|
+
end
|
2250
|
+
_tmp = match_string(":")
|
2251
|
+
unless _tmp
|
2252
|
+
self.pos = _save1
|
2253
|
+
end
|
2254
|
+
break
|
2255
|
+
end # end sequence
|
2256
|
+
|
2257
|
+
if _tmp
|
2258
|
+
text = get_text(_text_start)
|
2259
|
+
end
|
2260
|
+
unless _tmp
|
2261
|
+
self.pos = _save
|
2262
|
+
break
|
2263
|
+
end
|
2264
|
+
_save3 = self.pos
|
2265
|
+
_tmp = begin; text.length - 1 == n ; end
|
2266
|
+
self.pos = _save3
|
2267
|
+
unless _tmp
|
2268
|
+
self.pos = _save
|
2269
|
+
end
|
2270
|
+
break
|
2271
|
+
end # end sequence
|
2272
|
+
|
2273
|
+
set_failed_rule :_h_start_mark unless _tmp
|
2274
|
+
return _tmp
|
2275
|
+
end
|
2276
|
+
|
2277
|
+
# h_markup_terminator = lh - < "="+ ":" > &{ text.length - 1 <= n }
|
2278
|
+
def _h_markup_terminator(n)
|
2279
|
+
|
2280
|
+
_save = self.pos
|
2281
|
+
while true # sequence
|
2282
|
+
_tmp = apply(:_lh)
|
2283
|
+
unless _tmp
|
2284
|
+
self.pos = _save
|
2285
|
+
break
|
2286
|
+
end
|
2287
|
+
_tmp = apply(:__hyphen_)
|
2288
|
+
unless _tmp
|
2289
|
+
self.pos = _save
|
2290
|
+
break
|
2291
|
+
end
|
2292
|
+
_text_start = self.pos
|
2293
|
+
|
2294
|
+
_save1 = self.pos
|
2295
|
+
while true # sequence
|
2296
|
+
_save2 = self.pos
|
2297
|
+
_tmp = match_string("=")
|
2298
|
+
if _tmp
|
2299
|
+
while true
|
2300
|
+
_tmp = match_string("=")
|
2301
|
+
break unless _tmp
|
2302
|
+
end
|
2303
|
+
_tmp = true
|
2304
|
+
else
|
2305
|
+
self.pos = _save2
|
2306
|
+
end
|
2307
|
+
unless _tmp
|
2308
|
+
self.pos = _save1
|
2309
|
+
break
|
2310
|
+
end
|
2311
|
+
_tmp = match_string(":")
|
2312
|
+
unless _tmp
|
2313
|
+
self.pos = _save1
|
2314
|
+
end
|
2315
|
+
break
|
2316
|
+
end # end sequence
|
2317
|
+
|
2318
|
+
if _tmp
|
2319
|
+
text = get_text(_text_start)
|
2320
|
+
end
|
2321
|
+
unless _tmp
|
2322
|
+
self.pos = _save
|
2323
|
+
break
|
2324
|
+
end
|
2325
|
+
_save3 = self.pos
|
2326
|
+
_tmp = begin; text.length - 1 <= n ; end
|
2327
|
+
self.pos = _save3
|
2328
|
+
unless _tmp
|
2329
|
+
self.pos = _save
|
2330
|
+
end
|
2331
|
+
break
|
2332
|
+
end # end sequence
|
2333
|
+
|
2334
|
+
set_failed_rule :_h_markup_terminator unless _tmp
|
2335
|
+
return _tmp
|
2336
|
+
end
|
2337
|
+
|
2338
|
+
# h_start = lh - h_start_mark(n) charstring:s le { { level: n, heading: s } }
|
2339
|
+
def _h_start(n)
|
2340
|
+
|
2341
|
+
_save = self.pos
|
2342
|
+
while true # sequence
|
2343
|
+
_tmp = apply(:_lh)
|
2344
|
+
unless _tmp
|
2345
|
+
self.pos = _save
|
2346
|
+
break
|
2347
|
+
end
|
2348
|
+
_tmp = apply(:__hyphen_)
|
2349
|
+
unless _tmp
|
2350
|
+
self.pos = _save
|
2351
|
+
break
|
2352
|
+
end
|
2353
|
+
_tmp = apply_with_args(:_h_start_mark, n)
|
2354
|
+
unless _tmp
|
2355
|
+
self.pos = _save
|
2356
|
+
break
|
2357
|
+
end
|
2358
|
+
_tmp = apply(:_charstring)
|
2359
|
+
s = @result
|
2360
|
+
unless _tmp
|
2361
|
+
self.pos = _save
|
2362
|
+
break
|
2363
|
+
end
|
2364
|
+
_tmp = apply(:_le)
|
2365
|
+
unless _tmp
|
2366
|
+
self.pos = _save
|
2367
|
+
break
|
2368
|
+
end
|
2369
|
+
@result = begin; { level: n, heading: s } ; end
|
2370
|
+
_tmp = true
|
2371
|
+
unless _tmp
|
2372
|
+
self.pos = _save
|
2373
|
+
end
|
2374
|
+
break
|
2375
|
+
end # end sequence
|
2376
|
+
|
2377
|
+
set_failed_rule :_h_start unless _tmp
|
2378
|
+
return _tmp
|
2379
|
+
end
|
2380
|
+
|
2381
|
+
# h_section = < h_start(n):h (!h_markup_terminator(n) !eof block)+:content > { create_item(:h_section, h, content, raw: text) }
|
2382
|
+
def _h_section(n)
|
2383
|
+
|
2384
|
+
_save = self.pos
|
2385
|
+
while true # sequence
|
2386
|
+
_text_start = self.pos
|
2387
|
+
|
2388
|
+
_save1 = self.pos
|
2389
|
+
while true # sequence
|
2390
|
+
_tmp = apply_with_args(:_h_start, n)
|
2391
|
+
h = @result
|
2392
|
+
unless _tmp
|
2393
|
+
self.pos = _save1
|
2394
|
+
break
|
2395
|
+
end
|
2396
|
+
_save2 = self.pos
|
2397
|
+
_ary = []
|
2398
|
+
|
2399
|
+
_save3 = self.pos
|
2400
|
+
while true # sequence
|
2401
|
+
_save4 = self.pos
|
2402
|
+
_tmp = apply_with_args(:_h_markup_terminator, n)
|
2403
|
+
_tmp = _tmp ? nil : true
|
2404
|
+
self.pos = _save4
|
2405
|
+
unless _tmp
|
2406
|
+
self.pos = _save3
|
2407
|
+
break
|
2408
|
+
end
|
2409
|
+
_save5 = self.pos
|
2410
|
+
_tmp = apply(:_eof)
|
2411
|
+
_tmp = _tmp ? nil : true
|
2412
|
+
self.pos = _save5
|
2413
|
+
unless _tmp
|
2414
|
+
self.pos = _save3
|
2415
|
+
break
|
2416
|
+
end
|
2417
|
+
_tmp = apply(:_block)
|
2418
|
+
unless _tmp
|
2419
|
+
self.pos = _save3
|
2420
|
+
end
|
2421
|
+
break
|
2422
|
+
end # end sequence
|
2423
|
+
|
2424
|
+
if _tmp
|
2425
|
+
_ary << @result
|
2426
|
+
while true
|
2427
|
+
|
2428
|
+
_save6 = self.pos
|
2429
|
+
while true # sequence
|
2430
|
+
_save7 = self.pos
|
2431
|
+
_tmp = apply_with_args(:_h_markup_terminator, n)
|
2432
|
+
_tmp = _tmp ? nil : true
|
2433
|
+
self.pos = _save7
|
2434
|
+
unless _tmp
|
2435
|
+
self.pos = _save6
|
2436
|
+
break
|
2437
|
+
end
|
2438
|
+
_save8 = self.pos
|
2439
|
+
_tmp = apply(:_eof)
|
2440
|
+
_tmp = _tmp ? nil : true
|
2441
|
+
self.pos = _save8
|
2442
|
+
unless _tmp
|
2443
|
+
self.pos = _save6
|
2444
|
+
break
|
2445
|
+
end
|
2446
|
+
_tmp = apply(:_block)
|
2447
|
+
unless _tmp
|
2448
|
+
self.pos = _save6
|
2449
|
+
end
|
2450
|
+
break
|
2451
|
+
end # end sequence
|
2452
|
+
|
2453
|
+
_ary << @result if _tmp
|
2454
|
+
break unless _tmp
|
2455
|
+
end
|
2456
|
+
_tmp = true
|
2457
|
+
@result = _ary
|
2458
|
+
else
|
2459
|
+
self.pos = _save2
|
1703
2460
|
end
|
1704
2461
|
content = @result
|
1705
|
-
unless _tmp
|
1706
|
-
self.pos = _save1
|
1707
|
-
break
|
1708
|
-
end
|
1709
|
-
_tmp = apply(:__hyphen_)
|
1710
|
-
unless _tmp
|
1711
|
-
self.pos = _save1
|
1712
|
-
break
|
1713
|
-
end
|
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
|
1724
2462
|
unless _tmp
|
1725
2463
|
self.pos = _save1
|
1726
2464
|
end
|
@@ -1734,7 +2472,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
1734
2472
|
self.pos = _save
|
1735
2473
|
break
|
1736
2474
|
end
|
1737
|
-
@result = begin; create_item(:
|
2475
|
+
@result = begin; create_item(:h_section, h, content, raw: text) ; end
|
1738
2476
|
_tmp = true
|
1739
2477
|
unless _tmp
|
1740
2478
|
self.pos = _save
|
@@ -1742,107 +2480,67 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
1742
2480
|
break
|
1743
2481
|
end # end sequence
|
1744
2482
|
|
1745
|
-
set_failed_rule :
|
2483
|
+
set_failed_rule :_h_section unless _tmp
|
1746
2484
|
return _tmp
|
1747
2485
|
end
|
1748
2486
|
|
1749
|
-
#
|
1750
|
-
def
|
2487
|
+
# headed_start = (h_start(1) | h_start(2) | h_start(3) | h_start(4) | h_start(5) | h_start(6))
|
2488
|
+
def _headed_start
|
1751
2489
|
|
1752
2490
|
_save = self.pos
|
1753
2491
|
while true # choice
|
1754
|
-
_tmp =
|
2492
|
+
_tmp = apply_with_args(:_h_start, 1)
|
1755
2493
|
break if _tmp
|
1756
2494
|
self.pos = _save
|
1757
|
-
_tmp =
|
2495
|
+
_tmp = apply_with_args(:_h_start, 2)
|
1758
2496
|
break if _tmp
|
1759
2497
|
self.pos = _save
|
1760
|
-
|
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
|
-
|
1773
|
-
_save1 = self.pos
|
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
|
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
|
1805
|
-
end
|
1806
|
-
break
|
1807
|
-
end # end sequence
|
1808
|
-
|
1809
|
-
set_failed_rule :_block unless _tmp
|
1810
|
-
return _tmp
|
1811
|
-
end
|
1812
|
-
|
1813
|
-
# block_delimiter = (blockhead | blockend)
|
1814
|
-
def _block_delimiter
|
1815
|
-
|
1816
|
-
_save = self.pos
|
1817
|
-
while true # choice
|
1818
|
-
_tmp = apply(:_blockhead)
|
2498
|
+
_tmp = apply_with_args(:_h_start, 3)
|
1819
2499
|
break if _tmp
|
1820
2500
|
self.pos = _save
|
1821
|
-
_tmp =
|
2501
|
+
_tmp = apply_with_args(:_h_start, 4)
|
2502
|
+
break if _tmp
|
2503
|
+
self.pos = _save
|
2504
|
+
_tmp = apply_with_args(:_h_start, 5)
|
2505
|
+
break if _tmp
|
2506
|
+
self.pos = _save
|
2507
|
+
_tmp = apply_with_args(:_h_start, 6)
|
1822
2508
|
break if _tmp
|
1823
2509
|
self.pos = _save
|
1824
2510
|
break
|
1825
2511
|
end # end choice
|
1826
2512
|
|
1827
|
-
set_failed_rule :
|
2513
|
+
set_failed_rule :_headed_start unless _tmp
|
1828
2514
|
return _tmp
|
1829
2515
|
end
|
1830
2516
|
|
1831
|
-
#
|
1832
|
-
def
|
2517
|
+
# headed_section = (h_section(1) | h_section(2) | h_section(3) | h_section(4) | h_section(5) | h_section(6))
|
2518
|
+
def _headed_section
|
1833
2519
|
|
1834
2520
|
_save = self.pos
|
1835
2521
|
while true # choice
|
1836
|
-
_tmp =
|
2522
|
+
_tmp = apply_with_args(:_h_section, 1)
|
1837
2523
|
break if _tmp
|
1838
2524
|
self.pos = _save
|
1839
|
-
_tmp =
|
2525
|
+
_tmp = apply_with_args(:_h_section, 2)
|
2526
|
+
break if _tmp
|
2527
|
+
self.pos = _save
|
2528
|
+
_tmp = apply_with_args(:_h_section, 3)
|
2529
|
+
break if _tmp
|
2530
|
+
self.pos = _save
|
2531
|
+
_tmp = apply_with_args(:_h_section, 4)
|
2532
|
+
break if _tmp
|
2533
|
+
self.pos = _save
|
2534
|
+
_tmp = apply_with_args(:_h_section, 5)
|
2535
|
+
break if _tmp
|
2536
|
+
self.pos = _save
|
2537
|
+
_tmp = apply_with_args(:_h_section, 6)
|
1840
2538
|
break if _tmp
|
1841
2539
|
self.pos = _save
|
1842
2540
|
break
|
1843
2541
|
end # end choice
|
1844
2542
|
|
1845
|
-
set_failed_rule :
|
2543
|
+
set_failed_rule :_headed_section unless _tmp
|
1846
2544
|
return _tmp
|
1847
2545
|
end
|
1848
2546
|
|
@@ -2038,7 +2736,71 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
2038
2736
|
return _tmp
|
2039
2737
|
end
|
2040
2738
|
|
2041
|
-
#
|
2739
|
+
# paragraph_style = < lh - "paragraph-style:" !le charstring:l nl > { create_item(:paragraph_style, {:paragraph_style => l }, nil, raw:text) }
|
2740
|
+
def _paragraph_style
|
2741
|
+
|
2742
|
+
_save = self.pos
|
2743
|
+
while true # sequence
|
2744
|
+
_text_start = self.pos
|
2745
|
+
|
2746
|
+
_save1 = self.pos
|
2747
|
+
while true # sequence
|
2748
|
+
_tmp = apply(:_lh)
|
2749
|
+
unless _tmp
|
2750
|
+
self.pos = _save1
|
2751
|
+
break
|
2752
|
+
end
|
2753
|
+
_tmp = apply(:__hyphen_)
|
2754
|
+
unless _tmp
|
2755
|
+
self.pos = _save1
|
2756
|
+
break
|
2757
|
+
end
|
2758
|
+
_tmp = match_string("paragraph-style:")
|
2759
|
+
unless _tmp
|
2760
|
+
self.pos = _save1
|
2761
|
+
break
|
2762
|
+
end
|
2763
|
+
_save2 = self.pos
|
2764
|
+
_tmp = apply(:_le)
|
2765
|
+
_tmp = _tmp ? nil : true
|
2766
|
+
self.pos = _save2
|
2767
|
+
unless _tmp
|
2768
|
+
self.pos = _save1
|
2769
|
+
break
|
2770
|
+
end
|
2771
|
+
_tmp = apply(:_charstring)
|
2772
|
+
l = @result
|
2773
|
+
unless _tmp
|
2774
|
+
self.pos = _save1
|
2775
|
+
break
|
2776
|
+
end
|
2777
|
+
_tmp = apply(:_nl)
|
2778
|
+
unless _tmp
|
2779
|
+
self.pos = _save1
|
2780
|
+
end
|
2781
|
+
break
|
2782
|
+
end # end sequence
|
2783
|
+
|
2784
|
+
if _tmp
|
2785
|
+
text = get_text(_text_start)
|
2786
|
+
end
|
2787
|
+
unless _tmp
|
2788
|
+
self.pos = _save
|
2789
|
+
break
|
2790
|
+
end
|
2791
|
+
@result = begin; create_item(:paragraph_style, {:paragraph_style => l }, nil, raw:text) ; end
|
2792
|
+
_tmp = true
|
2793
|
+
unless _tmp
|
2794
|
+
self.pos = _save
|
2795
|
+
end
|
2796
|
+
break
|
2797
|
+
end # end sequence
|
2798
|
+
|
2799
|
+
set_failed_rule :_paragraph_style unless _tmp
|
2800
|
+
return _tmp
|
2801
|
+
end
|
2802
|
+
|
2803
|
+
# header = (stylesheets | title | lang | paragraph_style) empty_line*
|
2042
2804
|
def _header
|
2043
2805
|
|
2044
2806
|
_save = self.pos
|
@@ -2055,6 +2817,9 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
2055
2817
|
_tmp = apply(:_lang)
|
2056
2818
|
break if _tmp
|
2057
2819
|
self.pos = _save1
|
2820
|
+
_tmp = apply(:_paragraph_style)
|
2821
|
+
break if _tmp
|
2822
|
+
self.pos = _save1
|
2058
2823
|
break
|
2059
2824
|
end # end choice
|
2060
2825
|
|
@@ -2406,8 +3171,8 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
2406
3171
|
return _tmp
|
2407
3172
|
end
|
2408
3173
|
|
2409
|
-
#
|
2410
|
-
def
|
3174
|
+
# headers = header*:headers { create_item(:headers, nil, headers) }
|
3175
|
+
def _headers
|
2411
3176
|
|
2412
3177
|
_save = self.pos
|
2413
3178
|
while true # sequence
|
@@ -2424,6 +3189,29 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
2424
3189
|
self.pos = _save
|
2425
3190
|
break
|
2426
3191
|
end
|
3192
|
+
@result = begin; create_item(:headers, nil, headers) ; end
|
3193
|
+
_tmp = true
|
3194
|
+
unless _tmp
|
3195
|
+
self.pos = _save
|
3196
|
+
end
|
3197
|
+
break
|
3198
|
+
end # end sequence
|
3199
|
+
|
3200
|
+
set_failed_rule :_headers unless _tmp
|
3201
|
+
return _tmp
|
3202
|
+
end
|
3203
|
+
|
3204
|
+
# page = headers:headers - (!newpage block)*:blocks { create_item(:page, nil, [headers] + blocks.select{ |x| !x.nil?}) }
|
3205
|
+
def _page
|
3206
|
+
|
3207
|
+
_save = self.pos
|
3208
|
+
while true # sequence
|
3209
|
+
_tmp = apply(:_headers)
|
3210
|
+
headers = @result
|
3211
|
+
unless _tmp
|
3212
|
+
self.pos = _save
|
3213
|
+
break
|
3214
|
+
end
|
2427
3215
|
_tmp = apply(:__hyphen_)
|
2428
3216
|
unless _tmp
|
2429
3217
|
self.pos = _save
|
@@ -2431,7 +3219,24 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
2431
3219
|
end
|
2432
3220
|
_ary = []
|
2433
3221
|
while true
|
2434
|
-
|
3222
|
+
|
3223
|
+
_save2 = self.pos
|
3224
|
+
while true # sequence
|
3225
|
+
_save3 = self.pos
|
3226
|
+
_tmp = apply(:_newpage)
|
3227
|
+
_tmp = _tmp ? nil : true
|
3228
|
+
self.pos = _save3
|
3229
|
+
unless _tmp
|
3230
|
+
self.pos = _save2
|
3231
|
+
break
|
3232
|
+
end
|
3233
|
+
_tmp = apply(:_block)
|
3234
|
+
unless _tmp
|
3235
|
+
self.pos = _save2
|
3236
|
+
end
|
3237
|
+
break
|
3238
|
+
end # end sequence
|
3239
|
+
|
2435
3240
|
_ary << @result if _tmp
|
2436
3241
|
break unless _tmp
|
2437
3242
|
end
|
@@ -2442,16 +3247,81 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
2442
3247
|
self.pos = _save
|
2443
3248
|
break
|
2444
3249
|
end
|
3250
|
+
@result = begin; create_item(:page, nil, [headers] + blocks.select{ |x| !x.nil?}) ; end
|
3251
|
+
_tmp = true
|
3252
|
+
unless _tmp
|
3253
|
+
self.pos = _save
|
3254
|
+
end
|
3255
|
+
break
|
3256
|
+
end # end sequence
|
3257
|
+
|
3258
|
+
set_failed_rule :_page unless _tmp
|
3259
|
+
return _tmp
|
3260
|
+
end
|
3261
|
+
|
3262
|
+
# newpaged_page = newpage:newpage page:page { page[:children] = page[:children].unshift newpage; page }
|
3263
|
+
def _newpaged_page
|
3264
|
+
|
3265
|
+
_save = self.pos
|
3266
|
+
while true # sequence
|
3267
|
+
_tmp = apply(:_newpage)
|
3268
|
+
newpage = @result
|
3269
|
+
unless _tmp
|
3270
|
+
self.pos = _save
|
3271
|
+
break
|
3272
|
+
end
|
3273
|
+
_tmp = apply(:_page)
|
3274
|
+
page = @result
|
3275
|
+
unless _tmp
|
3276
|
+
self.pos = _save
|
3277
|
+
break
|
3278
|
+
end
|
3279
|
+
@result = begin; page[:children] = page[:children].unshift newpage; page ; end
|
3280
|
+
_tmp = true
|
3281
|
+
unless _tmp
|
3282
|
+
self.pos = _save
|
3283
|
+
end
|
3284
|
+
break
|
3285
|
+
end # end sequence
|
3286
|
+
|
3287
|
+
set_failed_rule :_newpaged_page unless _tmp
|
3288
|
+
return _tmp
|
3289
|
+
end
|
3290
|
+
|
3291
|
+
# root = page:page newpaged_page*:pages - eof_comment? eof { [ page ] + pages }
|
3292
|
+
def _root
|
3293
|
+
|
3294
|
+
_save = self.pos
|
3295
|
+
while true # sequence
|
3296
|
+
_tmp = apply(:_page)
|
3297
|
+
page = @result
|
3298
|
+
unless _tmp
|
3299
|
+
self.pos = _save
|
3300
|
+
break
|
3301
|
+
end
|
3302
|
+
_ary = []
|
3303
|
+
while true
|
3304
|
+
_tmp = apply(:_newpaged_page)
|
3305
|
+
_ary << @result if _tmp
|
3306
|
+
break unless _tmp
|
3307
|
+
end
|
3308
|
+
_tmp = true
|
3309
|
+
@result = _ary
|
3310
|
+
pages = @result
|
3311
|
+
unless _tmp
|
3312
|
+
self.pos = _save
|
3313
|
+
break
|
3314
|
+
end
|
2445
3315
|
_tmp = apply(:__hyphen_)
|
2446
3316
|
unless _tmp
|
2447
3317
|
self.pos = _save
|
2448
3318
|
break
|
2449
3319
|
end
|
2450
|
-
|
3320
|
+
_save2 = self.pos
|
2451
3321
|
_tmp = apply(:_eof_comment)
|
2452
3322
|
unless _tmp
|
2453
3323
|
_tmp = true
|
2454
|
-
self.pos =
|
3324
|
+
self.pos = _save2
|
2455
3325
|
end
|
2456
3326
|
unless _tmp
|
2457
3327
|
self.pos = _save
|
@@ -2462,7 +3332,7 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
2462
3332
|
self.pos = _save
|
2463
3333
|
break
|
2464
3334
|
end
|
2465
|
-
@result = begin;
|
3335
|
+
@result = begin; [ page ] + pages ; end
|
2466
3336
|
_tmp = true
|
2467
3337
|
unless _tmp
|
2468
3338
|
self.pos = _save
|
@@ -2501,10 +3371,17 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
2501
3371
|
Rules[:_blockend] = rule_info("blockend", "lh - \"}\" - le empty_line*")
|
2502
3372
|
Rules[:_blockbody] = rule_info("blockbody", "(!blockend block)+:body { body }")
|
2503
3373
|
Rules[:_explicit_block] = rule_info("explicit_block", "< blockhead:head - blockbody:body - blockend > { create_item(:block, head, body, raw: text) }")
|
3374
|
+
Rules[:_preformatted_command] = rule_info("preformatted_command", "command:command &{ ['pre', 'precode'].include? command[:name] }")
|
3375
|
+
Rules[:_preformatted_command_head] = rule_info("preformatted_command_head", "lh - preformatted_command:command - \"<<\" &/[\\w0-9]/ { command }")
|
3376
|
+
Rules[:_preformat_end] = rule_info("preformat_end", "lh word:delimiter &{ delimiter == start }")
|
3377
|
+
Rules[:_preformatted_block] = rule_info("preformatted_block", "< lh - preformatted_command_head:command !nl word:delimiter nl (!preformat_end(delimiter) lh charstring nl)+:content preformat_end(delimiter) > { create_item(:preformatted, command, content, raw: text) }")
|
2504
3378
|
Rules[:_inline] = rule_info("inline", "(img_inline | common_inline)")
|
2505
3379
|
Rules[:_common_inline] = rule_info("common_inline", "< \"[\" command:c \"{\" documentcontent_except('}'):content \"}\" \"]\" > { create_item(:inline, c, content, raw: text) }")
|
2506
3380
|
Rules[:_img_command] = rule_info("img_command", "command:c &{ c[:name] == 'img' && c[:args].size == 2}")
|
2507
3381
|
Rules[:_img_inline] = rule_info("img_inline", "< \"[\" img_command:c \"]\" > { create_item(:inline, c, nil, raw: text) }")
|
3382
|
+
Rules[:_commandname_for_special_line_command] = rule_info("commandname_for_special_line_command", "(newpage_command | explicit_paragraph_command)")
|
3383
|
+
Rules[:_newpage_command] = rule_info("newpage_command", "command:command &{ command[:name] == 'newpage' }")
|
3384
|
+
Rules[:_newpage] = rule_info("newpage", "< lh - newpage_command:c \":\" documentcontent?:content - nl > { create_item(:newpage, c, content, raw:text) }")
|
2508
3385
|
Rules[:_explicit_paragraph_command] = rule_info("explicit_paragraph_command", "command:c &{ c[:name] == 'p' }")
|
2509
3386
|
Rules[:_explicit_paragraph] = rule_info("explicit_paragraph", "< lh - explicit_paragraph_command:c \":\" documentcontent?:content le empty_line* > { create_item(:paragraph, c, content, raw:text) }")
|
2510
3387
|
Rules[:_unordered_list] = rule_info("unordered_list", "< unordered_item+:items > { create_item(:ul, nil, items, raw: text) }")
|
@@ -2514,15 +3391,22 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
2514
3391
|
Rules[:_definition_list] = rule_info("definition_list", "< definition_item+:items > { create_item(:dl, nil, items, raw: text) }")
|
2515
3392
|
Rules[:_definition_item] = rule_info("definition_item", "< lh \";:\" - documentcontent_except(':'):term \":\" - documentcontent:definition le > { create_item(:dtdd, {:args => [term, definition]}, nil, raw: text) }")
|
2516
3393
|
Rules[:_items_list] = rule_info("items_list", "(unordered_list | ordered_list | definition_list)")
|
2517
|
-
Rules[:_line_command] = rule_info("line_command", "< lh - !
|
3394
|
+
Rules[:_line_command] = rule_info("line_command", "< lh - !commandname_for_special_line_command command:c \":\" documentcontent?:content - le empty_line* > { create_item(:line_command, c, content, raw: text) }")
|
2518
3395
|
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}")
|
3396
|
+
Rules[:_block] = rule_info("block", "(preformatted_block | headed_section | line_block | explicit_block | paragraph_group):block empty_line* {block}")
|
2520
3397
|
Rules[:_block_delimiter] = rule_info("block_delimiter", "(blockhead | blockend)")
|
2521
|
-
Rules[:_paragraph_delimiter] = rule_info("paragraph_delimiter", "(block_delimiter | line_block)")
|
3398
|
+
Rules[:_paragraph_delimiter] = rule_info("paragraph_delimiter", "(block_delimiter | preformatted_command_head | line_block | newpage | headed_start)")
|
3399
|
+
Rules[:_h_start_mark] = rule_info("h_start_mark", "< \"=\"+ \":\" > &{ text.length - 1 == n }")
|
3400
|
+
Rules[:_h_markup_terminator] = rule_info("h_markup_terminator", "lh - < \"=\"+ \":\" > &{ text.length - 1 <= n }")
|
3401
|
+
Rules[:_h_start] = rule_info("h_start", "lh - h_start_mark(n) charstring:s le { { level: n, heading: s } }")
|
3402
|
+
Rules[:_h_section] = rule_info("h_section", "< h_start(n):h (!h_markup_terminator(n) !eof block)+:content > { create_item(:h_section, h, content, raw: text) }")
|
3403
|
+
Rules[:_headed_start] = rule_info("headed_start", "(h_start(1) | h_start(2) | h_start(3) | h_start(4) | h_start(5) | h_start(6))")
|
3404
|
+
Rules[:_headed_section] = rule_info("headed_section", "(h_section(1) | h_section(2) | h_section(3) | h_section(4) | h_section(5) | h_section(6))")
|
2522
3405
|
Rules[:_stylesheets] = rule_info("stylesheets", "< lh - \"stylesheets:\" !le charstring:s nl > { create_item(:stylesheets, {:stylesheets => s.split(',').map(&:strip)}, nil, raw:text) }")
|
2523
3406
|
Rules[:_title] = rule_info("title", "< lh - \"title:\" !le charstring:t nl > { create_item(:title, {:title => t }, nil, raw:text) }")
|
2524
3407
|
Rules[:_lang] = rule_info("lang", "< lh - \"lang:\" !le charstring:l nl > { create_item(:lang, {:lang => l }, nil, raw:text) }")
|
2525
|
-
Rules[:
|
3408
|
+
Rules[:_paragraph_style] = rule_info("paragraph_style", "< lh - \"paragraph-style:\" !le charstring:l nl > { create_item(:paragraph_style, {:paragraph_style => l }, nil, raw:text) }")
|
3409
|
+
Rules[:_header] = rule_info("header", "(stylesheets | title | lang | paragraph_style) empty_line*")
|
2526
3410
|
Rules[:_char] = rule_info("char", "< /[[:print:]]/ > { text }")
|
2527
3411
|
Rules[:_charstring] = rule_info("charstring", "< char* > { text }")
|
2528
3412
|
Rules[:_char_except] = rule_info("char_except", "char:c &{ c != e }")
|
@@ -2530,6 +3414,9 @@ class ArtiMark::Parser < KPeg::CompiledParser
|
|
2530
3414
|
Rules[:_documentcontent_except] = rule_info("documentcontent_except", "(inline | !inline char_except(e))+:content {parse_text(content)}")
|
2531
3415
|
Rules[:_documentcontent] = rule_info("documentcontent", "(inline | !inline char)+:content {parse_text(content)}")
|
2532
3416
|
Rules[:_documentline] = rule_info("documentline", "lh documentcontent:content le { content }")
|
2533
|
-
Rules[:
|
3417
|
+
Rules[:_headers] = rule_info("headers", "header*:headers { create_item(:headers, nil, headers) }")
|
3418
|
+
Rules[:_page] = rule_info("page", "headers:headers - (!newpage block)*:blocks { create_item(:page, nil, [headers] + blocks.select{ |x| !x.nil?}) }")
|
3419
|
+
Rules[:_newpaged_page] = rule_info("newpaged_page", "newpage:newpage page:page { page[:children] = page[:children].unshift newpage; page }")
|
3420
|
+
Rules[:_root] = rule_info("root", "page:page newpaged_page*:pages - eof_comment? eof { [ page ] + pages }")
|
2534
3421
|
# :startdoc:
|
2535
3422
|
end
|