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
         
     |