arti_mark 0.0.1.beta3 → 0.0.1.beta4

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: abd2001b34dc838a27ba1c9f1e188fde512e2468
4
+ data.tar.gz: 3d683b3d4c7e09efd3414ab6c62503d09d804503
5
+ SHA512:
6
+ metadata.gz: a01c7e24864ca6fa710ca1b22e13c3c8e00f2ab13d2aa0036aa268be4501d63c82266d5a7192dc7420750816495417b46ca9d8090037c817711558037a592d14
7
+ data.tar.gz: 51e4d4bef90306fb68f879fcaf8db6305bc54a6b52a402f50b62cf4db2628d963352a9bfeac09a75e14e8973014152aab239dd53812fbfd88a09dc648f110976
@@ -23,4 +23,4 @@ module ArtiMark
23
23
  end
24
24
  end
25
25
  end
26
- end
26
+ end
@@ -13,12 +13,15 @@ module ArtiMark
13
13
  lines.shift
14
14
  lexed[:cls] << 'img-wrap' if lexed[:cls].size == 0
15
15
  src = lexed[:params][0].strip
16
- alt = lexed[:params][1].strip
16
+ alt = lexed[:params][1].strip if !lexed[:params][1].nil?
17
17
  caption = lexed[:text].strip
18
-
19
- r << "<div#{class_string(lexed[:cls])}><img src='#{src}' alt='#{alt}' />"
20
- r << "<p>#{caption}</p>" if !caption.nil? && caption.size > 0
18
+ caption_before = lexed[:named_params][:caption_before]
19
+
20
+ r << "<div#{ids_string(lexed[:ids])}#{class_string(lexed[:cls])}>"
21
+ r << "<p>#{caption}</p>" if !caption.nil? && caption.size > 0 && caption_before
22
+ r << "<img src='#{src}' alt='#{alt}' />"
23
+ r << "<p>#{caption}</p>" if !caption.nil? && caption.size > 0 && !caption_before
21
24
  r << "</div>\n"
22
25
  end
23
26
  end
24
- end
27
+ end
@@ -8,45 +8,70 @@ module ArtiMark
8
8
  gsub('"', "&quot;")
9
9
  end
10
10
 
11
- def class_string(cls_array)
12
- if cls_array.size == 0
11
+ def attr_string(the_array, attr_name)
12
+ if the_array.size == 0
13
13
  ''
14
14
  else
15
- " class='#{cls_array.join(' ')}'"
15
+ " #{attr_name}='#{the_array.join(' ')}'"
16
16
  end
17
17
  end
18
18
 
19
- def class_array(cls_part)
20
- cls_array = []
21
- if !cls_part.nil? && cls_part.size > 0
22
- cls_array = cls_part[1..-1].split('.')
19
+ def class_string(cls_array)
20
+ attr_string(cls_array, 'class')
21
+ end
22
+
23
+ def ids_string(ids_array)
24
+ attr_string(ids_array, 'id')
25
+ end
26
+ def attr_array(part, separator=".")
27
+ the_array = []
28
+ if !part.nil? && part.size > 0
29
+ the_array = part[1..-1].split(separator)
23
30
  end
24
- cls_array
31
+ the_array
32
+ end
33
+ def id_array(id_part)
34
+ attr_array(id_part, '#')
25
35
  end
26
36
 
27
- def param_array(param_part)
37
+ def class_array(cls_part)
38
+ attr_array(cls_part, '.')
39
+ end
40
+
41
+ def param_parse(param_part)
28
42
  r = []
43
+ named = {}
29
44
  if !param_part.nil? && param_part.size > 0
30
45
  r = param_part.split(',')
31
46
  end
32
- r
33
- end
47
+ r.each {
48
+ |param|
49
+ splitted = param.split(':', 2)
50
+ if (splitted.size == 2)
51
+ named[splitted[0].strip.to_sym] = splitted[1]
52
+ end
53
+ }
54
+ return r, named
55
+ end
34
56
 
