kramdown 1.17.0 → 2.0.0.beta1
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.
Potentially problematic release.
This version of kramdown might be problematic. Click here for more details.
- checksums.yaml +4 -4
 - data/CONTRIBUTERS +4 -2
 - data/VERSION +1 -1
 - data/bin/kramdown +13 -14
 - data/lib/kramdown.rb +2 -2
 - data/lib/kramdown/converter.rb +6 -7
 - data/lib/kramdown/converter/base.rb +18 -29
 - data/lib/kramdown/converter/hash_ast.rb +4 -4
 - data/lib/kramdown/converter/html.rb +82 -67
 - data/lib/kramdown/converter/kramdown.rb +83 -78
 - data/lib/kramdown/converter/latex.rb +53 -47
 - data/lib/kramdown/converter/man.rb +22 -25
 - data/lib/kramdown/converter/math_engine/mathjax.rb +10 -10
 - data/lib/kramdown/converter/remove_html_tags.rb +2 -2
 - data/lib/kramdown/converter/syntax_highlighter.rb +2 -2
 - data/lib/kramdown/converter/syntax_highlighter/minted.rb +2 -2
 - data/lib/kramdown/converter/syntax_highlighter/rouge.rb +5 -5
 - data/lib/kramdown/converter/toc.rb +5 -5
 - data/lib/kramdown/document.rb +9 -11
 - data/lib/kramdown/element.rb +11 -9
 - data/lib/kramdown/error.rb +2 -2
 - data/lib/kramdown/options.rb +258 -384
 - data/lib/kramdown/parser.rb +2 -3
 - data/lib/kramdown/parser/base.rb +7 -6
 - data/lib/kramdown/parser/html.rb +103 -95
 - data/lib/kramdown/parser/kramdown.rb +32 -36
 - data/lib/kramdown/parser/kramdown/abbreviation.rb +13 -10
 - data/lib/kramdown/parser/kramdown/autolink.rb +3 -3
 - data/lib/kramdown/parser/kramdown/blank_line.rb +2 -2
 - data/lib/kramdown/parser/kramdown/block_boundary.rb +2 -2
 - data/lib/kramdown/parser/kramdown/blockquote.rb +4 -5
 - data/lib/kramdown/parser/kramdown/codeblock.rb +4 -5
 - data/lib/kramdown/parser/kramdown/codespan.rb +5 -5
 - data/lib/kramdown/parser/kramdown/emphasis.rb +6 -6
 - data/lib/kramdown/parser/kramdown/eob.rb +2 -2
 - data/lib/kramdown/parser/kramdown/escaped_chars.rb +2 -2
 - data/lib/kramdown/parser/kramdown/extensions.rb +31 -26
 - data/lib/kramdown/parser/kramdown/footnote.rb +7 -6
 - data/lib/kramdown/parser/kramdown/header.rb +6 -6
 - data/lib/kramdown/parser/kramdown/horizontal_rule.rb +3 -3
 - data/lib/kramdown/parser/kramdown/html.rb +31 -26
 - data/lib/kramdown/parser/kramdown/html_entity.rb +6 -5
 - data/lib/kramdown/parser/kramdown/line_break.rb +3 -3
 - data/lib/kramdown/parser/kramdown/link.rb +13 -11
 - data/lib/kramdown/parser/kramdown/list.rb +38 -40
 - data/lib/kramdown/parser/kramdown/math.rb +4 -5
 - data/lib/kramdown/parser/kramdown/paragraph.rb +5 -5
 - data/lib/kramdown/parser/kramdown/smart_quotes.rb +23 -23
 - data/lib/kramdown/parser/kramdown/table.rb +18 -17
 - data/lib/kramdown/parser/kramdown/typographic_symbol.rb +8 -8
 - data/lib/kramdown/parser/markdown.rb +9 -8
 - data/lib/kramdown/utils.rb +5 -6
 - data/lib/kramdown/utils/configurable.rb +7 -6
 - data/lib/kramdown/utils/entities.rb +286 -289
 - data/lib/kramdown/utils/html.rb +10 -12
 - data/lib/kramdown/utils/lru_cache.rb +3 -2
 - data/lib/kramdown/utils/string_scanner.rb +2 -3
 - data/lib/kramdown/utils/unidecoder.rb +8 -6
 - data/lib/kramdown/version.rb +3 -3
 - data/man/man1/kramdown.1 +3 -107
 - data/test/run_tests.rb +6 -6
 - data/test/test_files.rb +122 -298
 - data/test/test_location.rb +8 -30
 - data/test/test_string_scanner_kramdown.rb +6 -9
 - data/test/testcases/block/06_codeblock/highlighting-opts.html +6 -6
 - data/test/testcases/block/06_codeblock/highlighting.html +5 -6
 - data/test/testcases/block/06_codeblock/with_lang_in_fenced_block.options +1 -1
 - data/test/testcases/block/07_horizontal_rule/error.html +2 -2
 - data/test/testcases/block/09_html/html5_attributes.html +2 -0
 - data/test/testcases/block/09_html/html5_attributes.text +2 -0
 - data/test/testcases/block/09_html/html_to_native/typography.html +1 -1
 - data/test/testcases/block/09_html/simple.html +1 -1
 - data/test/testcases/block/12_extension/options3.html +7 -6
 - data/test/testcases/block/12_extension/options3.text +2 -2
 - data/test/testcases/span/01_link/inline.html +1 -1
 - data/test/testcases/span/01_link/reference.html +3 -3
 - data/test/testcases/span/03_codespan/highlighting.html +1 -1
 - data/test/testcases/span/text_substitutions/entities_as_char.html +1 -1
 - metadata +5 -234
 - data/Rakefile +0 -341
 - data/benchmark/benchmark.rb +0 -43
 - data/benchmark/benchmark.sh +0 -74
 - data/benchmark/generate_data.rb +0 -119
 - data/benchmark/mdbasics.text +0 -306
 - data/benchmark/mdsyntax.text +0 -888
 - data/benchmark/testing.sh +0 -12
 - data/benchmark/timing.sh +0 -10
 - data/doc/_design.scss +0 -441
 - data/doc/bg.png +0 -0
 - data/doc/default.scss +0 -217
 - data/doc/default.template +0 -62
 - data/doc/documentation.page +0 -84
 - data/doc/documentation.template +0 -36
 - data/doc/index.page +0 -113
 - data/doc/installation.page +0 -88
 - data/doc/links.markdown +0 -6
 - data/doc/metainfo +0 -13
 - data/doc/news.feed +0 -9
 - data/doc/news.page +0 -29
 - data/doc/options.page +0 -49
 - data/doc/quickref.page +0 -603
 - data/doc/sidebar.template +0 -22
 - data/doc/sitemap.sitemap +0 -5
 - data/doc/syntax.page +0 -1799
 - data/doc/tests.page +0 -104
 - data/doc/virtual +0 -14
 - data/lib/kramdown/converter/math_engine/itex2mml.rb +0 -39
 - data/lib/kramdown/converter/math_engine/katex.rb +0 -35
 - data/lib/kramdown/converter/math_engine/mathjaxnode.rb +0 -56
 - data/lib/kramdown/converter/math_engine/ritex.rb +0 -38
 - data/lib/kramdown/converter/math_engine/sskatex.rb +0 -97
 - data/lib/kramdown/converter/pdf.rb +0 -625
 - data/lib/kramdown/converter/syntax_highlighter/coderay.rb +0 -81
 - data/lib/kramdown/parser/gfm.rb +0 -188
 - data/lib/kramdown/utils/ordered_hash.rb +0 -18
 - data/setup.rb +0 -1585
 - data/test/testcases/block/07_horizontal_rule/error.html.19 +0 -7
 - data/test/testcases/block/09_html/html_to_native/typography.html.19 +0 -1
 - data/test/testcases/block/09_html/simple.html.19 +0 -60
 - data/test/testcases/block/15_math/itex2mml.html +0 -1
 - data/test/testcases/block/15_math/itex2mml.options +0 -1
 - data/test/testcases/block/15_math/itex2mml.text +0 -1
 - data/test/testcases/block/15_math/katex.html.19 +0 -2
 - data/test/testcases/block/15_math/katex.options +0 -1
 - data/test/testcases/block/15_math/katex.text +0 -2
 - data/test/testcases/block/15_math/mathjaxnode.html.19 +0 -27
 - data/test/testcases/block/15_math/mathjaxnode.options +0 -1
 - data/test/testcases/block/15_math/mathjaxnode.text +0 -1
 - data/test/testcases/block/15_math/mathjaxnode_notexhints.html.19 +0 -23
 - data/test/testcases/block/15_math/mathjaxnode_notexhints.options +0 -3
 - data/test/testcases/block/15_math/mathjaxnode_notexhints.text +0 -1
 - data/test/testcases/block/15_math/mathjaxnode_semantics.html.19 +0 -32
 - data/test/testcases/block/15_math/mathjaxnode_semantics.options +0 -3
 - data/test/testcases/block/15_math/mathjaxnode_semantics.text +0 -1
 - data/test/testcases/block/15_math/ritex.html +0 -1
 - data/test/testcases/block/15_math/ritex.options +0 -1
 - data/test/testcases/block/15_math/ritex.text +0 -1
 - data/test/testcases/block/15_math/sskatex.html.19 +0 -2
 - data/test/testcases/block/15_math/sskatex.options +0 -1
 - data/test/testcases/block/15_math/sskatex.text +0 -2
 - data/test/testcases/span/01_link/inline.html.19 +0 -46
 - data/test/testcases/span/01_link/reference.html.19 +0 -37
 - data/test/testcases/span/math/itex2mml.html +0 -1
 - data/test/testcases/span/math/itex2mml.options +0 -1
 - data/test/testcases/span/math/itex2mml.text +0 -1
 - data/test/testcases/span/math/katex.html.19 +0 -1
 - data/test/testcases/span/math/katex.options +0 -1
 - data/test/testcases/span/math/katex.text +0 -1
 - data/test/testcases/span/math/mathjaxnode.html.19 +0 -27
 - data/test/testcases/span/math/mathjaxnode.options +0 -1
 - data/test/testcases/span/math/mathjaxnode.text +0 -1
 - data/test/testcases/span/math/ritex.html +0 -1
 - data/test/testcases/span/math/ritex.options +0 -1
 - data/test/testcases/span/math/ritex.text +0 -1
 - data/test/testcases/span/math/sskatex.html.19 +0 -1
 - data/test/testcases/span/math/sskatex.options +0 -1
 - data/test/testcases/span/math/sskatex.text +0 -1
 - data/test/testcases/span/text_substitutions/entities_as_char.html.19 +0 -1
 - data/test/testcases_gfm/atx_header.html +0 -3
 - data/test/testcases_gfm/atx_header.text +0 -3
 - data/test/testcases_gfm/backticks_disable_highlighting.html +0 -2
 - data/test/testcases_gfm/backticks_disable_highlighting.options +0 -1
 - data/test/testcases_gfm/backticks_disable_highlighting.text +0 -3
 - data/test/testcases_gfm/backticks_syntax.html +0 -20
 - data/test/testcases_gfm/backticks_syntax.text +0 -19
 - data/test/testcases_gfm/codeblock_fenced.html +0 -20
 - data/test/testcases_gfm/codeblock_fenced.options +0 -1
 - data/test/testcases_gfm/codeblock_fenced.text +0 -21
 - data/test/testcases_gfm/hard_line_breaks.html +0 -3
 - data/test/testcases_gfm/hard_line_breaks.text +0 -3
 - data/test/testcases_gfm/hard_line_breaks_off.html +0 -2
 - data/test/testcases_gfm/hard_line_breaks_off.options +0 -1
 - data/test/testcases_gfm/hard_line_breaks_off.text +0 -2
 - data/test/testcases_gfm/header_ids.html +0 -27
 - data/test/testcases_gfm/header_ids.html.19 +0 -27
 - data/test/testcases_gfm/header_ids.options +0 -1
 - data/test/testcases_gfm/header_ids.text +0 -27
 - data/test/testcases_gfm/header_ids_with_prefix.html +0 -3
 - data/test/testcases_gfm/header_ids_with_prefix.options +0 -2
 - data/test/testcases_gfm/header_ids_with_prefix.text +0 -3
 - data/test/testcases_gfm/no_typographic.html +0 -3
 - data/test/testcases_gfm/no_typographic.html.19 +0 -3
 - data/test/testcases_gfm/no_typographic.options +0 -1
 - data/test/testcases_gfm/no_typographic.text +0 -3
 - data/test/testcases_gfm/paragraph_end-disabled.html +0 -31
 - data/test/testcases_gfm/paragraph_end-disabled.options +0 -1
 - data/test/testcases_gfm/paragraph_end-disabled.text +0 -27
 - data/test/testcases_gfm/paragraph_end.html +0 -38
 - data/test/testcases_gfm/paragraph_end.text +0 -27
 - data/test/testcases_gfm/strikethrough.html +0 -27
 - data/test/testcases_gfm/strikethrough.html.19 +0 -27
 - data/test/testcases_gfm/strikethrough.text +0 -27
 - data/test/testcases_gfm/task_list.html +0 -40
 - data/test/testcases_gfm/task_list.text +0 -26
 - data/test/testcases_gfm/two_para_hard_line_breaks.html +0 -4
 - data/test/testcases_gfm/two_para_hard_line_breaks.text +0 -4
 
| 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # -*- coding: utf-8 -*-
         
     | 
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8; frozen_string_literal: true -*-
         
     | 
| 
       2 
2 
     | 
    
         
             
            #
         
     | 
| 
       3 
3 
     | 
    
         
             
            #--
         
     | 
| 
       4 
     | 
    
         
            -
            # Copyright (C) 2009- 
     | 
| 
      
 4 
     | 
    
         
            +
            # Copyright (C) 2009-2019 Thomas Leitner <t_leitner@gmx.at>
         
     | 
| 
       5 
5 
     | 
    
         
             
            #
         
     | 
| 
       6 
6 
     | 
    
         
             
            # This file is part of kramdown which is licensed under the MIT.
         
     | 
| 
       7 
7 
     | 
    
         
             
            #++
         
     | 
| 
         @@ -17,14 +17,14 @@ module Kramdown 
     | 
|
| 
       17 
17 
     | 
    
         
             
                # man-pages(7) for information regarding the output.
         
     | 
| 
       18 