35
57
  def lex_line_command(line)
36
- line =~ /^([\w\*;]+?)((?:\.[A-Za-z0-9_\-]+?)*)(?:\((.+?)\))?\s*:(.*?)$/
37
- return { :cmd => $1, :cls => class_array($2), :params => param_array($3), :text => $4 }
58
+ line =~ /^([\w\*;]+?)((?:\#[A-Za-z0-9_\-]+?)*)((?:\.[A-Za-z0-9_\-]+?)*)(?:\((.+?)\))?\s*:(.*?)$/
59
+ all_params, named_params = param_parse($4)
60
+ return { :cmd => $1, :ids => id_array($2), :cls => class_array($3), :params => all_params, :named_params => named_params, :text => $5 }
38
61
  end
39
62
 
40
63
  def lex_block_command(line)
41
- line =~ /^(\w+?)((?:\.[A-Za-z0-9_\-]+?)*)(?:\((.+?)\))?\s*(?:{(---)?)\s*$/
42
- return { :cmd => $1, :cls => class_array($2), :params => param_array($3), :delimiter => $4||''}
64
+ line =~ /^(\w+?)((?:\#[A-Za-z0-9_\-]+?)*)((?:\.[A-Za-z0-9_\-]+?)*)(?:\((.+?)\))?\s*(?:{(---)?)\s*$/
65
+ not_named, named = param_parse($4)
66
+ return { :cmd => $1, :ids => id_array($2), :cls => class_array($3), :params => not_named, :named_params => named, :delimiter => $5||''}
43
67
  end
44
68
 
45
69
  def replace_inline_commands(line, syntax, context)
46
- line.gsub(/\[(\w+?)((?:\.[A-Za-z0-9_\-]+?)*)(?:\((.+?)\))?\s*{(.*?)}\]/) {
70
+ line.gsub(/\[(\w+?)((?:\#[A-Za-z0-9_\-]+?)*)((?:\.[A-Za-z0-9_\-]+?)*)(?:\((.+?)\))?\s*{(.*?)}\]/) {
47
71
  |matched|
48
- lexed = {:cmd => $1, :cls => class_array($2), :params => param_array($3), :text => $4 }
49
- if !lexed[:cmd].nil?
72
+ not_named, named = param_parse($4)
73
+ lexed = {:cmd => $1, :ids => id_array($2), :cls => class_array($3), :params => not_named, :named_params => named, :text => $5 }
74
+ if !lexed[:cmd].nil?
50
75
  syntax.inline_handler.send(lexed[:cmd], lexed, context)
51
76
  else
52
77
  matched
@@ -55,4 +80,4 @@ module ArtiMark
55
80
  end
56
81
 
57
82
  end
58
- end
83
+ end
@@ -13,13 +13,13 @@ module ArtiMark
13
13
  throw 'something wrong here #{lines}' unless lexed[:cmd] =~ @command
14
14
  @markup = lexed[:cmd] if @markup.nil?
15
15
  r.enter_block(lexed)
16
- process_block(lines, r, syntax, lexed[:cls], lexed[:params])
16
+ process_block(lines, r, syntax, lexed[:ids], lexed[:cls], lexed[:params])
17
17
  r.exit_block(lexed)
18
18
  end
19
19
 
20
- def process_block(lines, r, syntax, cls_array, params)
20
+ def process_block(lines, r, syntax, ids_array, cls_array, params)
21
21
  previous_pgroup , r.enable_pgroup = r.enable_pgroup , false if params.member? 'wo-pgroup'
22
- r << "<#{@markup}#{class_string(cls_array)}>\n"
22
+ r << "<#{@markup}#{ids_string(ids_array)}#{class_string(cls_array)}>\n"
23
23
  while lines.size > 0
24
24
  if r.block_close? lines[0]
25
25
  lines.shift
@@ -8,11 +8,13 @@ module ArtiMark
8
8
  end
9
9
 
10
10
  def parse(lines, r, syntax)
11
- lexed = lex_line_command(lines[0])
11
+ line = escape_html lines[0]
12
+ line = replace_inline_commands(line, syntax, r)
13
+ lexed = lex_line_command(line)
12
14
  raise 'HeadParser called for #{lines[0]}' unless lexed[:cmd] =~ /h([1-6])/
13
15
  lines.shift
14
- r << "<#{lexed[:cmd]}#{class_string(lexed[:cls])}>#{escape_html lexed[:text].strip}</#{lexed[:cmd]}>\n"
16
+ r << "<#{lexed[:cmd]}#{ids_string(lexed[:ids])}#{class_string(lexed[:cls])}>#{lexed[:text].strip}</#{lexed[:cmd]}>\n"
15
17
  r.toc = lexed[:text].strip if lexed[:params].member? 'in-toc'
16
18
  end
17
19
  end
18
- end
20
+ end
@@ -10,7 +10,7 @@ module ArtiMark
10
10
 
11
11
  def parse(lines, r, syntax)
12
12
  lexed = lex_line_command(lines[0])
13
- r << "<#{@blockname}#{class_string(lexed[:cls])}>\n"
13
+ r << "<#{@blockname}#{ids_string(lexed[:ids])}#{class_string(lexed[:cls])}>\n"
14
14
  process_block(lines, r, syntax)
15
15
  r << "</#{@blockname}>\n"
16
16
  end
@@ -30,10 +30,9 @@ module ArtiMark
30
30
  parser.method(:parse)
31
31
  ]
32
32
  }
33
-
34
33
  def @inline_handler.l(lexed, context)
35
34
  ref = lexed[:params][0].strip
36
- "<a#{class_string(lexed[:cls])} href='#{ref}'>#{lexed[:text].strip}</a>"
35
+ "<a#{ids_string(lexed[:ids])}#{class_string(lexed[:cls])} href='#{ref}'>#{lexed[:text].strip}</a>"
37
36
  end
38
37
 
39
38
  def @inline_handler.link(lexed, context)
@@ -42,38 +41,38 @@ module ArtiMark
42
41
 
43
42
  def @inline_handler.s(lexed, context)
44
43
  cls, text = lexed[:cls], lexed[:text]
45
- "<span#{class_string(cls)}>#{text.strip}</a>"
44
+ "<span#{ids_string(lexed[:ids])}#{class_string(cls)}>#{text.strip}</span>"
46
45
  end
47
46
 
48
47
  def @inline_handler.img(lexed, context)
49
48
  cls, param, text = lexed[:cls], lexed[:params], lexed[:text]
50
- "<img#{class_string(cls)} src='#{text.strip}' alt='#{param.join(' ')}' />"
49
+ "<img#{ids_string(lexed[:ids])}#{class_string(cls)} src='#{text.strip}' alt='#{param.join(' ')}' />"
51
50
  end
52
51
 
53
52
  def @inline_handler.ruby(lexed, context)
54
53
  cls, param, text = lexed[:cls], lexed[:params], lexed[:text]
55
- "<ruby#{class_string(cls)}>#{text.strip}<rp>(</rp><rt>#{param.join}</rt><rp>)</rp></ruby>"
54
+ "<ruby#{ids_string(lexed[:ids])}#{class_string(cls)}>#{text.strip}<rp>(</rp><rt>#{param.join}</rt><rp>)</rp></ruby>"
56
55
  end
57
56
 
58
57
  def @inline_handler.tcy(lexed, context)
59
58
  cls, text = lexed[:cls], lexed[:text]
60
59
  cls << 'tcy'
61
- "<span#{class_string(cls)}>#{text.strip}</span>"
60
+ "<span#{ids_string(lexed[:ids])}#{class_string(cls)}>#{text.strip}</span>"
62
61
  end
63
62
 
64
63
  # universal inline command handler
65
64
  def @inline_handler.method_missing(cmd, *args)
66
- cls, text = args[0][:cls], args[0][:text]
67
- "<#{cmd}#{class_string(cls)}>#{text.strip}</#{cmd}>"
65
+ ids, cls, text = args[0][:ids], args[0][:cls], args[0][:text]
66
+ "<#{cmd}#{ids_string(ids)}#{class_string(cls)}>#{text.strip}</#{cmd}>"
68
67
  end
69
68
 
70
69
  def @linecommand_handler.p(lexed, context)
71
70
  cls, text = lexed[:cls], lexed[:text]
72
- "<p#{class_string(cls)}>#{text.strip}</p>\n"
71
+ "<p#{ids_string(lexed[:ids])}#{class_string(cls)}>#{text.strip}</p>\n"
73
72
  end
74
73
 
75
74
  def @linecommand_handler.stylesheets(lexed, context)
76
- context.stylesheets = lexed[:text].split(',').map {|s|
75
+ context.stylesheets = lexed[:text].split(',').map {|s|
77
76
  s.strip!
78
77
  if s =~ /^(.+?\.css):\((.+?)\)$/
79
78
  [$1, $2]
@@ -96,10 +95,8 @@ module ArtiMark
96
95
 
97
96
  #univarsal line command handler
98
97
  def @linecommand_handler.method_missing(cmd, *args)
99
- "<#{cmd}#{class_string(args[0][:cls])}>#{args[0][:text].strip}</#{cmd}>\n"
98
+ "<#{cmd}#{ids_string(args[0][:ids])}#{class_string(args[0][:cls])}>#{args[0][:text].strip}</#{cmd}>\n"
100
99
  end
101
-
102
-
103
100
  end
104
101
 
105
102
  def determine_parser(lines, opt = {})
@@ -117,6 +114,22 @@ module ArtiMark
117
114
  end
118
115
  end
119
116
 
117
+ def append_parser(parser)
118
+ if parser.respond_to?(:accept?) && parser.respond_to?(:parse)
119
+ @block_parsers << [
120
+ parser.method(:accept?),
121
+ parser.method(:parse)
122
+ ]
123
+ elsif parser[:accept?] && parser[:parse]
124
+ @block_parsers << [
125
+ parser[:accept?],
126
+ parser[:parse]
127
+ ]
128
+ else
129
+ raise 'parser should define accept? and parse' if !(parser.respond_to?(:accept?) && parser.respond_to?(:parse))
130
+ end
131
+ end
132
+
120
133
  def default_parser
121
134
  ParagraphParser.instance.method(:parse)
122
135
  end
@@ -1,3 +1,3 @@
1
1
  module ArtiMark
2
- VERSION = "0.0.1.beta3"
2
+ VERSION = "0.0.1.beta4"
3
3
  end
data/lib/arti_mark.rb CHANGED
@@ -25,13 +25,17 @@ module ArtiMark
25
25
  @syntax = Syntax.new
26
26
  @preprocessors = [
27
27
  Proc.new { |text| text.gsub(/\r?\n(\r?\n)+/, "\n\n") },
28
- Proc.new { |text| text.strip.gsub(/ /, ' ') } # Japanese full-width spece to half space width
28
+ Proc.new { |text| text.strip.gsub(/ /, ' ') } # convert Japanese full-width spece to normal space
29
29
  ]
30
30
  end
31
31
 
32
32
  def preprocessor(&block)
33
33
  @preprocessors << block
34
34
  end
35
+
36
+ def parser(parser)
37
+ @syntax.append_parser(parser)
38
+ end
35
39
 
36
40
  def convert(text)
37
41
  @preprocessors.each {
@@ -123,6 +123,18 @@ describe ArtiMark do
123
123
  )
124
124
  end
125
125
 
126
+ it 'should convert div with id and class' do
127
+ text = "d#thecontents.preface-one {\n h1: title.\n}"
128
+ artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
129
+ converted = artimark.convert(text)
130
+ body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
131
+ expect(body.element_children[0].selector_and_children).to eq(
132
+ ['div#thecontents.preface-one',
133
+ ['h1', 'title.']
134
+ ]
135
+ )
136
+ end
137
+
126
138
  it 'should convert nested div' do
127
139
  text = "d.preface {\n outer div. \n d.nested {\n nested!\n}\nouter div again.\n}"
128
140
  artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
@@ -222,6 +234,25 @@ describe ArtiMark do
222
234
  )
223
235
  end
224
236
 
237
+ it 'should handle block image with before caption' do
238
+ text = "this is normal line.\nimage(./image1.jpg, alt text, caption_before: true): caption text"
239
+ artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
240
+ converted = artimark.convert(text)
241
+ body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
242
+ expect(body.element_children[0].selector_and_children).to eq(
243
+ ['div.pgroup',
244
+ ['p', 'this is normal line.']
245
+ ]
246
+ )
247
+ expect(body.element_children[1].selector_and_children).to eq(
248
+ ['div.img-wrap',
249
+ ['p', 'caption text'],
250
+ ["img[src='./image1.jpg'][alt='alt text']", '']
251
+ ]
252
+ )
253
+ end
254
+
255
+
225
256
  it 'should handle page change article' do
226
257
  text = "this is start.\nnewpage(page changed):\nthis is second page.\nnewpage:\nand the third."
227
258
  artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
@@ -381,6 +412,14 @@ describe ArtiMark do
381
412
  expect(toc[3]).to eq('3rd chapter')
382
413
  end
383
414
 
415
+ it 'should convert inline command within line block' do
416
+ text = "h1: [tcy{20}]縦中横タイトル"
417
+ artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
418
+ converted = artimark.convert(text)
419
+ body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
420
+ expect(body.element_children[0].selector_and_children).to eq ['h1', ['span.tcy', '20'], '縦中横タイトル']
421
+ end
422
+
384
423
  it 'should handle ruby' do
385
424
  text = "[ruby(とんぼ){蜻蛉}]の[ruby(めがね){眼鏡}]はみずいろめがね"
386
425
  artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
@@ -568,6 +607,58 @@ describe ArtiMark do
568
607
  ]
569
608
  )
570
609
  end
610
+ it 'should handle custom block parser' do
611
+ class TheParser
612
+ include ArtiMark::BaseParser
613
+ def accept?(lines)
614
+ lex_line_command(lines[0])[:cmd] =~ /svg/
615
+ end
616
+ def parse(lines, r, syntax)
617
+ lexed = lex_line_command(lines[0])
618
+ lines.shift
619
+ src = lexed[:params][0].strip
620
+ caption = lexed[:text].strip
621
+ r << "<div><svg xmlns='http://www.w3.org/2000/svg' version='1.1' xmlns:xlink='http://www.w3.org/1999/xlink' width='100%' height='100%' viewBox='0 0 200 200' ><image xlink:href='#{src}' /><p>#{caption}</p></sgv></div>"
622
+ end
623
+ end
624
+ text="svg(img.jpg):caption"
625
+ artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
626
+ artimark.parser(TheParser.new)
627
+ converted = artimark.convert(text)
628
+ body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
629
+ expect(body.element_children[0].selector_and_children).to eq(
630
+ ['div',
631
+ ["svg[version='1.1'][width='100%'][height='100%'][viewBox='0 0 200 200']", ["image[href='img.jpg']", ''], ['p', 'caption']]
632
+ ]
633
+ )
634
+ end
635
+ it 'should handle custom block parser with named param' do
636
+ class TheParser
637
+ include ArtiMark::BaseParser
638
+ def accept?(lines)
639
+ lex_line_command(lines[0])[:cmd] =~ /svg/
640
+ end
641
+ def parse(lines, r, syntax)
642
+ lexed = lex_line_command(lines[0])
643
+ lines.shift
644
+ src = lexed[:params][0].strip
645
+ width = lexed[:named_params][:width]
646
+ height = lexed[:named_params][:height]
647
+ caption = lexed[:text].strip
648
+ r << "<div><svg xmlns='http://www.w3.org/2000/svg' version='1.1' xmlns:xlink='http://www.w3.org/1999/xlink' width='100%' height='100%' viewBox='0 0 200 200' ><image xlink:href='#{src}' width='#{width}' height='#{height}' /><p>#{caption}</p></sgv></div>"
649
+ end
650
+ end
651
+ text="svg(img.jpg, width:200, height:200):caption"
652
+ artimark = ArtiMark::Document.new(:lang => 'ja', :title => 'the document title')
653
+ artimark.parser(TheParser.new)
654
+ converted = artimark.convert(text)
655
+ body = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
656
+ expect(body.element_children[0].selector_and_children).to eq(
657
+ ['div',
658
+ ["svg[version='1.1'][width='100%'][height='100%'][viewBox='0 0 200 200']", ["image[href='img.jpg'][width='200'][height='200']", ''], ['p', 'caption']]
659
+ ]
660
+ )
661
+ end
571
662
  end
572
663
  end
573
664
 
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arti_mark
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.beta3
5
- prerelease: 6
4
+ version: 0.0.1.beta4
6
5
  platform: ruby
7
6
  authors:
8
7
  - KOJIMA Satoshi
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-04-14 00:00:00.000000000 Z
11
+ date: 2013-09-10 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rspec
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: nokogiri
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -66,7 +61,6 @@ files:
66
61
  - lib/arti_mark/definition_list_parser.rb
67
62
  - lib/arti_mark/div_parser.rb
68
63
  - lib/arti_mark/head_parser.rb
69
- - lib/arti_mark/head_parser_flymake.rb
70
64
  - lib/arti_mark/list_parser.rb
71
65
  - lib/arti_mark/ordered_list_parser.rb
72
66
  - lib/arti_mark/paragraph_parser.rb
@@ -82,27 +76,26 @@ files:
82
76
  - spec/spec_helper.rb
83
77
  homepage: ''
84
78
  licenses: []
79
+ metadata: {}
85
80
  post_install_message:
86
81
  rdoc_options: []
87
82
  require_paths:
88
83
  - lib
89
84
  required_ruby_version: !ruby/object:Gem::Requirement
90
- none: false
91
85
  requirements:
92
- - - ! '>='
86
+ - - '>='
93
87
  - !ruby/object:Gem::Version
94
88
  version: '0'
95
89
  required_rubygems_version: !ruby/object:Gem::Requirement
96
- none: false
97
90
  requirements:
98
- - - ! '>'
91
+ - - '>'
99
92
  - !ruby/object:Gem::Version
100
93
  version: 1.3.1
101
94
  requirements: []
102
95
  rubyforge_project:
103
- rubygems_version: 1.8.23
96
+ rubygems_version: 2.0.2
104
97
  signing_key:
105
- specification_version: 3
98
+ specification_version: 4
106
99
  summary: simple and customizable text markup language for EPUB
107
100
  test_files:
108
101
  - spec/arti_mark_spec.rb
@@ -1,18 +0,0 @@
1
- #require 'singleton'
2
-
3
- module ArtiMark
4
- class HeadParser
5
- include BaseParser, Singleton
6
- def accept?(lines)
7
- lex_line_command(lines[0])[:cmd] =~ /h[1-6]/
8
- end
9
-
10
- def parse(lines, r, syntax)
11
- lexed = lex_line_command(lines[0])
12
- raise 'HeadParser called for #{lines[0]}' unless lexed[:cmd] =~ /h([1-6])/
13
- lines.shift
14
- r << "<#{lexed[:cmd]}#{class_string(lexed[:cls])}>#{escape_html lexed[:text].strip}</#{lexed[:cmd]}>\n"
15
- r.toc = lexed[:text].strip if lexed[:params].member? 'in-toc'
16
- end
17
- end
18
- end