18 
     | 
    
         
             
                class Man < Base
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
                  def convert(el, opts = {: 
     | 
| 
      
 20 
     | 
    
         
            +
                  def convert(el, opts = {indent: 0, result: +''}) #:nodoc:
         
     | 
| 
       21 
21 
     | 
    
         
             
                    send("convert_#{el.type}", el, opts)
         
     | 
| 
       22 
22 
     | 
    
         
             
                  end
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
                  private
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
26 
     | 
    
         
             
                  def inner(el, opts, use = :all)
         
     | 
| 
       27 
     | 
    
         
            -
                    arr = el.children.reject {|e| e.type == :blank}
         
     | 
| 
      
 27 
     | 
    
         
            +
                    arr = el.children.reject {|e| e.type == :blank }
         
     | 
| 
       28 
28 
     | 
    
         
             
                    arr.each_with_index do |inner_el, index|
         
     | 
| 
       29 
29 
     | 
    
         
             
                      next if use == :rest && index == 0
         
     | 
| 
       30 
30 
     | 
    
         
             
                      break if use == :first && index > 0
         
     | 
| 
         @@ -39,15 +39,15 @@ module Kramdown 
     | 
|
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
                  def convert_root(el, opts)
         
     | 
| 
       41 
41 
     | 
    
         
             
                    @title_done = false
         
     | 
| 
       42 
     | 
    
         
            -
                    opts[:result] = ".\\\" generated by kramdown\n"
         
     | 
| 
      
 42 
     | 
    
         
            +
                    opts[:result] = +".\\\" generated by kramdown\n"
         
     | 
| 
       43 
43 
     | 
    
         
             
                    inner(el, opts)
         
     | 
| 
       44 
44 
     | 
    
         
             
                    opts[:result]
         
     | 
| 
       45 
45 
     | 
    
         
             
                  end
         
     | 
| 
       46 
46 
     | 
    
         | 
| 
       47 
47 
     | 
    
         
             
                  def convert_blank(*)
         
     | 
| 
       48 
48 
     | 
    
         
             
                  end
         
     | 
| 
       49 
     | 
    
         
            -
                  alias  
     | 
| 
       50 
     | 
    
         
            -
                  alias  
     | 
| 
      
 49 
     | 
    
         
            +
                  alias convert_hr convert_blank
         
     | 
| 
      
 50 
     | 
    
         
            +
                  alias convert_xml_pi convert_blank
         
     | 
| 
       51 
51 
     | 
    
         | 
| 
       52 
52 
     | 
    
         
             
                  def convert_p(el, opts)
         
     | 
| 
       53 
53 
     | 
    
         
             
                    if (opts[:index] != 0 && opts[:prev].type != :header) ||
         
     | 
| 
         @@ -104,8 +104,8 @@ module Kramdown 
     | 
|
| 
       104 
104 
     | 
    
         
             
                    inner(el, opts)
         
     | 
| 
       105 
105 
     | 
    
         
             
                    opts[:result] << macro("PD") if compact
         
     | 
| 
       106 
106 
     | 
    
         
             
                  end
         
     | 
| 
       107 
     | 
    
         
            -
                  alias  
     | 
| 
       108 
     | 
    
         
            -
                  alias  
     | 
| 
      
 107 
     | 
    
         
            +
                  alias convert_dl convert_ul
         
     | 
| 
      
 108 
     | 
    
         
            +
                  alias convert_ol convert_ul
         
     | 
| 
       109 
109 
     | 
    
         | 
| 
       110 
110 
     | 
    
         
             
                  def convert_li(el, opts)
         
     | 
| 
       111 
111 
     | 
    
         
             
                    sym = (opts[:parent].type == :ul ? '\(bu' : "#{opts[:index] + 1}.")
         
     | 
| 
         @@ -134,19 +134,19 @@ module Kramdown 
     | 
|
| 
       134 
134 
     | 
    
         
             
                    opts[:result] << macro("sp") if opts[:next] && opts[:next].type == :dd
         
     | 
| 
       135 
135 
     | 
    
         
             
                  end
         
     | 
| 
       136 
136 
     | 
    
         | 
| 
       137 
     | 
    
         
            -
                  TABLE_CELL_ALIGNMENT = {: 
     | 
| 
      
 137 
     | 
    
         
            +
                  TABLE_CELL_ALIGNMENT = {left: 'l', center: 'c', right: 'r', default: 'l'}
         
     | 
| 
       138 
138 
     | 
    
         | 
| 
       139 
139 
     | 
    
         
             
                  def convert_table(el, opts)
         
     | 
| 
       140 
     | 
    
         
            -
                    opts[:alignment] = el.options[:alignment].map {|a| TABLE_CELL_ALIGNMENT[a]}
         
     | 
| 
      
 140 
     | 
    
         
            +
                    opts[:alignment] = el.options[:alignment].map {|a| TABLE_CELL_ALIGNMENT[a] }
         
     | 
| 
       141 
141 
     | 
    
         
             
                    table_options = ["box"]
         
     | 
| 
       142 
142 
     | 
    
         
             
                    table_options << "center" if el.attr['class'] =~ /\bcenter\b/
         
     | 
| 
       143 
     | 
    
         
            -
                    opts[:result] << macro("TS") << "#{table_options.join( 
     | 
| 
      
 143 
     | 
    
         
            +
                    opts[:result] << macro("TS") << "#{table_options.join(' ')} ;\n"
         
     | 
| 
       144 
144 
     | 
    
         
             
                    inner(el, opts)
         
     | 
| 
       145 
145 
     | 
    
         
             
                    opts[:result] << macro("TE") << macro("sp")
         
     | 
| 
       146 
146 
     | 
    
         
             
                  end
         
     | 
| 
       147 
147 
     | 
    
         | 
| 
       148 
148 
     | 
    
         
             
                  def convert_thead(el, opts)
         
     | 
| 
       149 
     | 
    
         
            -
                    opts[:result] << opts[:alignment].map {|a| "#{a}b"}.join(' ') << " .\n"
         
     | 
| 
      
 149 
     | 
    
         
            +
                    opts[:result] << opts[:alignment].map {|a| "#{a}b" }.join(' ') << " .\n"
         
     | 
| 
       150 
150 
     | 
    
         
             
                    inner(el, opts)
         
     | 
| 
       151 
151 
     | 
    
         
             
                    opts[:result] << "=\n"
         
     | 
| 
       152 
152 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -169,7 +169,7 @@ module Kramdown 
     | 
|
| 
       169 
169 
     | 
    
         | 
| 
       170 
170 
     | 
    
         
             
                  def convert_td(el, opts)
         
     | 
| 
       171 
171 
     | 
    
         
             
                    result = opts[:result]
         
     | 
| 
       172 
     | 
    
         
            -
                    opts[:result] = ''
         
     | 
| 
      
 172 
     | 
    
         
            +
                    opts[:result] = +''
         
     | 
| 
       173 
173 
     | 
    
         
             
                    inner(el, opts)
         
     | 
| 
       174 
174 
     | 
    
         
             
                    if opts[:result] =~ /\n/
         
     | 
| 
       175 
175 
     | 
    
         
             
                      warning("Table cells using links are not supported")
         
     | 
| 
         @@ -186,8 +186,7 @@ module Kramdown 
     | 
|
| 
       186 
186 
     | 
    
         
             
                  def convert_xml_comment(el, opts)
         
     | 
| 
       187 
187 
     | 
    
         
             
                    newline(opts[:result]) << ".\"#{escape(el.value, true).rstrip.gsub(/\n/, "\n.\"")}\n"
         
     | 
| 
       188 
188 
     | 
    
         
             
                  end
         
     | 
| 
       189 
     | 
    
         
            -
                  alias  
     | 
| 
       190 
     | 
    
         
            -
             
     | 
| 
      
 189 
     | 
    
         
            +
                  alias convert_comment convert_xml_comment
         
     | 
| 
       191 
190 
     | 
    
         | 
| 
       192 
191 
     | 
    
         
             
                  def convert_a(el, opts)
         
     | 
| 
       193 
192 
     | 
    
         
             
                    if el.children.size == 1 && el.children[0].type == :text &&
         
     | 
| 
         @@ -203,7 +202,7 @@ module Kramdown 
     | 
|
| 
       203 
202 
     | 
    
         
             
                    end
         
     | 
| 
       204 
203 
     | 
    
         
             
                  end
         
     | 
| 
       205 
204 
     | 
    
         | 
| 
       206 
     | 
    
         
            -
                  def convert_img( 
     | 
| 
      
 205 
     | 
    
         
            +
                  def convert_img(_el, _opts)
         
     | 
| 
       207 
206 
     | 
    
         
             
                    warning("Images are not supported")
         
     | 
| 
       208 
207 
     | 
    
         
             
                  end
         
     | 
| 
       209 
208 
     | 
    
         | 
| 
         @@ -223,7 +222,7 @@ module Kramdown 
     | 
|
| 
       223 
222 
     | 
    
         
             
                    opts[:result] << "\\fB#{escape(el.value)}\\fP"
         
     | 
| 
       224 
223 
     | 
    
         
             
                  end
         
     | 
| 
       225 
224 
     | 
    
         | 
| 
       226 
     | 
    
         
            -
                  def convert_br( 
     | 
| 
      
 225 
     | 
    
         
            +
                  def convert_br(_el, opts)
         
     | 
| 
       227 
226 
     | 
    
         
             
                    newline(opts[:result]) << macro("br")
         
     | 
| 
       228 
227 
     | 
    
         
             
                  end
         
     | 
| 
       229 
228 
     | 
    
         | 
| 
         @@ -247,11 +246,9 @@ module Kramdown 
     | 
|
| 
       247 
246 
     | 
    
         
             
                    warning("Raw content is not supported")
         
     | 
| 
       248 
247 
     | 
    
         
             
                  end
         
     | 
| 
       249 
248 
     | 
    
         | 
| 
       250 
     | 
    
         
            -
             
     | 
| 
       251 
     | 
    
         
            -
             
     | 
| 
       252 
249 
     | 
    
         
             
                  def convert_text(el, opts)
         
     | 
| 
       253 
250 
     | 
    
         
             
                    text = escape(el.value)
         
     | 
| 
       254 
     | 
    
         
            -
                    text.lstrip! if opts[:result][-1] ==  
     | 
| 
      
 251 
     | 
    
         
            +
                    text.lstrip! if opts[:result][-1] == "\n"
         
     | 
| 
       255 
252 
     | 
    
         
             
                    opts[:result] << text
         
     | 
| 
       256 
253 
     | 
    
         
             
                  end
         
     | 
| 
       257 
254 
     | 
    
         | 
| 
         @@ -264,8 +261,8 @@ module Kramdown 
     | 
|
| 
       264 
261 
     | 
    
         
             
                  end
         
     | 
| 
       265 
262 
     | 
    
         | 
| 
       266 
263 
     | 
    
         
             
                  TYPOGRAPHIC_SYMS_MAP = {
         
     | 
| 
       267 
     | 
    
         
            -
                    : 
     | 
| 
       268 
     | 
    
         
            -
                    : 
     | 
| 
      
 264 
     | 
    
         
            +
                    mdash: '\(em', ndash: '\(em', hellip: '\.\.\.',
         
     | 
| 
      
 265 
     | 
    
         
            +
                    laquo_space: '\[Fo]', raquo_space: '\[Fc]', laquo: '\[Fo]', raquo: '\[Fc]'
         
     | 
| 
       269 
266 
     | 
    
         
             
                  }
         
     | 
| 
       270 
267 
     | 
    
         | 
| 
       271 
268 
     | 
    
         
             
                  def convert_typographic_sym(el, opts)
         
     | 
| 
         @@ -277,7 +274,7 @@ module Kramdown 
     | 
|
| 
       277 
274 
     | 
    
         
             
                  end
         
     | 
| 
       278 
275 
     | 
    
         | 
| 
       279 
276 
     | 
    
         
             
                  def newline(text)
         
     | 
| 
       280 
     | 
    
         
            -
                    text << "\n" unless text[-1] ==  
     | 
| 
      
 277 
     | 
    
         
            +
                    text << "\n" unless text[-1] == "\n"
         
     | 
| 
       281 
278 
     | 
    
         
             
                    text
         
     | 
| 
       282 
279 
     | 
    
         
             
                  end
         
     | 
| 
       283 
280 
     | 
    
         | 
| 
         @@ -289,7 +286,7 @@ module Kramdown 
     | 
|
| 
       289 
286 
     | 
    
         
             
                    text = (preserve_whitespace ? text.dup : text.gsub(/\s+/, ' '))
         
     | 
| 
       290 
287 
     | 
    
         
             
                    text.gsub!('\\', "\\e")
         
     | 
| 
       291 
288 
     | 
    
         
             
                    text.gsub!(/^\./, '\\\\&.')
         
     | 
| 
       292 
     | 
    
         
            -
                    text.gsub!(/[.'-]/) {|m| "\\#{m}"}
         
     | 
| 
      
 289 
     | 
    
         
            +
                    text.gsub!(/[.'-]/) {|m| "\\#{m}" }
         
     | 
| 
       293 
290 
     | 
    
         
             
                    text
         
     | 
| 
       294 
291 
     | 
    
         
             
                  end
         
     | 
| 
       295 
292 
     | 
    
         | 
| 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # -*- coding: utf-8 -*-
         
     | 
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8; frozen_string_literal: true -*-
         
     | 
| 
       2 
2 
     | 
    
         
             
            #
         
     | 
| 
       3 
3 
     | 
    
         
             
            #--
         
     | 
| 
       4 
     | 
    
         
            -
            # Copyright (C) 2009- 
     | 
| 
      
 4 
     | 
    
         
            +
            # Copyright (C) 2009-2019 Thomas Leitner <t_leitner@gmx.at>
         
     | 
| 
       5 
5 
     | 
    
         
             
            #
         
     | 
| 
       6 
6 
     | 
    
         
             
            # This file is part of kramdown which is licensed under the MIT.
         
     | 
| 
       7 
7 
     | 
    
         
             
            #++
         
     | 
| 
         @@ -17,17 +17,17 @@ module Kramdown::Converter::MathEngine 
     | 
|
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
                def self.call(converter, el, opts)
         
     | 
| 
       19 
19 
     | 
    
         
             
                  type = el.options[:category]
         
     | 
| 
       20 
     | 
    
         
            -
                  text = (el.value =~ /<|&/ ? "% <![CDATA[\n#{el.value} %]]>" : el.value)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  text = (el.value =~ /<|&/ ? "% <![CDATA[\n#{el.value} %]]>" : el.value).dup
         
     | 
| 
       21 
21 
     | 
    
         
             
                  text.gsub!(/<\/?script>?/, '')
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
                  preview = preview_string(converter, el, opts)
         
     | 
| 
      
 23 
     | 
    
         
            +
                  preview = preview_string(converter, el, opts).dup
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
                  attr = {: 
     | 
| 
       26 
     | 
    
         
            -
                  if type == :block
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
      
 25 
     | 
    
         
            +
                  attr = {type: "math/tex#{type == :block ? '; mode=display' : ''}"}
         
     | 
| 
      
 26 
     | 
    
         
            +
                  preview << if type == :block
         
     | 
| 
      
 27 
     | 
    
         
            +
                               converter.format_as_block_html('script', attr, text, opts[:indent])
         
     | 
| 
      
 28 
     | 
    
         
            +
                             else
         
     | 
| 
      
 29 
     | 
    
         
            +
                               converter.format_as_span_html('script', attr, text)
         
     | 
| 
      
 30 
     | 
    
         
            +
                             end
         
     | 
| 
       31 
31 
     | 
    
         
             
                end
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
       33 
33 
     | 
    
         
             
                def self.preview_string(converter, el, opts)
         
     | 
| 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # -*- coding: utf-8 -*-
         
     | 
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8; frozen_string_literal: true -*-
         
     | 
| 
       2 
2 
     | 
    
         
             
            #
         
     | 
| 
       3 
3 
     | 
    
         
             
            #--
         
     | 
| 
       4 
     | 
    
         
            -
            # Copyright (C) 2009- 
     | 
| 
      
 4 
     | 
    
         
            +
            # Copyright (C) 2009-2019 Thomas Leitner <t_leitner@gmx.at>
         
     | 
| 
       5 
5 
     | 
    
         
             
            #
         
     | 
| 
       6 
6 
     | 
    
         
             
            # This file is part of kramdown which is licensed under the MIT.
         
     | 
| 
       7 
7 
     | 
    
         
             
            #++
         
     | 
| 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # -*- coding: utf-8 -*-
         
     | 
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8; frozen_string_literal: true -*-
         
     | 
| 
       2 
2 
     | 
    
         
             
            #
         
     | 
| 
       3 
3 
     | 
    
         
             
            #--
         
     | 
| 
       4 
     | 
    
         
            -
            # Copyright (C) 2009- 
     | 
| 
      
 4 
     | 
    
         
            +
            # Copyright (C) 2009-2019 Thomas Leitner <t_leitner@gmx.at>
         
     | 
| 
       5 
5 
     | 
    
         
             
            #
         
     | 
| 
       6 
6 
     | 
    
         
             
            # This file is part of kramdown which is licensed under the MIT.
         
     | 
| 
       7 
7 
     | 
    
         
             
            #++
         
     | 
| 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # -*- coding: utf-8 -*-
         
     | 
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8; frozen_string_literal: true -*-
         
     | 
| 
       2 
2 
     | 
    
         
             
            #
         
     | 
| 
       3 
3 
     | 
    
         
             
            #--
         
     | 
| 
       4 
     | 
    
         
            -
            # Copyright (C) 2009- 
     | 
| 
      
 4 
     | 
    
         
            +
            # Copyright (C) 2009-2019 Thomas Leitner <t_leitner@gmx.at>
         
     | 
| 
       5 
5 
     | 
    
         
             
            #
         
     | 
| 
       6 
6 
     | 
    
         
             
            # This file is part of kramdown which is licensed under the MIT.
         
     | 
| 
       7 
7 
     | 
    
         
             
            #++
         
     | 
| 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # -*- coding: utf-8 -*-
         
     | 
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8; frozen_string_literal: true -*-
         
     | 
| 
       2 
2 
     | 
    
         
             
            #
         
     | 
| 
       3 
3 
     | 
    
         
             
            #--
         
     | 
| 
       4 
     | 
    
         
            -
            # Copyright (C) 2009- 
     | 
| 
      
 4 
     | 
    
         
            +
            # Copyright (C) 2009-2019 Thomas Leitner <t_leitner@gmx.at>
         
     | 
| 
       5 
5 
     | 
    
         
             
            #
         
     | 
| 
       6 
6 
     | 
    
         
             
            # This file is part of kramdown which is licensed under the MIT.
         
     | 
| 
       7 
7 
     | 
    
         
             
            #++
         
     | 
| 
         @@ -18,14 +18,14 @@ module Kramdown::Converter::SyntaxHighlighter 
     | 
|
| 
       18 
18 
     | 
    
         
             
                  # Highlighting via Rouge is available if this constant is +true+.
         
     | 
| 
       19 
19 
     | 
    
         
             
                  AVAILABLE = true
         
     | 
| 
       20 
20 
     | 
    
         
             
                rescue LoadError, SyntaxError
         
     | 
| 
       21 
     | 
    
         
            -
                  AVAILABLE = false 
     | 
| 
      
 21 
     | 
    
         
            +
                  AVAILABLE = false # :nodoc:
         
     | 
| 
       22 
22 
     | 
    
         
             
                end
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
                def self.call(converter, text, lang, type, call_opts)
         
     | 
| 
       25 
25 
     | 
    
         
             
                  opts = options(converter, type)
         
     | 
| 
       26 
26 
     | 
    
         
             
                  call_opts[:default_lang] = opts[:default_lang]
         
     | 
| 
       27 
27 
     | 
    
         
             
                  lexer = ::Rouge::Lexer.find_fancy(lang || opts[:default_lang], text)
         
     | 
| 
       28 
     | 
    
         
            -
                  return nil if opts[:disable] || !lexer
         
     | 
| 
      
 28 
     | 
    
         
            +
                  return nil if opts[:disable] || !lexer || lexer.tag == "plaintext"
         
     | 
| 
       29 
29 
     | 
    
         
             
                  opts[:css_class] ||= 'highlight' # For backward compatibility when using Rouge 2.0
         
     | 
| 
       30 
30 
     | 
    
         
             
                  formatter = formatter_class(opts).new(opts)
         
     | 
| 
       31 
31 
     | 
    
         
             
                  formatter.format(lexer.lex(text))
         
     | 
| 
         @@ -50,7 +50,7 @@ module Kramdown::Converter::SyntaxHighlighter 
     | 
|
| 
       50 
50 
     | 
    
         
             
                    end
         
     | 
| 
       51 
51 
     | 
    
         
             
                  end
         
     | 
| 
       52 
52 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
                  cache[:span] = opts.merge(span_opts).update(: 
     | 
| 
      
 53 
     | 
    
         
            +
                  cache[:span] = opts.merge(span_opts).update(wrap: false)
         
     | 
| 
       54 
54 
     | 
    
         
             
                  cache[:block] = opts.merge(block_opts)
         
     | 
| 
       55 
55 
     | 
    
         
             
                end
         
     | 
| 
       56 
56 
     | 
    
         | 
| 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # -*- coding: utf-8 -*-
         
     | 
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8; frozen_string_literal: true -*-
         
     | 
| 
       2 
2 
     | 
    
         
             
            #
         
     | 
| 
       3 
3 
     | 
    
         
             
            #--
         
     | 
| 
       4 
     | 
    
         
            -
            # Copyright (C) 2009- 
     | 
| 
      
 4 
     | 
    
         
            +
            # Copyright (C) 2009-2019 Thomas Leitner <t_leitner@gmx.at>
         
     | 
| 
       5 
5 
     | 
    
         
             
            #
         
     | 
| 
       6 
6 
     | 
    
         
             
            # This file is part of kramdown which is licensed under the MIT.
         
     | 
| 
       7 
7 
     | 
    
         
             
            #++
         
     | 
| 
         @@ -37,7 +37,7 @@ module Kramdown 
     | 
|
| 
       37 
37 
     | 
    
         
             
                      attr['id'] = generate_id(el.options[:raw_text]) if @options[:auto_ids] && !attr['id']
         
     | 
| 
       38 
38 
     | 
    
         
             
                      add_to_toc(el, attr['id']) if attr['id']
         
     | 
| 
       39 
39 
     | 
    
         
             
                    else
         
     | 
| 
       40 
     | 
    
         
            -
                      el.children.each {|child| convert(child)}
         
     | 
| 
      
 40 
     | 
    
         
            +
                      el.children.each {|child| convert(child) }
         
     | 
| 
       41 
41 
     | 
    
         
             
                    end
         
     | 
| 
       42 
42 
     | 
    
         
             
                    @toc
         
     | 
| 
       43 
43 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -45,10 +45,10 @@ module Kramdown 
     | 
|
| 
       45 
45 
     | 
    
         
             
                  private
         
     | 
| 
       46 
46 
     | 
    
         | 
| 
       47 
47 
     | 
    
         
             
                  def add_to_toc(el, id)
         
     | 
| 
       48 
     | 
    
         
            -
                    toc_element = Element.new(:toc, el, : 
     | 
| 
      
 48 
     | 
    
         
            +
                    toc_element = Element.new(:toc, el, id: id)
         
     | 
| 
       49 
49 
     | 
    
         | 
| 
       50 
50 
     | 
    
         
             
                    success = false
         
     | 
| 
       51 
     | 
    
         
            -
                     
     | 
| 
      
 51 
     | 
    
         
            +
                    until success
         
     | 
| 
       52 
52 
     | 
    
         
             
                      if @stack.empty?
         
     | 
| 
       53 
53 
     | 
    
         
             
                        @toc.children << toc_element
         
     | 
| 
       54 
54 
     | 
    
         
             
                        @stack << toc_element
         
     | 
    
        data/lib/kramdown/document.rb
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # -*- coding: utf-8 -*-
         
     | 
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8; frozen_string_literal: true -*-
         
     | 
| 
       2 
2 
     | 
    
         
             
            #
         
     | 
| 
       3 
3 
     | 
    
         
             
            #--
         
     | 
| 
       4 
     | 
    
         
            -
            # Copyright (C) 2009- 
     | 
| 
      
 4 
     | 
    
         
            +
            # Copyright (C) 2009-2019 Thomas Leitner <t_leitner@gmx.at>
         
     | 
| 
       5 
5 
     | 
    
         
             
            #
         
     | 
| 
       6 
6 
     | 
    
         
             
            # This file is part of kramdown which is licensed under the MIT.
         
     | 
| 
       7 
7 
     | 
    
         
             
            #++
         
     | 
| 
         @@ -47,16 +47,15 @@ module Kramdown 
     | 
|
| 
       47 
47 
     | 
    
         | 
| 
       48 
48 
     | 
    
         
             
              # Return the data directory for kramdown.
         
     | 
| 
       49 
49 
     | 
    
         
             
              def self.data_dir
         
     | 
| 
       50 
     | 
    
         
            -
                unless defined?( 
     | 
| 
      
 50 
     | 
    
         
            +
                unless defined?(@data_dir)
         
     | 
| 
       51 
51 
     | 
    
         
             
                  require 'rbconfig'
         
     | 
| 
       52 
     | 
    
         
            -
                   
     | 
| 
       53 
     | 
    
         
            -
                   
     | 
| 
       54 
     | 
    
         
            -
                  raise "kramdown data directory not found! This is a bug, please report it!" unless File.directory?( 
     | 
| 
      
 52 
     | 
    
         
            +
                  @data_dir = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'data', 'kramdown'))
         
     | 
| 
      
 53 
     | 
    
         
            +
                  @data_dir = File.expand_path(File.join(RbConfig::CONFIG["datadir"], "kramdown")) unless File.exist?(@data_dir)
         
     | 
| 
      
 54 
     | 
    
         
            +
                  raise "kramdown data directory not found! This is a bug, please report it!" unless File.directory?(@data_dir)
         
     | 
| 
       55 
55 
     | 
    
         
             
                end
         
     | 
| 
       56 
     | 
    
         
            -
                 
     | 
| 
      
 56 
     | 
    
         
            +
                @data_dir
         
     | 
| 
       57 
57 
     | 
    
         
             
              end
         
     | 
| 
       58 
58 
     | 
    
         | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
59 
     | 
    
         
             
              # The main interface to kramdown.
         
     | 
| 
       61 
60 
     | 
    
         
             
              #
         
     | 
| 
       62 
61 
     | 
    
         
             
              # This class provides a one-stop-shop for using kramdown to convert text into various output
         
     | 
| 
         @@ -84,7 +83,6 @@ module Kramdown 
     | 
|
| 
       84 
83 
     | 
    
         
             
                # ::new) and the conversion phase.
         
     | 
| 
       85 
84 
     | 
    
         
             
                attr_reader :warnings
         
     | 
| 
       86 
85 
     | 
    
         | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
86 
     | 
    
         
             
                # Create a new Kramdown document from the string +source+ and use the provided +options+. The
         
     | 
| 
       89 
87 
     | 
    
         
             
                # options that can be used are defined in the Options module.
         
     | 
| 
       90 
88 
     | 
    
         
             
                #
         
     | 
| 
         @@ -103,7 +101,8 @@ module Kramdown 
     | 
|
| 
       103 
101 
     | 
    
         
             
                  if Parser.const_defined?(parser)
         
     | 
| 
       104 
102 
     | 
    
         
             
                    @root, @warnings = Parser.const_get(parser).parse(source, @options)
         
     | 
| 
       105 
103 
     | 
    
         
             
                  else
         
     | 
| 
       106 
     | 
    
         
            -
                    raise Kramdown::Error 
     | 
| 
      
 104 
     | 
    
         
            +
                    raise Kramdown::Error, "kramdown has no parser to handle the specified " \
         
     | 
| 
      
 105 
     | 
    
         
            +
                      "input format: #{@options[:input]}"
         
     | 
| 
       107 
106 
     | 
    
         
             
                  end
         
     | 
| 
       108 
107 
     | 
    
         
             
                end
         
     | 
| 
       109 
108 
     | 
    
         | 
| 
         @@ -138,4 +137,3 @@ module Kramdown 
     | 
|
| 
       138 
137 
     | 
    
         
             
              end
         
     | 
| 
       139 
138 
     | 
    
         | 
| 
       140 
139 
     | 
    
         
             
            end
         
     | 
| 
       141 
     | 
    
         
            -
             
     | 
    
        data/lib/kramdown/element.rb
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # -*- coding: utf-8 -*-
         
     | 
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8; frozen_string_literal: true -*-
         
     | 
| 
       2 
2 
     | 
    
         
             
            #
         
     | 
| 
       3 
3 
     | 
    
         
             
            #--
         
     | 
| 
       4 
     | 
    
         
            -
            # Copyright (C) 2009- 
     | 
| 
      
 4 
     | 
    
         
            +
            # Copyright (C) 2009-2019 Thomas Leitner <t_leitner@gmx.at>
         
     | 
| 
       5 
5 
     | 
    
         
             
            #
         
     | 
| 
       6 
6 
     | 
    
         
             
            # This file is part of kramdown which is licensed under the MIT.
         
     | 
| 
       7 
7 
     | 
    
         
             
            #++
         
     | 
| 
         @@ -482,17 +482,16 @@ module Kramdown 
     | 
|
| 
       482 
482 
     | 
    
         
             
                # The child elements of this element.
         
     | 
| 
       483 
483 
     | 
    
         
             
                attr_accessor :children
         
     | 
| 
       484 
484 
     | 
    
         | 
| 
       485 
     | 
    
         
            -
             
     | 
| 
       486 
485 
     | 
    
         
             
                # Create a new Element object of type +type+. The optional parameters +value+, +attr+ and
         
     | 
| 
       487 
486 
     | 
    
         
             
                # +options+ can also be set in this constructor for convenience.
         
     | 
| 
       488 
487 
     | 
    
         
             
                def initialize(type, value = nil, attr = nil, options = nil)
         
     | 
| 
       489 
     | 
    
         
            -
                  @type, @value, @attr, @options = type, value,  
     | 
| 
      
 488 
     | 
    
         
            +
                  @type, @value, @attr, @options = type, value, attr, options
         
     | 
| 
       490 
489 
     | 
    
         
             
                  @children = []
         
     | 
| 
       491 
490 
     | 
    
         
             
                end
         
     | 
| 
       492 
491 
     | 
    
         | 
| 
       493 
     | 
    
         
            -
                # The attributes of the element. 
     | 
| 
      
 492 
     | 
    
         
            +
                # The attributes of the element.
         
     | 
| 
       494 
493 
     | 
    
         
             
                def attr
         
     | 
| 
       495 
     | 
    
         
            -
                  @attr ||=  
     | 
| 
      
 494 
     | 
    
         
            +
                  @attr ||= {}
         
     | 
| 
       496 
495 
     | 
    
         
             
                end
         
     | 
| 
       497 
496 
     | 
    
         | 
| 
       498 
497 
     | 
    
         
             
                # The options hash for the element. It is used for storing arbitray options.
         
     | 
| 
         @@ -501,13 +500,16 @@ module Kramdown 
     | 
|
| 
       501 
500 
     | 
    
         
             
                end
         
     | 
| 
       502 
501 
     | 
    
         | 
| 
       503 
502 
     | 
    
         
             
                def inspect #:nodoc:
         
     | 
| 
       504 
     | 
    
         
            -
                  "<kd:#{@type}#{@value.nil? ? '' : ' ' + @value.inspect}  
     | 
| 
      
 503 
     | 
    
         
            +
                  "<kd:#{@type}#{@value.nil? ? '' : ' ' + @value.inspect} " \
         
     | 
| 
      
 504 
     | 
    
         
            +
                    "#{@attr.inspect}#{options.empty? ? '' : ' ' + @options.inspect} " \
         
     | 
| 
      
 505 
     | 
    
         
            +
                    "#{@children.empty? ? '' : ' ' + @children.inspect}>"
         
     | 
| 
       505 
506 
     | 
    
         
             
                end
         
     | 
| 
       506 
507 
     | 
    
         | 
| 
       507 
508 
     | 
    
         
             
                CATEGORY = {} # :nodoc:
         
     | 
| 
       508 
     | 
    
         
            -
                [:blank, :p, :header, :blockquote, :codeblock, :ul, :ol, :li, :dl, :dt, :dd, 
     | 
| 
      
 509 
     | 
    
         
            +
                [:blank, :p, :header, :blockquote, :codeblock, :ul, :ol, :li, :dl, :dt, :dd,
         
     | 
| 
      
 510 
     | 
    
         
            +
                 :table, :td, :hr].each {|b| CATEGORY[b] = :block }
         
     | 
| 
       509 
511 
     | 
    
         
             
                [:text, :a, :br, :img, :codespan, :footnote, :em, :strong, :entity, :typographic_sym,
         
     | 
| 
       510 
     | 
    
         
            -
                 :smart_quote, :abbreviation].each {|b| CATEGORY[b] = :span}
         
     | 
| 
      
 512 
     | 
    
         
            +
                 :smart_quote, :abbreviation].each {|b| CATEGORY[b] = :span }
         
     | 
| 
       511 
513 
     | 
    
         | 
| 
       512 
514 
     | 
    
         
             
                # Return the category of +el+ which can be :block, :span or +nil+.
         
     | 
| 
       513 
515 
     | 
    
         
             
                #
         
     | 
    
        data/lib/kramdown/error.rb
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # -*- coding: utf-8 -*-
         
     | 
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8; frozen_string_literal: true -*-
         
     | 
| 
       2 
2 
     | 
    
         
             
            #
         
     | 
| 
       3 
3 
     | 
    
         
             
            #--
         
     | 
| 
       4 
     | 
    
         
            -
            # Copyright (C) 2009- 
     | 
| 
      
 4 
     | 
    
         
            +
            # Copyright (C) 2009-2019 Thomas Leitner <t_leitner@gmx.at>
         
     | 
| 
       5 
5 
     | 
    
         
             
            #
         
     | 
| 
       6 
6 
     | 
    
         
             
            # This file is part of kramdown which is licensed under the MIT.
         
     | 
| 
       7 
7 
     | 
    
         
             
            #++
         
     | 
    
        data/lib/kramdown/options.rb
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # -*- coding: utf-8 -*-
         
     | 
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8; frozen_string_literal: true -*-
         
     | 
| 
       2 
2 
     | 
    
         
             
            #
         
     | 
| 
       3 
3 
     | 
    
         
             
            #--
         
     | 
| 
       4 
     | 
    
         
            -
            # Copyright (C) 2009- 
     | 
| 
      
 4 
     | 
    
         
            +
            # Copyright (C) 2009-2019 Thomas Leitner <t_leitner@gmx.at>
         
     | 
| 
       5 
5 
     | 
    
         
             
            #
         
     | 
| 
       6 
6 
     | 
    
         
             
            # This file is part of kramdown which is licensed under the MIT.
         
     | 
| 
       7 
7 
     | 
    
         
             
            #++
         
     | 
| 
         @@ -49,8 +49,8 @@ module Kramdown 
     | 
|
| 
       49 
49 
     | 
    
         
             
                # a value given as string and as the opaque type.
         
     | 
| 
       50 
50 
     | 
    
         
             
                def self.define(name, type, default, desc, &block)
         
     | 
| 
       51 
51 
     | 
    
         
             
                  name = name.to_sym
         
     | 
| 
       52 
     | 
    
         
            -
                  raise ArgumentError, "Option name #{name} is already used" if @options. 
     | 
| 
       53 
     | 
    
         
            -
                  raise ArgumentError, "Invalid option type #{type} specified"  
     | 
| 
      
 52 
     | 
    
         
            +
                  raise ArgumentError, "Option name #{name} is already used" if @options.key?(name)
         
     | 
| 
      
 53 
     | 
    
         
            +
                  raise ArgumentError, "Invalid option type #{type} specified" unless ALLOWED_TYPES.include?(type)
         
     | 
| 
       54 
54 
     | 
    
         
             
                  raise ArgumentError, "Invalid type for default value" if !(type === default) && !default.nil?
         
     | 
| 
       55 
55 
     | 
    
         
             
                  raise ArgumentError, "Missing validator block" if type == Object && block.nil?
         
     | 
| 
       56 
56 
     | 
    
         
             
                  @options[name] = Definition.new(name, type, default, desc, block)
         
     | 
| 
         @@ -63,13 +63,13 @@ module Kramdown 
     | 
|
| 
       63 
63 
     | 
    
         | 
| 
       64 
64 
     | 
    
         
             
                # Return +true+ if an option called +name+ is defined.
         
     | 
| 
       65 
65 
     | 
    
         
             
                def self.defined?(name)
         
     | 
| 
       66 
     | 
    
         
            -
                  @options. 
     | 
| 
      
 66 
     | 
    
         
            +
                  @options.key?(name.to_sym)
         
     | 
| 
       67 
67 
     | 
    
         
             
                end
         
     | 
| 
       68 
68 
     | 
    
         | 
| 
       69 
69 
     | 
    
         
             
                # Return a Hash with the default values for all options.
         
     | 
| 
       70 
70 
     | 
    
         
             
                def self.defaults
         
     | 
| 
       71 
71 
     | 
    
         
             
                  temp = {}
         
     | 
| 
       72 
     | 
    
         
            -
                  @options.each {| 
     | 
| 
      
 72 
     | 
    
         
            +
                  @options.each {|_n, o| temp[o.name] = o.default }
         
     | 
| 
       73 
73 
     | 
    
         
             
                  temp
         
     | 
| 
       74 
74 
     | 
    
         
             
                end
         
     | 
| 
       75 
75 
     | 
    
         | 
| 
         @@ -77,9 +77,9 @@ module Kramdown 
     | 
|
| 
       77 
77 
     | 
    
         
             
                # names are considered and their value is run through the #parse method.
         
     | 
| 
       78 
78 
     | 
    
         
             
                def self.merge(hash)
         
     | 
| 
       79 
79 
     | 
    
         
             
                  temp = defaults
         
     | 
| 
       80 
     | 
    
         
            -
                  hash.each do |k,v|
         
     | 
| 
      
 80 
     | 
    
         
            +
                  hash.each do |k, v|
         
     | 
| 
       81 
81 
     | 
    
         
             
                    k = k.to_sym
         
     | 
| 
       82 
     | 
    
         
            -
                    @options. 
     | 
| 
      
 82 
     | 
    
         
            +
                    temp[k] = @options.key?(k) ? parse(k, v) : v
         
     | 
| 
       83 
83 
     | 
    
         
             
                  end
         
     | 
| 
       84 
84 
     | 
    
         
             
                  temp
         
     | 
| 
       85 
85 
     | 
    
         
             
                end
         
     | 
| 
         @@ -91,8 +91,8 @@ module Kramdown 
     | 
|
| 
       91 
91 
     | 
    
         
             
                # String and then to the correct type.
         
     | 
| 
       92 
92 
     | 
    
         
             
                def self.parse(name, data)
         
     | 
| 
       93 
93 
     | 
    
         
             
                  name = name.to_sym
         
     | 
| 
       94 
     | 
    
         
            -
                  raise ArgumentError, "No option named #{name} defined"  
     | 
| 
       95 
     | 
    
         
            -
                   
     | 
| 
      
 94 
     | 
    
         
            +
                  raise ArgumentError, "No option named #{name} defined" unless @options.key?(name)
         
     | 
| 
      
 95 
     | 
    
         
            +
                  unless @options[name].type === data
         
     | 
| 
       96 
96 
     | 
    
         
             
                    data = data.to_s
         
     | 
| 
       97 
97 
     | 
    
         
             
                    data = if @options[name].type == String
         
     | 
| 
       98 
98 
     | 
    
         
             
                             data
         
     | 
| 
         @@ -117,7 +117,7 @@ module Kramdown 
     | 
|
| 
       117 
117 
     | 
    
         
             
                # - An empty value or a value equal to "nil" results in +nil+.
         
     | 
| 
       118 
118 
     | 
    
         
             
                def self.str_to_sym(data)
         
     | 
| 
       119 
119 
     | 
    
         
             
                  data = data.strip
         
     | 
| 
       120 
     | 
    
         
            -
                  data = data[1..-1] if data[0] ==  
     | 
| 
      
 120 
     | 
    
         
            +
                  data = data[1..-1] if data[0] == ':'
         
     | 
| 
       121 
121 
     | 
    
         
             
                  (data.empty? || data == 'nil' ? nil : data.to_sym)
         
     | 
| 
       122 
122 
     | 
    
         
             
                end
         
     | 
| 
       123 
123 
     | 
    
         | 
| 
         @@ -154,12 +154,12 @@ module Kramdown 
     | 
|
| 
       154 
154 
     | 
    
         
             
                def self.simple_hash_validator(val, name)
         
     | 
| 
       155 
155 
     | 
    
         
             
                  if String === val
         
     | 
| 
       156 
156 
     | 
    
         
             
                    begin
         
     | 
| 
       157 
     | 
    
         
            -
                      val = YAML. 
     | 
| 
      
 157 
     | 
    
         
            +
                      val = YAML.safe_load(val)
         
     | 
| 
       158 
158 
     | 
    
         
             
                    rescue RuntimeError, ArgumentError, SyntaxError
         
     | 
| 
       159 
159 
     | 
    
         
             
                      raise Kramdown::Error, "Invalid YAML value for option #{name}"
         
     | 
| 
       160 
160 
     | 
    
         
             
                    end
         
     | 
| 
       161 
161 
     | 
    
         
             
                  end
         
     | 
| 
       162 
     | 
    
         
            -
                  raise Kramdown::Error, "Invalid type #{val.class} for option #{name}"  
     | 
| 
      
 162 
     | 
    
         
            +
                  raise Kramdown::Error, "Invalid type #{val.class} for option #{name}" unless Hash === val
         
     | 
| 
       163 
163 
     | 
    
         
             
                  val
         
     | 
| 
       164 
164 
     | 
    
         
             
                end
         
     | 
| 
       165 
165 
     | 
    
         | 
| 
         @@ -170,134 +170,134 @@ module Kramdown 
     | 
|
| 
       170 
170 
     | 
    
         
             
                # parsers/converters.
         
     | 
| 
       171 
171 
     | 
    
         
             
                # ----------------------------
         
     | 
| 
       172 
172 
     | 
    
         | 
| 
       173 
     | 
    
         
            -
                define(:template, String, '',  
     | 
| 
       174 
     | 
    
         
            -
            The name of an ERB template file that should be used to wrap the output
         
     | 
| 
       175 
     | 
    
         
            -
            or the ERB template itself.
         
     | 
| 
      
 173 
     | 
    
         
            +
                define(:template, String, '', <<~EOF)
         
     | 
| 
      
 174 
     | 
    
         
            +
                  The name of an ERB template file that should be used to wrap the output
         
     | 
| 
      
 175 
     | 
    
         
            +
                  or the ERB template itself.
         
     | 
| 
       176 
176 
     | 
    
         | 
| 
       177 
     | 
    
         
            -
            This is used to wrap the output in an environment so that the output can
         
     | 
| 
       178 
     | 
    
         
            -
            be used as a stand-alone document. For example, an HTML template would
         
     | 
| 
       179 
     | 
    
         
            -
            provide the needed header and body tags so that the whole output is a
         
     | 
| 
       180 
     | 
    
         
            -
            valid HTML file. If no template is specified, the output will be just
         
     | 
| 
       181 
     | 
    
         
            -
            the converted text.
         
     | 
| 
      
 177 
     | 
    
         
            +
                  This is used to wrap the output in an environment so that the output can
         
     | 
| 
      
 178 
     | 
    
         
            +
                  be used as a stand-alone document. For example, an HTML template would
         
     | 
| 
      
 179 
     | 
    
         
            +
                  provide the needed header and body tags so that the whole output is a
         
     | 
| 
      
 180 
     | 
    
         
            +
                  valid HTML file. If no template is specified, the output will be just
         
     | 
| 
      
 181 
     | 
    
         
            +
                  the converted text.
         
     | 
| 
       182 
182 
     | 
    
         | 
| 
       183 
     | 
    
         
            -
            When resolving the template file, the given template name is used first.
         
     | 
| 
       184 
     | 
    
         
            -
            If such a file is not found, the converter extension (the same as the
         
     | 
| 
       185 
     | 
    
         
            -
            converter name) is appended. If the file still cannot be found, the
         
     | 
| 
       186 
     | 
    
         
            -
            templates name is interpreted as a template name that is provided by
         
     | 
| 
       187 
     | 
    
         
            -
            kramdown (without the converter extension). If the file is still not
         
     | 
| 
       188 
     | 
    
         
            -
            found, the template name is checked if it starts with 'string://' and if
         
     | 
| 
       189 
     | 
    
         
            -
            it does, this prefix is removed and the rest is used as template
         
     | 
| 
       190 
     | 
    
         
            -
            content.
         
     | 
| 
      
 183 
     | 
    
         
            +
                  When resolving the template file, the given template name is used first.
         
     | 
| 
      
 184 
     | 
    
         
            +
                  If such a file is not found, the converter extension (the same as the
         
     | 
| 
      
 185 
     | 
    
         
            +
                  converter name) is appended. If the file still cannot be found, the
         
     | 
| 
      
 186 
     | 
    
         
            +
                  templates name is interpreted as a template name that is provided by
         
     | 
| 
      
 187 
     | 
    
         
            +
                  kramdown (without the converter extension). If the file is still not
         
     | 
| 
      
 188 
     | 
    
         
            +
                  found, the template name is checked if it starts with 'string://' and if
         
     | 
| 
      
 189 
     | 
    
         
            +
                  it does, this prefix is removed and the rest is used as template
         
     | 
| 
      
 190 
     | 
    
         
            +
                  content.
         
     | 
| 
       191 
191 
     | 
    
         | 
| 
       192 
     | 
    
         
            -
            kramdown provides a default template named 'document' for each converter.
         
     | 
| 
      
 192 
     | 
    
         
            +
                  kramdown provides a default template named 'document' for each converter.
         
     | 
| 
       193 
193 
     | 
    
         | 
| 
       194 
     | 
    
         
            -
            Default: ''
         
     | 
| 
       195 
     | 
    
         
            -
            Used by: all converters
         
     | 
| 
       196 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 194 
     | 
    
         
            +
                  Default: ''
         
     | 
| 
      
 195 
     | 
    
         
            +
                  Used by: all converters
         
     | 
| 
      
 196 
     | 
    
         
            +
                EOF
         
     | 
| 
       197 
197 
     | 
    
         | 
| 
       198 
     | 
    
         
            -
                define(:auto_ids, Boolean, true,  
     | 
| 
       199 
     | 
    
         
            -
            Use automatic header ID generation
         
     | 
| 
      
 198 
     | 
    
         
            +
                define(:auto_ids, Boolean, true, <<~EOF)
         
     | 
| 
      
 199 
     | 
    
         
            +
                  Use automatic header ID generation
         
     | 
| 
       200 
200 
     | 
    
         | 
| 
       201 
     | 
    
         
            -
            If this option is `true`, ID values for all headers are automatically
         
     | 
| 
       202 
     | 
    
         
            -
            generated if no ID is explicitly specified.
         
     | 
| 
      
 201 
     | 
    
         
            +
                  If this option is `true`, ID values for all headers are automatically
         
     | 
| 
      
 202 
     | 
    
         
            +
                  generated if no ID is explicitly specified.
         
     | 
| 
       203 
203 
     | 
    
         | 
| 
       204 
     | 
    
         
            -
            Default: true
         
     | 
| 
       205 
     | 
    
         
            -
            Used by: HTML/Latex converter
         
     | 
| 
       206 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 204 
     | 
    
         
            +
                  Default: true
         
     | 
| 
      
 205 
     | 
    
         
            +
                  Used by: HTML/Latex converter
         
     | 
| 
      
 206 
     | 
    
         
            +
                EOF
         
     | 
| 
       207 
207 
     | 
    
         | 
| 
       208 
     | 
    
         
            -
                define(:auto_id_stripping, Boolean, false,  
     | 
| 
       209 
     | 
    
         
            -
            Strip all formatting from header text for automatic ID generation
         
     | 
| 
      
 208 
     | 
    
         
            +
                define(:auto_id_stripping, Boolean, false, <<~EOF)
         
     | 
| 
      
 209 
     | 
    
         
            +
                  Strip all formatting from header text for automatic ID generation
         
     | 
| 
       210 
210 
     | 
    
         | 
| 
       211 
     | 
    
         
            -
            If this option is `true`, only the text elements of a header are used
         
     | 
| 
       212 
     | 
    
         
            -
            for generating the ID later (in contrast to just using the raw header
         
     | 
| 
       213 
     | 
    
         
            -
            text line).
         
     | 
| 
      
 211 
     | 
    
         
            +
                  If this option is `true`, only the text elements of a header are used
         
     | 
| 
      
 212 
     | 
    
         
            +
                  for generating the ID later (in contrast to just using the raw header
         
     | 
| 
      
 213 
     | 
    
         
            +
                  text line).
         
     | 
| 
       214 
214 
     | 
    
         | 
| 
       215 
     | 
    
         
            -
            This option will be removed in version 2.0 because this will be the
         
     | 
| 
       216 
     | 
    
         
            -
            default then.
         
     | 
| 
      
 215 
     | 
    
         
            +
                  This option will be removed in version 2.0 because this will be the
         
     | 
| 
      
 216 
     | 
    
         
            +
                  default then.
         
     | 
| 
       217 
217 
     | 
    
         | 
| 
       218 
     | 
    
         
            -
            Default: false
         
     | 
| 
       219 
     | 
    
         
            -
            Used by: kramdown parser
         
     | 
| 
       220 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 218 
     | 
    
         
            +
                  Default: false
         
     | 
| 
      
 219 
     | 
    
         
            +
                  Used by: kramdown parser
         
     | 
| 
      
 220 
     | 
    
         
            +
                EOF
         
     | 
| 
       221 
221 
     | 
    
         | 
| 
       222 
     | 
    
         
            -
                define(:auto_id_prefix, String, '',  
     | 
| 
       223 
     | 
    
         
            -
            Prefix used for automatically generated header IDs
         
     | 
| 
      
 222 
     | 
    
         
            +
                define(:auto_id_prefix, String, '', <<~EOF)
         
     | 
| 
      
 223 
     | 
    
         
            +
                  Prefix used for automatically generated header IDs
         
     | 
| 
       224 
224 
     | 
    
         | 
| 
       225 
     | 
    
         
            -
            This option can be used to set a prefix for the automatically generated
         
     | 
| 
       226 
     | 
    
         
            -
            header IDs so that there is no conflict when rendering multiple kramdown
         
     | 
| 
       227 
     | 
    
         
            -
            documents into one output file separately. The prefix should only
         
     | 
| 
       228 
     | 
    
         
            -
            contain characters that are valid in an ID!
         
     | 
| 
      
 225 
     | 
    
         
            +
                  This option can be used to set a prefix for the automatically generated
         
     | 
| 
      
 226 
     | 
    
         
            +
                  header IDs so that there is no conflict when rendering multiple kramdown
         
     | 
| 
      
 227 
     | 
    
         
            +
                  documents into one output file separately. The prefix should only
         
     | 
| 
      
 228 
     | 
    
         
            +
                  contain characters that are valid in an ID!
         
     | 
| 
       229 
229 
     | 
    
         | 
| 
       230 
     | 
    
         
            -
            Default: ''
         
     | 
| 
       231 
     | 
    
         
            -
            Used by: HTML/Latex converter
         
     | 
| 
       232 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 230 
     | 
    
         
            +
                  Default: ''
         
     | 
| 
      
 231 
     | 
    
         
            +
                  Used by: HTML/Latex converter
         
     | 
| 
      
 232 
     | 
    
         
            +
                EOF
         
     | 
| 
       233 
233 
     | 
    
         | 
| 
       234 
     | 
    
         
            -
                define(:transliterated_header_ids, Boolean, false,  
     | 
| 
       235 
     | 
    
         
            -
            Transliterate the header text before generating the ID
         
     | 
| 
      
 234 
     | 
    
         
            +
                define(:transliterated_header_ids, Boolean, false, <<~EOF)
         
     | 
| 
      
 235 
     | 
    
         
            +
                  Transliterate the header text before generating the ID
         
     | 
| 
       236 
236 
     | 
    
         | 
| 
       237 
     | 
    
         
            -
            Only ASCII characters are used in headers IDs. This is not good for
         
     | 
| 
       238 
     | 
    
         
            -
            languages with many non-ASCII characters. By enabling this option
         
     | 
| 
       239 
     | 
    
         
            -
            the header text is transliterated to ASCII as good as possible so that
         
     | 
| 
       240 
     | 
    
         
            -
            the resulting header ID is more useful.
         
     | 
| 
      
 237 
     | 
    
         
            +
                  Only ASCII characters are used in headers IDs. This is not good for
         
     | 
| 
      
 238 
     | 
    
         
            +
                  languages with many non-ASCII characters. By enabling this option
         
     | 
| 
      
 239 
     | 
    
         
            +
                  the header text is transliterated to ASCII as good as possible so that
         
     | 
| 
      
 240 
     | 
    
         
            +
                  the resulting header ID is more useful.
         
     | 
| 
       241 
241 
     | 
    
         | 
| 
       242 
     | 
    
         
            -
            The stringex library needs to be installed for this feature to work!
         
     | 
| 
      
 242 
     | 
    
         
            +
                  The stringex library needs to be installed for this feature to work!
         
     | 
| 
       243 
243 
     | 
    
         | 
| 
       244 
     | 
    
         
            -
            Default: false
         
     | 
| 
       245 
     | 
    
         
            -
            Used by: HTML/Latex converter
         
     | 
| 
       246 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 244 
     | 
    
         
            +
                  Default: false
         
     | 
| 
      
 245 
     | 
    
         
            +
                  Used by: HTML/Latex converter
         
     | 
| 
      
 246 
     | 
    
         
            +
                EOF
         
     | 
| 
       247 
247 
     | 
    
         | 
| 
       248 
     | 
    
         
            -
                define(:parse_block_html, Boolean, false,  
     | 
| 
       249 
     | 
    
         
            -
            Process kramdown syntax in block HTML tags
         
     | 
| 
      
 248 
     | 
    
         
            +
                define(:parse_block_html, Boolean, false, <<~EOF)
         
     | 
| 
      
 249 
     | 
    
         
            +
                  Process kramdown syntax in block HTML tags
         
     | 
| 
       250 
250 
     | 
    
         | 
| 
       251 
     | 
    
         
            -
            If this option is `true`, the kramdown parser processes the content of
         
     | 
| 
       252 
     | 
    
         
            -
            block HTML tags as text containing block-level elements. Since this is
         
     | 
| 
       253 
     | 
    
         
            -
            not wanted normally, the default is `false`. It is normally better to
         
     | 
| 
       254 
     | 
    
         
            -
            selectively enable kramdown processing via the markdown attribute.
         
     | 
| 
      
 251 
     | 
    
         
            +
                  If this option is `true`, the kramdown parser processes the content of
         
     | 
| 
      
 252 
     | 
    
         
            +
                  block HTML tags as text containing block-level elements. Since this is
         
     | 
| 
      
 253 
     | 
    
         
            +
                  not wanted normally, the default is `false`. It is normally better to
         
     | 
| 
      
 254 
     | 
    
         
            +
                  selectively enable kramdown processing via the markdown attribute.
         
     | 
| 
       255 
255 
     | 
    
         | 
| 
       256 
     | 
    
         
            -
            Default: false
         
     | 
| 
       257 
     | 
    
         
            -
            Used by: kramdown parser
         
     | 
| 
       258 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 256 
     | 
    
         
            +
                  Default: false
         
     | 
| 
      
 257 
     | 
    
         
            +
                  Used by: kramdown parser
         
     | 
| 
      
 258 
     | 
    
         
            +
                EOF
         
     | 
| 
       259 
259 
     | 
    
         | 
| 
       260 
     | 
    
         
            -
                define(:parse_span_html, Boolean, true,  
     | 
| 
       261 
     | 
    
         
            -
            Process kramdown syntax in span HTML tags
         
     | 
| 
      
 260 
     | 
    
         
            +
                define(:parse_span_html, Boolean, true, <<~EOF)
         
     | 
| 
      
 261 
     | 
    
         
            +
                  Process kramdown syntax in span HTML tags
         
     | 
| 
       262 
262 
     | 
    
         | 
| 
       263 
     | 
    
         
            -
            If this option is `true`, the kramdown parser processes the content of
         
     | 
| 
       264 
     | 
    
         
            -
            span HTML tags as text containing span-level elements.
         
     | 
| 
      
 263 
     | 
    
         
            +
                  If this option is `true`, the kramdown parser processes the content of
         
     | 
| 
      
 264 
     | 
    
         
            +
                  span HTML tags as text containing span-level elements.
         
     | 
| 
       265 
265 
     | 
    
         | 
| 
       266 
     | 
    
         
            -
            Default: true
         
     | 
| 
       267 
     | 
    
         
            -
            Used by: kramdown parser
         
     | 
| 
       268 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 266 
     | 
    
         
            +
                  Default: true
         
     | 
| 
      
 267 
     | 
    
         
            +
                  Used by: kramdown parser
         
     | 
| 
      
 268 
     | 
    
         
            +
                EOF
         
     | 
| 
       269 
269 
     | 
    
         | 
| 
       270 
     | 
    
         
            -
                define(:html_to_native, Boolean, false,  
     | 
| 
       271 
     | 
    
         
            -
            Convert HTML elements to native elements
         
     | 
| 
      
 270 
     | 
    
         
            +
                define(:html_to_native, Boolean, false, <<~EOF)
         
     | 
| 
      
 271 
     | 
    
         
            +
                  Convert HTML elements to native elements
         
     | 
| 
       272 
272 
     | 
    
         | 
| 
       273 
     | 
    
         
            -
            If this option is `true`, the parser converts HTML elements to native
         
     | 
| 
       274 
     | 
    
         
            -
            elements. For example, when parsing `<em>hallo</em>` the emphasis tag
         
     | 
| 
       275 
     | 
    
         
            -
            would normally be converted to an `:html` element with tag type `:em`.
         
     | 
| 
       276 
     | 
    
         
            -
            If `html_to_native` is `true`, then the emphasis would be converted to a
         
     | 
| 
       277 
     | 
    
         
            -
            native `:em` element.
         
     | 
| 
      
 273 
     | 
    
         
            +
                  If this option is `true`, the parser converts HTML elements to native
         
     | 
| 
      
 274 
     | 
    
         
            +
                  elements. For example, when parsing `<em>hallo</em>` the emphasis tag
         
     | 
| 
      
 275 
     | 
    
         
            +
                  would normally be converted to an `:html` element with tag type `:em`.
         
     | 
| 
      
 276 
     | 
    
         
            +
                  If `html_to_native` is `true`, then the emphasis would be converted to a
         
     | 
| 
      
 277 
     | 
    
         
            +
                  native `:em` element.
         
     | 
| 
       278 
278 
     | 
    
         | 
| 
       279 
     | 
    
         
            -
            This is useful for converters that cannot deal with HTML elements.
         
     | 
| 
      
 279 
     | 
    
         
            +
                  This is useful for converters that cannot deal with HTML elements.
         
     | 
| 
       280 
280 
     | 
    
         | 
| 
       281 
     | 
    
         
            -
            Default: false
         
     | 
| 
       282 
     | 
    
         
            -
            Used by: kramdown parser
         
     | 
| 
       283 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 281 
     | 
    
         
            +
                  Default: false
         
     | 
| 
      
 282 
     | 
    
         
            +
                  Used by: kramdown parser
         
     | 
| 
      
 283 
     | 
    
         
            +
                EOF
         
     | 
| 
       284 
284 
     | 
    
         | 
| 
       285 
     | 
    
         
            -
                define(:link_defs, Object, {},  
     | 
| 
       286 
     | 
    
         
            -
            Pre-defines link definitions
         
     | 
| 
      
 285 
     | 
    
         
            +
                define(:link_defs, Object, {}, <<~EOF) do |val|
         
     | 
| 
      
 286 
     | 
    
         
            +
                  Pre-defines link definitions
         
     | 
| 
       287 
287 
     | 
    
         | 
| 
       288 
     | 
    
         
            -
            This option can be used to pre-define link definitions. The value needs
         
     | 
| 
       289 
     | 
    
         
            -
            to be a Hash where the keys are the link identifiers and the values are
         
     | 
| 
       290 
     | 
    
         
            -
            two element Arrays with the link URL and the link title.
         
     | 
| 
      
 288 
     | 
    
         
            +
                  This option can be used to pre-define link definitions. The value needs
         
     | 
| 
      
 289 
     | 
    
         
            +
                  to be a Hash where the keys are the link identifiers and the values are
         
     | 
| 
      
 290 
     | 
    
         
            +
                  two element Arrays with the link URL and the link title.
         
     | 
| 
       291 
291 
     | 
    
         | 
| 
       292 
     | 
    
         
            -
            If the value is a String, it has to contain a valid YAML hash and the
         
     | 
| 
       293 
     | 
    
         
            -
            hash has to follow the above guidelines.
         
     | 
| 
      
 292 
     | 
    
         
            +
                  If the value is a String, it has to contain a valid YAML hash and the
         
     | 
| 
      
 293 
     | 
    
         
            +
                  hash has to follow the above guidelines.
         
     | 
| 
       294 
294 
     | 
    
         | 
| 
       295 
     | 
    
         
            -
            Default: {}
         
     | 
| 
       296 
     | 
    
         
            -
            Used by: kramdown parser
         
     | 
| 
       297 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 295 
     | 
    
         
            +
                  Default: {}
         
     | 
| 
      
 296 
     | 
    
         
            +
                  Used by: kramdown parser
         
     | 
| 
      
 297 
     | 
    
         
            +
                EOF
         
     | 
| 
       298 
298 
     | 
    
         
             
                  val = simple_hash_validator(val, :link_defs)
         
     | 
| 
       299 
     | 
    
         
            -
                  val.each do | 
     | 
| 
       300 
     | 
    
         
            -
                    if !(Array === v) || v.size > 2 || v. 
     | 
| 
      
 299 
     | 
    
         
            +
                  val.each do |_k, v|
         
     | 
| 
      
 300 
     | 
    
         
            +
                    if !(Array === v) || v.size > 2 || v.empty?
         
     | 
| 
       301 
301 
     | 
    
         
             
                      raise Kramdown::Error, "Invalid structure for hash value of option #{name}"
         
     | 
| 
       302 
302 
     | 
    
         
             
                    end
         
     | 
| 
       303 
303 
     | 
    
         
             
                    v << nil if v.size == 1
         
     | 
| 
         @@ -305,198 +305,118 @@ EOF 
     | 
|
| 
       305 
305 
     | 
    
         
             
                  val
         
     | 
| 
       306 
306 
     | 
    
         
             
                end
         
     | 
| 
       307 
307 
     | 
    
         | 
| 
       308 
     | 
    
         
            -
                define(:footnote_nr, Integer, 1,  
     | 
| 
       309 
     | 
    
         
            -
            The number of the first footnote
         
     | 
| 
      
 308 
     | 
    
         
            +
                define(:footnote_nr, Integer, 1, <<~EOF)
         
     | 
| 
      
 309 
     | 
    
         
            +
                  The number of the first footnote
         
     | 
| 
       310 
310 
     | 
    
         | 
| 
       311 
     | 
    
         
            -
            This option can be used to specify the number that is used for the first
         
     | 
| 
       312 
     | 
    
         
            -
            footnote.
         
     | 
| 
      
 311 
     | 
    
         
            +
                  This option can be used to specify the number that is used for the first
         
     | 
| 
      
 312 
     | 
    
         
            +
                  footnote.
         
     | 
| 
       313 
313 
     | 
    
         | 
| 
       314 
     | 
    
         
            -
            Default: 1
         
     | 
| 
       315 
     | 
    
         
            -
            Used by: HTML converter
         
     | 
| 
       316 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 314 
     | 
    
         
            +
                  Default: 1
         
     | 
| 
      
 315 
     | 
    
         
            +
                  Used by: HTML converter
         
     | 
| 
      
 316 
     | 
    
         
            +
                EOF
         
     | 
| 
       317 
317 
     | 
    
         | 
| 
       318 
     | 
    
         
            -
                define(: 
     | 
| 
       319 
     | 
    
         
            -
             
     | 
| 
      
 318 
     | 
    
         
            +
                define(:entity_output, Symbol, :as_char, <<~EOF)
         
     | 
| 
      
 319 
     | 
    
         
            +
                  Defines how entities are output
         
     | 
| 
       320 
320 
     | 
    
         | 
| 
       321 
     | 
    
         
            -
             
     | 
| 
       322 
     | 
    
         
            -
             
     | 
| 
      
 321 
     | 
    
         
            +
                  The possible values are :as_input (entities are output in the same
         
     | 
| 
      
 322 
     | 
    
         
            +
                  form as found in the input), :numeric (entities are output in numeric
         
     | 
| 
      
 323 
     | 
    
         
            +
                  form), :symbolic (entities are output in symbolic form if possible) or
         
     | 
| 
      
 324 
     | 
    
         
            +
                  :as_char (entities are output as characters if possible, only available
         
     | 
| 
      
 325 
     | 
    
         
            +
                  on Ruby 1.9).
         
     | 
| 
       323 
326 
     | 
    
         | 
| 
       324 
     | 
    
         
            -
            Default:  
     | 
| 
       325 
     | 
    
         
            -
            Used by: HTML converter
         
     | 
| 
       326 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 327 
     | 
    
         
            +
                  Default: :as_char
         
     | 
| 
      
 328 
     | 
    
         
            +
                  Used by: HTML converter, kramdown converter
         
     | 
| 
      
 329 
     | 
    
         
            +
                EOF
         
     | 
| 
       327 
330 
     | 
    
         | 
| 
       328 
     | 
    
         
            -
                define(: 
     | 
| 
       329 
     | 
    
         
            -
            Defines  
     | 
| 
      
 331 
     | 
    
         
            +
                define(:toc_levels, Object, (1..6).to_a, <<~EOF) do |val|
         
     | 
| 
      
 332 
     | 
    
         
            +
                  Defines the levels that are used for the table of contents
         
     | 
| 
       330 
333 
     | 
    
         | 
| 
       331 
     | 
    
         
            -
            The  
     | 
| 
      
 334 
     | 
    
         
            +
                  The individual levels can be specified by separating them with commas
         
     | 
| 
      
 335 
     | 
    
         
            +
                  (e.g. 1,2,3) or by using the range syntax (e.g. 1..3). Only the
         
     | 
| 
      
 336 
     | 
    
         
            +
                  specified levels are used for the table of contents.
         
     | 
| 
       332 
337 
     | 
    
         | 
| 
       333 
     | 
    
         
            -
            Default:  
     | 
| 
       334 
     | 
    
         
            -
            Used by: HTML converter
         
     | 
| 
       335 
     | 
    
         
            -
            EOF
         
     | 
| 
       336 
     | 
    
         
            -
             
     | 
| 
       337 
     | 
    
         
            -
                define(:coderay_line_numbers, Symbol, :inline, <<EOF)
         
     | 
| 
       338 
     | 
    
         
            -
            Defines how and if line numbers should be shown
         
     | 
| 
       339 
     | 
    
         
            -
             
     | 
| 
       340 
     | 
    
         
            -
            The possible values are :table, :inline or nil. If this option is
         
     | 
| 
       341 
     | 
    
         
            -
            nil, no line numbers are shown.
         
     | 
| 
       342 
     | 
    
         
            -
             
     | 
| 
       343 
     | 
    
         
            -
            Default: :inline
         
     | 
| 
       344 
     | 
    
         
            -
            Used by: HTML converter
         
     | 
| 
       345 
     | 
    
         
            -
            EOF
         
     | 
| 
       346 
     | 
    
         
            -
             
     | 
| 
       347 
     | 
    
         
            -
                define(:coderay_line_number_start, Integer, 1, <<EOF)
         
     | 
| 
       348 
     | 
    
         
            -
            The start value for the line numbers
         
     | 
| 
       349 
     | 
    
         
            -
             
     | 
| 
       350 
     | 
    
         
            -
            Default: 1
         
     | 
| 
       351 
     | 
    
         
            -
            Used by: HTML converter
         
     | 
| 
       352 
     | 
    
         
            -
            EOF
         
     | 
| 
       353 
     | 
    
         
            -
             
     | 
| 
       354 
     | 
    
         
            -
                define(:coderay_tab_width, Integer, 8, <<EOF)
         
     | 
| 
       355 
     | 
    
         
            -
            The tab width used in highlighted code
         
     | 
| 
       356 
     | 
    
         
            -
             
     | 
| 
       357 
     | 
    
         
            -
            Used by: HTML converter
         
     | 
| 
       358 
     | 
    
         
            -
            EOF
         
     | 
| 
       359 
     | 
    
         
            -
             
     | 
| 
       360 
     | 
    
         
            -
                define(:coderay_bold_every, Object, 10, <<EOF) do |val|
         
     | 
| 
       361 
     | 
    
         
            -
            Defines how often a line number should be made bold
         
     | 
| 
       362 
     | 
    
         
            -
             
     | 
| 
       363 
     | 
    
         
            -
            Can either be an integer or false (to turn off bold line numbers
         
     | 
| 
       364 
     | 
    
         
            -
            completely).
         
     | 
| 
       365 
     | 
    
         
            -
             
     | 
| 
       366 
     | 
    
         
            -
            Default: 10
         
     | 
| 
       367 
     | 
    
         
            -
            Used by: HTML converter
         
     | 
| 
       368 
     | 
    
         
            -
            EOF
         
     | 
| 
       369 
     | 
    
         
            -
                  if val == false || val.to_s == 'false'
         
     | 
| 
       370 
     | 
    
         
            -
                    false
         
     | 
| 
       371 
     | 
    
         
            -
                  else
         
     | 
| 
       372 
     | 
    
         
            -
                    Integer(val.to_s) rescue raise Kramdown::Error, "Invalid value for option 'coderay_bold_every'"
         
     | 
| 
       373 
     | 
    
         
            -
                  end
         
     | 
| 
       374 
     | 
    
         
            -
            end
         
     | 
| 
       375 
     | 
    
         
            -
             
     | 
| 
       376 
     | 
    
         
            -
                define(:coderay_css, Symbol, :style, <<EOF)
         
     | 
| 
       377 
     | 
    
         
            -
            Defines how the highlighted code gets styled
         
     | 
| 
       378 
     | 
    
         
            -
             
     | 
| 
       379 
     | 
    
         
            -
            Possible values are :class (CSS classes are applied to the code
         
     | 
| 
       380 
     | 
    
         
            -
            elements, one must supply the needed CSS file) or :style (default CSS
         
     | 
| 
       381 
     | 
    
         
            -
            styles are directly applied to the code elements).
         
     | 
| 
       382 
     | 
    
         
            -
             
     | 
| 
       383 
     | 
    
         
            -
            Default: style
         
     | 
| 
       384 
     | 
    
         
            -
            Used by: HTML converter
         
     | 
| 
       385 
     | 
    
         
            -
            EOF
         
     | 
| 
       386 
     | 
    
         
            -
             
     | 
| 
       387 
     | 
    
         
            -
                define(:coderay_default_lang, Symbol, nil, <<EOF)
         
     | 
| 
       388 
     | 
    
         
            -
            Sets the default language for highlighting code blocks
         
     | 
| 
       389 
     | 
    
         
            -
             
     | 
| 
       390 
     | 
    
         
            -
            If no language is set for a code block, the default language is used
         
     | 
| 
       391 
     | 
    
         
            -
            instead. The value has to be one of the languages supported by coderay
         
     | 
| 
       392 
     | 
    
         
            -
            or nil if no default language should be used.
         
     | 
| 
       393 
     | 
    
         
            -
             
     | 
| 
       394 
     | 
    
         
            -
            Default: nil
         
     | 
| 
       395 
     | 
    
         
            -
            Used by: HTML converter
         
     | 
| 
       396 
     | 
    
         
            -
            EOF
         
     | 
| 
       397 
     | 
    
         
            -
             
     | 
| 
       398 
     | 
    
         
            -
                define(:entity_output, Symbol, :as_char, <<EOF)
         
     | 
| 
       399 
     | 
    
         
            -
            Defines how entities are output
         
     | 
| 
       400 
     | 
    
         
            -
             
     | 
| 
       401 
     | 
    
         
            -
            The possible values are :as_input (entities are output in the same
         
     | 
| 
       402 
     | 
    
         
            -
            form as found in the input), :numeric (entities are output in numeric
         
     | 
| 
       403 
     | 
    
         
            -
            form), :symbolic (entities are output in symbolic form if possible) or
         
     | 
| 
       404 
     | 
    
         
            -
            :as_char (entities are output as characters if possible, only available
         
     | 
| 
       405 
     | 
    
         
            -
            on Ruby 1.9).
         
     | 
| 
       406 
     | 
    
         
            -
             
     | 
| 
       407 
     | 
    
         
            -
            Default: :as_char
         
     | 
| 
       408 
     | 
    
         
            -
            Used by: HTML converter, kramdown converter
         
     | 
| 
       409 
     | 
    
         
            -
            EOF
         
     | 
| 
       410 
     | 
    
         
            -
             
     | 
| 
       411 
     | 
    
         
            -
                define(:toc_levels, Object, (1..6).to_a, <<EOF) do |val|
         
     | 
| 
       412 
     | 
    
         
            -
            Defines the levels that are used for the table of contents
         
     | 
| 
       413 
     | 
    
         
            -
             
     | 
| 
       414 
     | 
    
         
            -
            The individual levels can be specified by separating them with commas
         
     | 
| 
       415 
     | 
    
         
            -
            (e.g. 1,2,3) or by using the range syntax (e.g. 1..3). Only the
         
     | 
| 
       416 
     | 
    
         
            -
            specified levels are used for the table of contents.
         
     | 
| 
       417 
     | 
    
         
            -
             
     | 
| 
       418 
     | 
    
         
            -
            Default: 1..6
         
     | 
| 
       419 
     | 
    
         
            -
            Used by: HTML/Latex converter
         
     | 
| 
       420 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 338 
     | 
    
         
            +
                  Default: 1..6
         
     | 
| 
      
 339 
     | 
    
         
            +
                  Used by: HTML/Latex converter
         
     | 
| 
      
 340 
     | 
    
         
            +
                EOF
         
     | 
| 
       421 
341 
     | 
    
         
             
                  case val
         
     | 
| 
       422 
342 
     | 
    
         
             
                  when String
         
     | 
| 
       423 
343 
     | 
    
         
             
                    if val =~ /^(\d)\.\.(\d)$/
         
     | 
| 
       424 
344 
     | 
    
         
             
                      val = Range.new($1.to_i, $2.to_i).to_a
         
     | 
| 
       425 
345 
     | 
    
         
             
                    elsif val =~ /^\d(?:,\d)*$/
         
     | 
| 
       426 
     | 
    
         
            -
                      val = val.split(/,/).map 
     | 
| 
      
 346 
     | 
    
         
            +
                      val = val.split(/,/).map(&:to_i).uniq
         
     | 
| 
       427 
347 
     | 
    
         
             
                    else
         
     | 
| 
       428 
348 
     | 
    
         
             
                      raise Kramdown::Error, "Invalid syntax for option toc_levels"
         
     | 
| 
       429 
349 
     | 
    
         
             
                    end
         
     | 
| 
       430 
350 
     | 
    
         
             
                  when Array, Range
         
     | 
| 
       431 
     | 
    
         
            -
                    val = val.map 
     | 
| 
      
 351 
     | 
    
         
            +
                    val = val.map(&:to_i).uniq
         
     | 
| 
       432 
352 
     | 
    
         
             
                  else
         
     | 
| 
       433 
353 
     | 
    
         
             
                    raise Kramdown::Error, "Invalid type #{val.class} for option toc_levels"
         
     | 
| 
       434 
354 
     | 
    
         
             
                  end
         
     | 
| 
       435 
     | 
    
         
            -
                  if val.any? {|i| !(1..6). 
     | 
| 
      
 355 
     | 
    
         
            +
                  if val.any? {|i| !(1..6).cover?(i) }
         
     | 
| 
       436 
356 
     | 
    
         
             
                    raise Kramdown::Error, "Level numbers for option toc_levels have to be integers from 1 to 6"
         
     | 
| 
       437 
357 
     | 
    
         
             
                  end
         
     | 
| 
       438 
358 
     | 
    
         
             
                  val
         
     | 
| 
       439 
359 
     | 
    
         
             
                end
         
     | 
| 
       440 
360 
     | 
    
         | 
| 
       441 
     | 
    
         
            -
                define(:line_width, Integer, 72,  
     | 
| 
       442 
     | 
    
         
            -
            Defines the line width to be used when outputting a document
         
     | 
| 
      
 361 
     | 
    
         
            +
                define(:line_width, Integer, 72, <<~EOF)
         
     | 
| 
      
 362 
     | 
    
         
            +
                  Defines the line width to be used when outputting a document
         
     | 
| 
       443 
363 
     | 
    
         | 
| 
       444 
     | 
    
         
            -
            Default: 72
         
     | 
| 
       445 
     | 
    
         
            -
            Used by: kramdown converter
         
     | 
| 
       446 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 364 
     | 
    
         
            +
                  Default: 72
         
     | 
| 
      
 365 
     | 
    
         
            +
                  Used by: kramdown converter
         
     | 
| 
      
 366 
     | 
    
         
            +
                EOF
         
     | 
| 
       447 
367 
     | 
    
         | 
| 
       448 
     | 
    
         
            -
                define(:latex_headers, Object, %w 
     | 
| 
       449 
     | 
    
         
            -
            Defines the LaTeX commands for different header levels
         
     | 
| 
      
 368 
     | 
    
         
            +
                define(:latex_headers, Object, %w[section subsection subsubsection paragraph subparagraph subparagraph], <<~EOF) do |val|
         
     | 
| 
      
 369 
     | 
    
         
            +
                  Defines the LaTeX commands for different header levels
         
     | 
| 
       450 
370 
     | 
    
         | 
| 
       451 
     | 
    
         
            -
            The commands for the header levels one to six can be specified by
         
     | 
| 
       452 
     | 
    
         
            -
            separating them with commas.
         
     | 
| 
      
 371 
     | 
    
         
            +
                  The commands for the header levels one to six can be specified by
         
     | 
| 
      
 372 
     | 
    
         
            +
                  separating them with commas.
         
     | 
| 
       453 
373 
     | 
    
         | 
| 
       454 
     | 
    
         
            -
            Default: section,subsection,subsubsection,paragraph,subparagraph,subparagraph
         
     | 
| 
       455 
     | 
    
         
            -
            Used by: Latex converter
         
     | 
| 
       456 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 374 
     | 
    
         
            +
                  Default: section,subsection,subsubsection,paragraph,subparagraph,subparagraph
         
     | 
| 
      
 375 
     | 
    
         
            +
                  Used by: Latex converter
         
     | 
| 
      
 376 
     | 
    
         
            +
                EOF
         
     | 
| 
       457 
377 
     | 
    
         
             
                  simple_array_validator(val, :latex_headers, 6)
         
     | 
| 
       458 
378 
     | 
    
         
             
                end
         
     | 
| 
       459 
379 
     | 
    
         | 
| 
       460 
     | 
    
         
            -
                define(:smart_quotes, Object, %w 
     | 
| 
       461 
     | 
    
         
            -
            Defines the HTML entity names or code points for smart quote output
         
     | 
| 
      
 380 
     | 
    
         
            +
                define(:smart_quotes, Object, %w[lsquo rsquo ldquo rdquo], <<~EOF) do |val|
         
     | 
| 
      
 381 
     | 
    
         
            +
                  Defines the HTML entity names or code points for smart quote output
         
     | 
| 
       462 
382 
     | 
    
         | 
| 
       463 
     | 
    
         
            -
            The entities identified by entity name or code point that should be
         
     | 
| 
       464 
     | 
    
         
            -
            used for, in order, a left single quote, a right single quote, a left
         
     | 
| 
       465 
     | 
    
         
            -
            double and a right double quote are specified by separating them with
         
     | 
| 
       466 
     | 
    
         
            -
            commas.
         
     | 
| 
      
 383 
     | 
    
         
            +
                  The entities identified by entity name or code point that should be
         
     | 
| 
      
 384 
     | 
    
         
            +
                  used for, in order, a left single quote, a right single quote, a left
         
     | 
| 
      
 385 
     | 
    
         
            +
                  double and a right double quote are specified by separating them with
         
     | 
| 
      
 386 
     | 
    
         
            +
                  commas.
         
     | 
| 
       467 
387 
     | 
    
         | 
| 
       468 
     | 
    
         
            -
            Default: lsquo,rsquo,ldquo,rdquo
         
     | 
| 
       469 
     | 
    
         
            -
            Used by: HTML/Latex converter
         
     | 
| 
       470 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 388 
     | 
    
         
            +
                  Default: lsquo,rsquo,ldquo,rdquo
         
     | 
| 
      
 389 
     | 
    
         
            +
                  Used by: HTML/Latex converter
         
     | 
| 
      
 390 
     | 
    
         
            +
                EOF
         
     | 
| 
       471 
391 
     | 
    
         
             
                  val = simple_array_validator(val, :smart_quotes, 4)
         
     | 
| 
       472 
     | 
    
         
            -
                  val.map! {|v| Integer(v) rescue v}
         
     | 
| 
      
 392 
     | 
    
         
            +
                  val.map! {|v| Integer(v) rescue v }
         
     | 
| 
       473 
393 
     | 
    
         
             
                  val
         
     | 
| 
       474 
394 
     | 
    
         
             
                end
         
     | 
| 
       475 
395 
     | 
    
         | 
| 
       476 
     | 
    
         
            -
                define(:typographic_symbols, Object, {},  
     | 
| 
       477 
     | 
    
         
            -
            Defines a mapping from typographical symbol to output characters
         
     | 
| 
      
 396 
     | 
    
         
            +
                define(:typographic_symbols, Object, {}, <<~EOF) do |val|
         
     | 
| 
      
 397 
     | 
    
         
            +
                  Defines a mapping from typographical symbol to output characters
         
     | 
| 
       478 
398 
     | 
    
         | 
| 
       479 
     | 
    
         
            -
            Typographical symbols are normally output using their equivalent Unicode
         
     | 
| 
       480 
     | 
    
         
            -
            codepoint. However, sometimes one wants to change the output, mostly to
         
     | 
| 
       481 
     | 
    
         
            -
            fallback to a sequence of ASCII characters.
         
     | 
| 
      
 399 
     | 
    
         
            +
                  Typographical symbols are normally output using their equivalent Unicode
         
     | 
| 
      
 400 
     | 
    
         
            +
                  codepoint. However, sometimes one wants to change the output, mostly to
         
     | 
| 
      
 401 
     | 
    
         
            +
                  fallback to a sequence of ASCII characters.
         
     | 
| 
       482 
402 
     | 
    
         | 
| 
       483 
     | 
    
         
            -
            This option allows this by specifying a mapping from typographical
         
     | 
| 
       484 
     | 
    
         
            -
            symbol to its output string. For example, the mapping {hellip: ...} would
         
     | 
| 
       485 
     | 
    
         
            -
            output the standard ASCII representation of an ellipsis.
         
     | 
| 
      
 403 
     | 
    
         
            +
                  This option allows this by specifying a mapping from typographical
         
     | 
| 
      
 404 
     | 
    
         
            +
                  symbol to its output string. For example, the mapping {hellip: ...} would
         
     | 
| 
      
 405 
     | 
    
         
            +
                  output the standard ASCII representation of an ellipsis.
         
     | 
| 
       486 
406 
     | 
    
         | 
| 
       487 
     | 
    
         
            -
            The available typographical symbol names are:
         
     | 
| 
      
 407 
     | 
    
         
            +
                  The available typographical symbol names are:
         
     | 
| 
       488 
408 
     | 
    
         | 
| 
       489 
     | 
    
         
            -
            * hellip: ellipsis
         
     | 
| 
       490 
     | 
    
         
            -
            * mdash: em-dash
         
     | 
| 
       491 
     | 
    
         
            -
            * ndash: en-dash
         
     | 
| 
       492 
     | 
    
         
            -
            * laquo: left guillemet
         
     | 
| 
       493 
     | 
    
         
            -
            * raquo: right guillemet
         
     | 
| 
       494 
     | 
    
         
            -
            * laquo_space: left guillemet followed by a space
         
     | 
| 
       495 
     | 
    
         
            -
            * raquo_space: right guillemet preceeded by a space
         
     | 
| 
      
 409 
     | 
    
         
            +
                  * hellip: ellipsis
         
     | 
| 
      
 410 
     | 
    
         
            +
                  * mdash: em-dash
         
     | 
| 
      
 411 
     | 
    
         
            +
                  * ndash: en-dash
         
     | 
| 
      
 412 
     | 
    
         
            +
                  * laquo: left guillemet
         
     | 
| 
      
 413 
     | 
    
         
            +
                  * raquo: right guillemet
         
     | 
| 
      
 414 
     | 
    
         
            +
                  * laquo_space: left guillemet followed by a space
         
     | 
| 
      
 415 
     | 
    
         
            +
                  * raquo_space: right guillemet preceeded by a space
         
     | 
| 
       496 
416 
     | 
    
         | 
| 
       497 
     | 
    
         
            -
            Default: {}
         
     | 
| 
       498 
     | 
    
         
            -
            Used by: HTML/Latex converter
         
     | 
| 
       499 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 417 
     | 
    
         
            +
                  Default: {}
         
     | 
| 
      
 418 
     | 
    
         
            +
                  Used by: HTML/Latex converter
         
     | 
| 
      
 419 
     | 
    
         
            +
                EOF
         
     | 
| 
       500 
420 
     | 
    
         
             
                  val = simple_hash_validator(val, :typographic_symbols)
         
     | 
| 
       501 
421 
     | 
    
         
             
                  val.keys.each do |k|
         
     | 
| 
       502 
422 
     | 
    
         
             
                    val[k.kind_of?(String) ? str_to_sym(k) : k] = val.delete(k).to_s
         
     | 
| 
         @@ -504,73 +424,63 @@ EOF 
     | 
|
| 
       504 
424 
     | 
    
         
             
                  val
         
     | 
| 
       505 
425 
     | 
    
         
             
                end
         
     | 
| 
       506 
426 
     | 
    
         | 
| 
       507 
     | 
    
         
            -
                define(:remove_block_html_tags, Boolean, true,  
     | 
| 
       508 
     | 
    
         
            -
            Remove block HTML tags
         
     | 
| 
      
 427 
     | 
    
         
            +
                define(:remove_block_html_tags, Boolean, true, <<~EOF)
         
     | 
| 
      
 428 
     | 
    
         
            +
                  Remove block HTML tags
         
     | 
| 
       509 
429 
     | 
    
         | 
| 
       510 
     | 
    
         
            -
            If this option is `true`, the RemoveHtmlTags converter removes
         
     | 
| 
       511 
     | 
    
         
            -
            block HTML tags.
         
     | 
| 
      
 430 
     | 
    
         
            +
                  If this option is `true`, the RemoveHtmlTags converter removes
         
     | 
| 
      
 431 
     | 
    
         
            +
                  block HTML tags.
         
     | 
| 
       512 
432 
     | 
    
         | 
| 
       513 
     | 
    
         
            -
            Default: true
         
     | 
| 
       514 
     | 
    
         
            -
            Used by: RemoveHtmlTags converter
         
     | 
| 
       515 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 433 
     | 
    
         
            +
                  Default: true
         
     | 
| 
      
 434 
     | 
    
         
            +
                  Used by: RemoveHtmlTags converter
         
     | 
| 
      
 435 
     | 
    
         
            +
                EOF
         
     | 
| 
       516 
436 
     | 
    
         | 
| 
       517 
     | 
    
         
            -
                define(:remove_span_html_tags, Boolean, false,  
     | 
| 
       518 
     | 
    
         
            -
            Remove span HTML tags
         
     | 
| 
      
 437 
     | 
    
         
            +
                define(:remove_span_html_tags, Boolean, false, <<~EOF)
         
     | 
| 
      
 438 
     | 
    
         
            +
                  Remove span HTML tags
         
     | 
| 
       519 
439 
     | 
    
         | 
| 
       520 
     | 
    
         
            -
            If this option is `true`, the RemoveHtmlTags converter removes
         
     | 
| 
       521 
     | 
    
         
            -
            span HTML tags.
         
     | 
| 
      
 440 
     | 
    
         
            +
                  If this option is `true`, the RemoveHtmlTags converter removes
         
     | 
| 
      
 441 
     | 
    
         
            +
                  span HTML tags.
         
     | 
| 
       522 
442 
     | 
    
         | 
| 
       523 
     | 
    
         
            -
            Default: false
         
     | 
| 
       524 
     | 
    
         
            -
            Used by: RemoveHtmlTags converter
         
     | 
| 
       525 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 443 
     | 
    
         
            +
                  Default: false
         
     | 
| 
      
 444 
     | 
    
         
            +
                  Used by: RemoveHtmlTags converter
         
     | 
| 
      
 445 
     | 
    
         
            +
                EOF
         
     | 
| 
       526 
446 
     | 
    
         | 
| 
       527 
     | 
    
         
            -
                define(:header_offset, Integer, 0,  
     | 
| 
       528 
     | 
    
         
            -
            Sets the output offset for headers
         
     | 
| 
      
 447 
     | 
    
         
            +
                define(:header_offset, Integer, 0, <<~EOF)
         
     | 
| 
      
 448 
     | 
    
         
            +
                  Sets the output offset for headers
         
     | 
| 
       529 
449 
     | 
    
         | 
| 
       530 
     | 
    
         
            -
            If this option is c (may also be negative) then a header with level n
         
     | 
| 
       531 
     | 
    
         
            -
            will be output as a header with level c+n. If c+n is lower than 1,
         
     | 
| 
       532 
     | 
    
         
            -
            level 1 will be used. If c+n is greater than 6, level 6 will be used.
         
     | 
| 
      
 450 
     | 
    
         
            +
                  If this option is c (may also be negative) then a header with level n
         
     | 
| 
      
 451 
     | 
    
         
            +
                  will be output as a header with level c+n. If c+n is lower than 1,
         
     | 
| 
      
 452 
     | 
    
         
            +
                  level 1 will be used. If c+n is greater than 6, level 6 will be used.
         
     | 
| 
       533 
453 
     | 
    
         | 
| 
       534 
     | 
    
         
            -
            Default: 0
         
     | 
| 
       535 
     | 
    
         
            -
            Used by: HTML converter, Kramdown converter, Latex converter
         
     | 
| 
       536 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 454 
     | 
    
         
            +
                  Default: 0
         
     | 
| 
      
 455 
     | 
    
         
            +
                  Used by: HTML converter, Kramdown converter, Latex converter
         
     | 
| 
      
 456 
     | 
    
         
            +
                EOF
         
     | 
| 
       537 
457 
     | 
    
         | 
| 
       538 
     | 
    
         
            -
                define(: 
     | 
| 
       539 
     | 
    
         
            -
             
     | 
| 
      
 458 
     | 
    
         
            +
                define(:syntax_highlighter, Symbol, :rouge, <<~EOF)
         
     | 
| 
      
 459 
     | 
    
         
            +
                  Set the syntax highlighter
         
     | 
| 
       540 
460 
     | 
    
         | 
| 
       541 
     | 
    
         
            -
             
     | 
| 
       542 
     | 
    
         
            -
             
     | 
| 
      
 461 
     | 
    
         
            +
                  Specifies the syntax highlighter that should be used for highlighting
         
     | 
| 
      
 462 
     | 
    
         
            +
                  code blocks and spans. If this option is set to +nil+, no syntax
         
     | 
| 
      
 463 
     | 
    
         
            +
                  highlighting is done.
         
     | 
| 
       543 
464 
     | 
    
         | 
| 
       544 
     | 
    
         
            -
             
     | 
| 
       545 
     | 
    
         
            -
             
     | 
| 
       546 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 465 
     | 
    
         
            +
                  Options for the syntax highlighter can be set with the
         
     | 
| 
      
 466 
     | 
    
         
            +
                  syntax_highlighter_opts configuration option.
         
     | 
| 
       547 
467 
     | 
    
         | 
| 
       548 
     | 
    
         
            -
             
     | 
| 
       549 
     | 
    
         
            -
             
     | 
| 
      
 468 
     | 
    
         
            +
                  Default: rouge
         
     | 
| 
      
 469 
     | 
    
         
            +
                  Used by: HTML/Latex converter
         
     | 
| 
      
 470 
     | 
    
         
            +
                EOF
         
     | 
| 
       550 
471 
     | 
    
         | 
| 
       551 
     | 
    
         
            -
             
     | 
| 
       552 
     | 
    
         
            -
             
     | 
| 
       553 
     | 
    
         
            -
            highlighting is done.
         
     | 
| 
      
 472 
     | 
    
         
            +
                define(:syntax_highlighter_opts, Object, {}, <<~EOF) do |val|
         
     | 
| 
      
 473 
     | 
    
         
            +
                  Set the syntax highlighter options
         
     | 
| 
       554 
474 
     | 
    
         | 
| 
       555 
     | 
    
         
            -
             
     | 
| 
       556 
     | 
    
         
            -
             
     | 
| 
      
 475 
     | 
    
         
            +
                  Specifies options for the syntax highlighter set via the
         
     | 
| 
      
 476 
     | 
    
         
            +
                  syntax_highlighter configuration option.
         
     | 
| 
       557 
477 
     | 
    
         | 
| 
       558 
     | 
    
         
            -
             
     | 
| 
       559 
     | 
    
         
            -
             
     | 
| 
       560 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 478 
     | 
    
         
            +
                  The value needs to be a hash with key-value pairs that are understood by
         
     | 
| 
      
 479 
     | 
    
         
            +
                  the used syntax highlighter.
         
     | 
| 
       561 
480 
     | 
    
         | 
| 
       562 
     | 
    
         
            -
             
     | 
| 
       563 
     | 
    
         
            -
             
     | 
| 
       564 
     | 
    
         
            -
             
     | 
| 
       565 
     | 
    
         
            -
            Specifies options for the syntax highlighter set via the
         
     | 
| 
       566 
     | 
    
         
            -
            syntax_highlighter configuration option.
         
     | 
| 
       567 
     | 
    
         
            -
             
     | 
| 
       568 
     | 
    
         
            -
            The value needs to be a hash with key-value pairs that are understood by
         
     | 
| 
       569 
     | 
    
         
            -
            the used syntax highlighter.
         
     | 
| 
       570 
     | 
    
         
            -
             
     | 
| 
       571 
     | 
    
         
            -
            Default: {}
         
     | 
| 
       572 
     | 
    
         
            -
            Used by: HTML/Latex converter
         
     | 
| 
       573 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 481 
     | 
    
         
            +
                  Default: {}
         
     | 
| 
      
 482 
     | 
    
         
            +
                  Used by: HTML/Latex converter
         
     | 
| 
      
 483 
     | 
    
         
            +
                EOF
         
     | 
| 
       574 
484 
     | 
    
         
             
                  val = simple_hash_validator(val, :syntax_highlighter_opts)
         
     | 
| 
       575 
485 
     | 
    
         
             
                  val.keys.each do |k|
         
     | 
| 
       576 
486 
     | 
    
         
             
                    val[k.kind_of?(String) ? str_to_sym(k) : k] = val.delete(k)
         
     | 
| 
         @@ -578,32 +488,32 @@ EOF 
     | 
|
| 
       578 
488 
     | 
    
         
             
                  val
         
     | 
| 
       579 
489 
     | 
    
         
             
                end
         
     | 
| 
       580 
490 
     | 
    
         | 
| 
       581 
     | 
    
         
            -
                define(:math_engine, Symbol, :mathjax,  
     | 
| 
       582 
     | 
    
         
            -
            Set the math engine
         
     | 
| 
      
 491 
     | 
    
         
            +
                define(:math_engine, Symbol, :mathjax, <<~EOF)
         
     | 
| 
      
 492 
     | 
    
         
            +
                  Set the math engine
         
     | 
| 
       583 
493 
     | 
    
         | 
| 
       584 
     | 
    
         
            -
            Specifies the math engine that should be used for converting math
         
     | 
| 
       585 
     | 
    
         
            -
            blocks/spans. If this option is set to +nil+, no math engine is used and
         
     | 
| 
       586 
     | 
    
         
            -
            the math blocks/spans are output as is.
         
     | 
| 
      
 494 
     | 
    
         
            +
                  Specifies the math engine that should be used for converting math
         
     | 
| 
      
 495 
     | 
    
         
            +
                  blocks/spans. If this option is set to +nil+, no math engine is used and
         
     | 
| 
      
 496 
     | 
    
         
            +
                  the math blocks/spans are output as is.
         
     | 
| 
       587 
497 
     | 
    
         | 
| 
       588 
     | 
    
         
            -
            Options for the selected math engine can be set with the
         
     | 
| 
       589 
     | 
    
         
            -
            math_engine_opts configuration option.
         
     | 
| 
      
 498 
     | 
    
         
            +
                  Options for the selected math engine can be set with the
         
     | 
| 
      
 499 
     | 
    
         
            +
                  math_engine_opts configuration option.
         
     | 
| 
       590 
500 
     | 
    
         | 
| 
       591 
     | 
    
         
            -
            Default: mathjax
         
     | 
| 
       592 
     | 
    
         
            -
            Used by: HTML converter
         
     | 
| 
       593 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 501 
     | 
    
         
            +
                  Default: mathjax
         
     | 
| 
      
 502 
     | 
    
         
            +
                  Used by: HTML converter
         
     | 
| 
      
 503 
     | 
    
         
            +
                EOF
         
     | 
| 
       594 
504 
     | 
    
         | 
| 
       595 
     | 
    
         
            -
                define(:math_engine_opts, Object, {},  
     | 
| 
       596 
     | 
    
         
            -
            Set the math engine options
         
     | 
| 
      
 505 
     | 
    
         
            +
                define(:math_engine_opts, Object, {}, <<~EOF) do |val|
         
     | 
| 
      
 506 
     | 
    
         
            +
                  Set the math engine options
         
     | 
| 
       597 
507 
     | 
    
         | 
| 
       598 
     | 
    
         
            -
            Specifies options for the math engine set via the math_engine
         
     | 
| 
       599 
     | 
    
         
            -
            configuration option.
         
     | 
| 
      
 508 
     | 
    
         
            +
                  Specifies options for the math engine set via the math_engine
         
     | 
| 
      
 509 
     | 
    
         
            +
                  configuration option.
         
     | 
| 
       600 
510 
     | 
    
         | 
| 
       601 
     | 
    
         
            -
            The value needs to be a hash with key-value pairs that are understood by
         
     | 
| 
       602 
     | 
    
         
            -
            the used math engine.
         
     | 
| 
      
 511 
     | 
    
         
            +
                  The value needs to be a hash with key-value pairs that are understood by
         
     | 
| 
      
 512 
     | 
    
         
            +
                  the used math engine.
         
     | 
| 
       603 
513 
     | 
    
         | 
| 
       604 
     | 
    
         
            -
            Default: {}
         
     | 
| 
       605 
     | 
    
         
            -
            Used by: HTML converter
         
     | 
| 
       606 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 514 
     | 
    
         
            +
                  Default: {}
         
     | 
| 
      
 515 
     | 
    
         
            +
                  Used by: HTML converter
         
     | 
| 
      
 516 
     | 
    
         
            +
                EOF
         
     | 
| 
       607 
517 
     | 
    
         
             
                  val = simple_hash_validator(val, :math_engine_opts)
         
     | 
| 
       608 
518 
     | 
    
         
             
                  val.keys.each do |k|
         
     | 
| 
       609 
519 
     | 
    
         
             
                    val[k.kind_of?(String) ? str_to_sym(k) : k] = val.delete(k)
         
     | 
| 
         @@ -611,70 +521,34 @@ EOF 
     | 
|
| 
       611 
521 
     | 
    
         
             
                  val
         
     | 
| 
       612 
522 
     | 
    
         
             
                end
         
     | 
| 
       613 
523 
     | 
    
         | 
| 
       614 
     | 
    
         
            -
                define(:footnote_backlink, String, '↩',  
     | 
| 
       615 
     | 
    
         
            -
            Defines the text that should be used for the footnote backlinks
         
     | 
| 
       616 
     | 
    
         
            -
             
     | 
| 
       617 
     | 
    
         
            -
            The footnote backlink is just text, so any special HTML characters will
         
     | 
| 
       618 
     | 
    
         
            -
            be escaped.
         
     | 
| 
       619 
     | 
    
         
            -
             
     | 
| 
       620 
     | 
    
         
            -
            If the footnote backlint text is an empty string, no footnote backlinks
         
     | 
| 
       621 
     | 
    
         
            -
            will be generated.
         
     | 
| 
      
 524 
     | 
    
         
            +
                define(:footnote_backlink, String, '↩', <<~EOF)
         
     | 
| 
      
 525 
     | 
    
         
            +
                  Defines the text that should be used for the footnote backlinks
         
     | 
| 
       622 
526 
     | 
    
         | 
| 
       623 
     | 
    
         
            -
             
     | 
| 
       624 
     | 
    
         
            -
             
     | 
| 
       625 
     | 
    
         
            -
            EOF
         
     | 
| 
      
 527 
     | 
    
         
            +
                  The footnote backlink is just text, so any special HTML characters will
         
     | 
| 
      
 528 
     | 
    
         
            +
                  be escaped.
         
     | 
| 
       626 
529 
     | 
    
         | 
| 
       627 
     | 
    
         
            -
             
     | 
| 
       628 
     | 
    
         
            -
             
     | 
| 
      
 530 
     | 
    
         
            +
                  If the footnote backlint text is an empty string, no footnote backlinks
         
     | 
| 
      
 531 
     | 
    
         
            +
                  will be generated.
         
     | 
| 
       629 
532 
     | 
    
         | 
| 
       630 
     | 
    
         
            -
             
     | 
| 
       631 
     | 
    
         
            -
             
     | 
| 
       632 
     | 
    
         
            -
             
     | 
| 
      
 533 
     | 
    
         
            +
                  Default: '&8617;'
         
     | 
| 
      
 534 
     | 
    
         
            +
                  Used by: HTML converter
         
     | 
| 
      
 535 
     | 
    
         
            +
                EOF
         
     | 
| 
       633 
536 
     | 
    
         | 
| 
       634 
     | 
    
         
            -
             
     | 
| 
       635 
     | 
    
         
            -
             
     | 
| 
       636 
     | 
    
         
            -
            case of a table), an extra paragraph with only the footnote backlink is
         
     | 
| 
       637 
     | 
    
         
            -
            created.
         
     | 
| 
      
 537 
     | 
    
         
            +
                define(:footnote_backlink_inline, Boolean, false, <<~EOF)
         
     | 
| 
      
 538 
     | 
    
         
            +
                  Specifies whether the footnote backlink should always be inline
         
     | 
| 
       638 
539 
     | 
    
         | 
| 
       639 
     | 
    
         
            -
             
     | 
| 
       640 
     | 
    
         
            -
             
     | 
| 
       641 
     | 
    
         
            -
             
     | 
| 
      
 540 
     | 
    
         
            +
                  With the default of false the footnote backlink is placed at the end of
         
     | 
| 
      
 541 
     | 
    
         
            +
                  the last paragraph if there is one, or an extra paragraph with only the
         
     | 
| 
      
 542 
     | 
    
         
            +
                  footnote backlink is created.
         
     | 
| 
       642 
543 
     | 
    
         | 
| 
       643 
     | 
    
         
            -
             
     | 
| 
       644 
     | 
    
         
            -
             
     | 
| 
      
 544 
     | 
    
         
            +
                  Setting this option to true tries to place the footnote backlink in the
         
     | 
| 
      
 545 
     | 
    
         
            +
                  last, possibly nested paragraph or header. If this fails (e.g. in the
         
     | 
| 
      
 546 
     | 
    
         
            +
                  case of a table), an extra paragraph with only the footnote backlink is
         
     | 
| 
      
 547 
     | 
    
         
            +
                  created.
         
     | 
| 
       645 
548 
     | 
    
         | 
| 
       646 
     | 
    
         
            -
             
     | 
| 
       647 
     | 
    
         
            -
             
     | 
| 
       648 
     | 
    
         
            -
             
     | 
| 
       649 
     | 
    
         
            -
             
     | 
| 
       650 
     | 
    
         
            -
            This option allows one to enable/disable certain GFM quirks, i.e. ways
         
     | 
| 
       651 
     | 
    
         
            -
            in which GFM parsing differs from kramdown parsing.
         
     | 
| 
       652 
     | 
    
         
            -
             
     | 
| 
       653 
     | 
    
         
            -
            The value has to be a list of quirk names that should be enabled,
         
     | 
| 
       654 
     | 
    
         
            -
            separated by commas. Possible names are:
         
     | 
| 
       655 
     | 
    
         
            -
             
     | 
| 
       656 
     | 
    
         
            -
            * paragraph_end
         
     | 
| 
       657 
     | 
    
         
            -
             
     | 
| 
       658 
     | 
    
         
            -
              Disables the kramdown restriction that at least one blank line has to
         
     | 
| 
       659 
     | 
    
         
            -
              be used after a paragraph before a new block element can be started.
         
     | 
| 
       660 
     | 
    
         
            -
             
     | 
| 
       661 
     | 
    
         
            -
              Note that if this quirk is used, lazy line wrapping does not fully
         
     | 
| 
       662 
     | 
    
         
            -
              work anymore!
         
     | 
| 
       663 
     | 
    
         
            -
             
     | 
| 
       664 
     | 
    
         
            -
            * no_auto_typographic
         
     | 
| 
       665 
     | 
    
         
            -
             
     | 
| 
       666 
     | 
    
         
            -
              Disables automatic conversion of some characters into their
         
     | 
| 
       667 
     | 
    
         
            -
              corresponding typographic symbols (like `--` to em-dash etc).
         
     | 
| 
       668 
     | 
    
         
            -
              This helps to achieve results closer to what GitHub Flavored
         
     | 
| 
       669 
     | 
    
         
            -
              Markdown produces.
         
     | 
| 
       670 
     | 
    
         
            -
             
     | 
| 
       671 
     | 
    
         
            -
            Default: paragraph_end
         
     | 
| 
       672 
     | 
    
         
            -
            Used by: GFM parser
         
     | 
| 
       673 
     | 
    
         
            -
            EOF
         
     | 
| 
       674 
     | 
    
         
            -
                  val = simple_array_validator(val, :gfm_quirks)
         
     | 
| 
       675 
     | 
    
         
            -
                  val.map! {|v| str_to_sym(v.to_s)}
         
     | 
| 
       676 
     | 
    
         
            -
                  val
         
     | 
| 
       677 
     | 
    
         
            -
                end
         
     | 
| 
      
 549 
     | 
    
         
            +
                  Default: false
         
     | 
| 
      
 550 
     | 
    
         
            +
                  Used by: HTML converter
         
     | 
| 
      
 551 
     | 
    
         
            +
                EOF
         
     | 
| 
       678 
552 
     | 
    
         | 
| 
       679 
553 
     | 
    
         
             
              end
         
     | 
| 
       680 
554 
     | 
    
         |