Hello community, here is the log from the commit of package rubygem-kramdown for openSUSE:Factory checked in at 2016-09-12 13:26:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-kramdown (Old) and /work/SRC/openSUSE:Factory/.rubygem-kramdown.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-kramdown" Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-kramdown/rubygem-kramdown.changes 2016-05-29 03:12:45.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.rubygem-kramdown.new/rubygem-kramdown.changes 2016-09-12 13:26:26.000000000 +0200 @@ -1,0 +2,6 @@ +Tue Aug 16 04:30:25 UTC 2016 - [email protected] + +- updated to version 1.12.0 + see installed news.feed + +------------------------------------------------------------------- Old: ---- kramdown-1.11.1.gem New: ---- kramdown-1.12.0.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-kramdown.spec ++++++ --- /var/tmp/diff_new_pack.Gb7NQZ/_old 2016-09-12 13:26:26.000000000 +0200 +++ /var/tmp/diff_new_pack.Gb7NQZ/_new 2016-09-12 13:26:26.000000000 +0200 @@ -24,7 +24,7 @@ # Name: rubygem-kramdown -Version: 1.11.1 +Version: 1.12.0 Release: 0 %define mod_name kramdown %define mod_full_name %{mod_name}-%{version} ++++++ kramdown-1.11.1.gem -> kramdown-1.12.0.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CONTRIBUTERS new/CONTRIBUTERS --- old/CONTRIBUTERS 2016-05-01 22:18:00.000000000 +0200 +++ new/CONTRIBUTERS 2016-08-15 10:55:25.000000000 +0200 @@ -1,6 +1,6 @@ Count Name ======= ==== - 802 Thomas Leitner <[email protected]> + 816 Thomas Leitner <[email protected]> 6 Gioele Barabucci <[email protected]> 4 Ted Pak <[email protected]> 4 Arne Brasseur <[email protected]> @@ -10,6 +10,7 @@ 3 Ben Armston <[email protected]> 3 Alex Marandon <[email protected]> 2 Tom Thorogood <[email protected]> + 2 Shuanglei Tao <[email protected]> 2 Parker Moore <[email protected]> 2 Nathanael Jones <[email protected]> 2 Max Meyer <[email protected]> @@ -43,4 +44,6 @@ 1 Diego Galeota <[email protected]> 1 Damien Pollet <[email protected]> 1 Christopher Jefferson <[email protected]> + 1 Cédric Boutillier <[email protected]> 1 Alex Tomlins <[email protected]> + 1 Alexey Vasiliev <[email protected]> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Rakefile new/Rakefile --- old/Rakefile 2016-05-01 22:18:00.000000000 +0200 +++ new/Rakefile 2016-08-15 10:55:25.000000000 +0200 @@ -75,7 +75,7 @@ if defined?(Webgen) desc "Generate the HTML documentation" task :htmldoc do - ruby "-S webgen" + ruby "-Ilib -S webgen" end CLOBBER << "htmldoc/" CLOBBER << "webgen-tmp" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/VERSION new/VERSION --- old/VERSION 2016-05-01 22:18:00.000000000 +0200 +++ new/VERSION 2016-08-15 10:55:25.000000000 +0200 @@ -1 +1 @@ -1.11.1 +1.12.0 Files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/index.page new/doc/index.page --- old/doc/index.page 2016-05-01 22:18:00.000000000 +0200 +++ new/doc/index.page 2016-08-15 10:55:25.000000000 +0200 @@ -97,8 +97,8 @@ It is probably the fastest pure-Ruby Markdown converter available (September 2014), being about 3x faster than [Maruku] and about 4.5x faster than [BlueFeather]. -Version **1.11.1**{:itemprop="softwareVersion"} released on -**2016-05-01**{:itemprop="datePublished"}, [more news](news.html) +Version **1.12.0**{:itemprop="softwareVersion"} released on +**2016-08-15**{:itemprop="datePublished"}, [more news](news.html) {: style="text-align: center; font-size: 80%"} </div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/syntax.page new/doc/syntax.page --- old/doc/syntax.page 2016-05-01 22:18:00.000000000 +0200 +++ new/doc/syntax.page 2016-08-15 10:55:25.000000000 +0200 @@ -500,6 +500,46 @@ > Also, Markdown uses a fixed number of spaces/tabs to indent the lines that > belong to a list item! {: .markdown-difference} +Unordered and ordered lists work the same way in regard to the indentation: + + * list 1 item 1 + * list 1 item 2 (indent 1 space) + * list 1 item 3 (indent 2 spaces) + * list 1 item 4 (indent 3 spaces) + * lazy text belonging to above item 4 + +^ + + 1. list 1 item 1 + 2. list 1 item 2 (indent 1 space) + 3. list 1 item 3 (indent 2 spaces) + 4. list 1 item 4 (indent 3 spaces) + 5. lazy text belonging to above item 4 + +^ + + * list 1 item 1 + * nested list item 1 + * nested list item 2 + * list 1 item 2 + * nested list item 1 + +^ + + 1. list 1 item 1 + 1. nested list item 1 + 2. nested list item 2 + 10. list 1 item 2 + 1. nested list item 1 + +^ + + 1. text for this list item + further text (indent 3 spaces) + + 10. text for this list item + further text (indent 4 spaces) + When using tabs for indenting the content of a list item, remember that tab stops occur at multiples of four for kramdown. Tabs are correctly converted to spaces for calculating the indentation. For example: @@ -642,7 +682,8 @@ separated from the preceding paragraph by a blank line. The leading tabs or spaces are stripped away from this first line of the definition to allow for a nice alignment with the following definition content. Each line of the preceding paragraph is taken to be a term and the lines separately parsed -as span-level elements. +as span-level elements. Each such term may optionally start with an [IAL](#inline-attribute-lists) +that should be applied to the term. The following is a simple definition list: @@ -697,6 +738,16 @@ The rules about having any block-level element as first element in a list item also apply to a definition. +As mentioned at the beginning, an optional IAL for applying attributes to a term or a definition can +be used: + + {:#term} Term with id="term" + : {:.cls} Definition with class "cls" + + {:#term1} First term + {:#term2} Second term + : {:.cls} Definition + ## Tables diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/kramdown/compatibility.rb new/lib/kramdown/compatibility.rb --- old/lib/kramdown/compatibility.rb 2016-05-01 22:18:00.000000000 +0200 +++ new/lib/kramdown/compatibility.rb 2016-08-15 10:55:25.000000000 +0200 @@ -10,6 +10,8 @@ # # :stopdoc: +require 'rbconfig' + if RUBY_VERSION <= '1.8.6' require 'rexml/parsers/baseparser' module REXML @@ -34,3 +36,13 @@ end end + +if !Symbol.instance_methods.include?("<=>") + + class Symbol + def <=>(other) + self.to_s <=> other.to_s + end + end + +end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/kramdown/converter/base.rb new/lib/kramdown/converter/base.rb --- old/lib/kramdown/converter/base.rb 2016-05-01 22:18:00.000000000 +0200 +++ new/lib/kramdown/converter/base.rb 2016-08-15 10:55:25.000000000 +0200 @@ -231,10 +231,7 @@ # ID. def generate_id(str) str = ::Kramdown::Utils::Unidecoder.decode(str) if @options[:transliterated_header_ids] - gen_id = str.gsub(/^[^a-zA-Z]+/, '') - gen_id.tr!('^a-zA-Z0-9 -', '') - gen_id.tr!(' ', '-') - gen_id.downcase! + gen_id = basic_generate_id(str) gen_id = 'section' if gen_id.length == 0 @used_ids ||= {} if @used_ids.has_key?(gen_id) @@ -245,6 +242,16 @@ @options[:auto_id_prefix] + gen_id end + # The basic version of the ID generator, without any special provisions for empty or unique + # IDs. + def basic_generate_id(str) + gen_id = str.gsub(/^[^a-zA-Z]+/, '') + gen_id.tr!('^a-zA-Z0-9 -', '') + gen_id.tr!(' ', '-') + gen_id.downcase! + gen_id + end + SMART_QUOTE_INDICES = {:lsquo => 0, :rsquo => 1, :ldquo => 2, :rdquo => 3} # :nodoc: # Return the entity that represents the given smart_quote element. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/kramdown/converter/html.rb new/lib/kramdown/converter/html.rb --- old/lib/kramdown/converter/html.rb 2016-05-01 22:18:00.000000000 +0200 +++ new/lib/kramdown/converter/html.rb 2016-08-15 10:55:25.000000000 +0200 @@ -165,7 +165,14 @@ alias :convert_dd :convert_li def convert_dt(el, indent) - format_as_block_html(el.type, el.attr, inner(el, indent), indent) + attr = el.attr.dup + @stack.last.options[:ial][:refs].each do |ref| + if ref =~ /\Aauto_ids(?:-([\w-]+))?/ + attr['id'] = ($1 ? $1 : '') << basic_generate_id(el.options[:raw_text]) + break + end + end if !attr['id'] && @stack.last.options[:ial] && @stack.last.options[:ial][:refs] + format_as_block_html(el.type, attr, inner(el, indent), indent) end def convert_html_element(el, indent) @@ -236,14 +243,7 @@ end def convert_a(el, indent) - res = inner(el, indent) - attr = el.attr.dup - if attr['href'].start_with?('mailto:') - mail_addr = attr['href'][7..-1] - attr['href'] = obfuscate('mailto') << ":" << obfuscate(mail_addr) - res = obfuscate(res) if res == mail_addr - end - format_as_span_html(el.type, attr, res) + format_as_span_html(el.type, el.attr, inner(el, indent)) end def convert_img(el, indent) @@ -315,10 +315,14 @@ def convert_math(el, indent) if (result = format_math(el, :indent => indent)) result - elsif el.options[:category] == :block - format_as_block_html('pre', el.attr, "$$\n#{el.value}\n$$", indent) else - format_as_span_html('span', el.attr, "$#{el.value}$") + attr = el.attr.dup + (attr['class'] = (attr['class'] || '') << " kdmath").lstrip! + if el.options[:category] == :block + format_as_block_html('div', attr, "$$\n#{el.value}\n$$", indent) + else + format_as_span_html('span', attr, "$#{el.value}$") + end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/kramdown/converter/kramdown.rb new/lib/kramdown/converter/kramdown.rb --- old/lib/kramdown/converter/kramdown.rb 2016-05-01 22:18:00.000000000 +0200 +++ new/lib/kramdown/converter/kramdown.rb 2016-08-15 10:55:25.000000000 +0200 @@ -31,7 +31,7 @@ def convert(el, opts = {:indent => 0}) res = send("convert_#{el.type}", el, opts) - if ![:html_element, :li, :dd, :td].include?(el.type) && (ial = ial_for_element(el)) + if ![:html_element, :li, :dt, :dd, :td].include?(el.type) && (ial = ial_for_element(el)) res << ial res << "\n\n" if Element.category(el) == :block elsif [:ul, :dl, :ol, :codeblock].include?(el.type) && opts[:next] && @@ -174,7 +174,11 @@ end def convert_dt(el, opts) - inner(el, opts) << "\n" + result = '' + if ial = ial_for_element(el) + result << ial << " " + end + result << inner(el, opts) << "\n" end HTML_TAGS_WITH_BODY=['div', 'script', 'iframe', 'textarea'] @@ -414,6 +418,10 @@ (el.options[:ial][:refs].include?('toc') rescue nil) res = "footnotes" << (res.strip.empty? ? '' : " #{res}") if (el.type == :ul || el.type == :ol) && (el.options[:ial][:refs].include?('footnotes') rescue nil) + if el.type == :dl && el.options[:ial] && el.options[:ial][:refs] + auto_ids = el.options[:ial][:refs].select {|ref| ref =~ /\Aauto_ids/}.join(" ") + res = auto_ids << (res.strip.empty? ? '' : " #{res}") unless auto_ids.empty? + end res.strip.empty? ? nil : "{:#{res}}" end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/kramdown/converter/syntax_highlighter/rouge.rb new/lib/kramdown/converter/syntax_highlighter/rouge.rb --- old/lib/kramdown/converter/syntax_highlighter/rouge.rb 2016-05-01 22:18:00.000000000 +0200 +++ new/lib/kramdown/converter/syntax_highlighter/rouge.rb 2016-08-15 10:55:25.000000000 +0200 @@ -27,7 +27,7 @@ lexer = ::Rouge::Lexer.find_fancy(lang || opts[:default_lang], text) return nil if opts[:disable] || !lexer - formatter = (opts.delete(:formatter) || ::Rouge::Formatters::HTML).new(opts) + formatter = (opts.fetch(:formatter, ::Rouge::Formatters::HTML)).new(opts) formatter.format(lexer.lex(text)) end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/kramdown/document.rb new/lib/kramdown/document.rb --- old/lib/kramdown/document.rb 2016-05-01 22:18:00.000000000 +0200 +++ new/lib/kramdown/document.rb 2016-08-15 10:55:25.000000000 +0200 @@ -53,7 +53,7 @@ unless defined?(@@data_dir) require 'rbconfig' @@data_dir = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'data', 'kramdown')) - @@data_dir = File.expand_path(File.join(Config::CONFIG["datadir"], "kramdown")) if !File.exists?(@@data_dir) + @@data_dir = File.expand_path(File.join(RbConfig::CONFIG["datadir"], "kramdown")) if !File.exists?(@@data_dir) raise "kramdown data directory not found! This is a bug, please report it!" unless File.directory?(@@data_dir) end @@data_dir diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/kramdown/options.rb new/lib/kramdown/options.rb --- old/lib/kramdown/options.rb 2016-05-01 22:18:00.000000000 +0200 +++ new/lib/kramdown/options.rb 2016-08-15 10:55:25.000000000 +0200 @@ -133,14 +133,14 @@ # - a comma separated string which is split into an array of values # - or an array. # - # Additionally, the array is checked for the correct size. - def self.simple_array_validator(val, name, size) + # Optionally, the array is checked for the correct size. + def self.simple_array_validator(val, name, size = nil) if String === val val = val.split(/,/) elsif !(Array === val) raise Kramdown::Error, "Invalid type #{val.class} for option #{name}" end - if val.size != size + if size && val.size != size raise Kramdown::Error, "Option #{name} needs exactly #{size} values" end val @@ -593,6 +593,35 @@ Used by: HTML converter EOF + define(:gfm_quirks, Object, [:paragraph_end], <<EOF) do |val| +Enables a set of GFM specific quirks + +The way how GFM is transformed on Github often differs from the way +kramdown does things. Many of these differences are negligible but +others are not. + +This option allows one to enable/disable certain GFM quirks, i.e. ways +in which GFM parsing differs from kramdown parsing. + +The value has to be a list of quirk names that should be enabled, +separated by commas. Possible names are: + +* paragraph_end + + Disables the kramdown restriction that at least one blank line has to + be used after a paragraph before a new block element can be started. + + Note that if this quirk is used, lazy line wrapping does not fully + work anymore! + +Default: paragraph_end +Used by: GFM parser +EOF + val = simple_array_validator(val, :gfm_quirks) + val.map! {|v| str_to_sym(v.to_s)} + val + end + end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/kramdown/parser/gfm.rb new/lib/kramdown/parser/gfm.rb --- old/lib/kramdown/parser/gfm.rb 2016-05-01 22:18:00.000000000 +0200 +++ new/lib/kramdown/parser/gfm.rb 2016-08-15 10:55:25.000000000 +0200 @@ -17,8 +17,16 @@ def initialize(source, options) super @span_parsers.delete(:line_break) if @options[:hard_wrap] + if @options[:gfm_quirks].include?(:paragraph_end) + atx_header_parser = :atx_header_gfm_quirk + @paragraph_end = self.class::PARAGRAPH_END_GFM + else + atx_header_parser = :atx_header_gfm + @paragraph_end = self.class::PARAGRAPH_END + end + {:codeblock_fenced => :codeblock_fenced_gfm, - :atx_header => :atx_header_gfm}.each do |current, replacement| + :atx_header => atx_header_parser}.each do |current, replacement| i = @block_parsers.index(current) @block_parsers.delete(current) @block_parsers.insert(i, replacement) @@ -60,9 +68,26 @@ ATX_HEADER_START = /^\#{1,6}\s/ define_parser(:atx_header_gfm, ATX_HEADER_START, nil, 'parse_atx_header') + define_parser(:atx_header_gfm_quirk, ATX_HEADER_START) + + # Copied from kramdown/parser/kramdown/header.rb, removed the first line + def parse_atx_header_gfm_quirk + start_line_number = @src.current_line_number + @src.check(ATX_HEADER_MATCH) + level, text, id = @src[1], @src[2].to_s.strip, @src[3] + return false if text.empty? + + @src.pos += @src.matched_size + el = new_block_el(:header, nil, nil, :level => level.length, :raw_text => text, :location => start_line_number) + add_text(text, el) + el.attr['id'] = id if id + @tree.children << el + true + end + FENCED_CODEBLOCK_START = /^[~`]{3,}/ FENCED_CODEBLOCK_MATCH = /^(([~`]){3,})\s*?((\S+?)(?:\?\S*)?)?\s*?\n(.*?)^\1\2*\s*?\n/m - define_parser(:codeblock_fenced_gfm, /^[~`]{3,}/, nil, 'parse_codeblock_fenced') + define_parser(:codeblock_fenced_gfm, FENCED_CODEBLOCK_START, nil, 'parse_codeblock_fenced') STRIKETHROUGH_DELIM = /~~/ STRIKETHROUGH_MATCH = /#{STRIKETHROUGH_DELIM}[^\s~](.*?)[^\s~]#{STRIKETHROUGH_DELIM}/m @@ -87,6 +112,12 @@ ESCAPED_CHARS_GFM = /\\([\\.*_+`<>()\[\]{}#!:\|"'\$=\-~])/ define_parser(:escaped_chars_gfm, ESCAPED_CHARS_GFM, '\\\\', :parse_escaped_chars) + PARAGRAPH_END_GFM = /#{LAZY_END}|#{LIST_START}|#{ATX_HEADER_START}|#{DEFINITION_LIST_START}|#{BLOCKQUOTE_START}|#{FENCED_CODEBLOCK_START}/ + + def paragraph_end + @paragraph_end + end + end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/kramdown/parser/html.rb new/lib/kramdown/parser/html.rb --- old/lib/kramdown/parser/html.rb 2016-05-01 22:18:00.000000000 +0200 +++ new/lib/kramdown/parser/html.rb 2016-08-15 10:55:25.000000000 +0200 @@ -35,8 +35,8 @@ HTML_ENTITY_RE = /&([\w:][\-\w\.:]*);|&#(\d+);|&\#x([0-9a-fA-F]+);/ HTML_CONTENT_MODEL_BLOCK = %w{address applet article aside blockquote body - dd details div dl fieldset figure figcaption footer form header hgroup iframe li map menu nav - noscript object section summary td} + dd details div dl fieldset figure figcaption footer form header hgroup iframe li main + map menu nav noscript object section summary td} HTML_CONTENT_MODEL_SPAN = %w{a abbr acronym b bdo big button cite caption del dfn dt em h1 h2 h3 h4 h5 h6 i ins label legend optgroup p q rb rbc rp rt rtc ruby select small span strong sub sup th tt} @@ -57,7 +57,7 @@ strong sub sup tt u var} HTML_BLOCK_ELEMENTS = %w{address article aside applet body blockquote caption col colgroup dd div dl dt fieldset figcaption footer form h1 h2 h3 h4 h5 h6 header hgroup hr html head iframe legend menu - li map nav ol optgroup p pre section summary table tbody td th thead tfoot tr ul} + li main map nav ol optgroup p pre section summary table tbody td th thead tfoot tr ul} HTML_ELEMENTS_WITHOUT_BODY = %w{area base br col command embed hr img input keygen link meta param source track wbr} HTML_ELEMENT = Hash.new(false) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/kramdown/parser/kramdown/list.rb new/lib/kramdown/parser/kramdown/list.rb --- old/lib/kramdown/parser/kramdown/list.rb 2016-05-01 22:18:00.000000000 +0200 +++ new/lib/kramdown/parser/kramdown/list.rb 2016-08-15 10:55:25.000000000 +0200 @@ -166,6 +166,11 @@ deflist.options[:location] = para.options[:location] # take location from preceding para which is the first definition term para.children.first.value.split(/\n/).each do |term| el = Element.new(:dt, nil, nil, :location => @src.current_line_number) + term.sub!(self.class::LIST_ITEM_IAL) do + parse_attribute_list($1, el.options[:ial] ||= {}) + '' + end + el.options[:raw_text] = term el.children << Element.new(:raw_text, term) deflist.children << el end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/kramdown/parser/kramdown/paragraph.rb new/lib/kramdown/parser/kramdown/paragraph.rb --- old/lib/kramdown/parser/kramdown/paragraph.rb 2016-05-01 22:18:00.000000000 +0200 +++ new/lib/kramdown/parser/kramdown/paragraph.rb 2016-08-15 10:55:25.000000000 +0200 @@ -31,7 +31,7 @@ def parse_paragraph start_line_number = @src.current_line_number result = @src.scan(PARAGRAPH_MATCH) - while [email protected]?(self.class::PARAGRAPH_END) + while [email protected]?(paragraph_end) result << @src.scan(PARAGRAPH_MATCH) end result.rstrip! @@ -46,6 +46,10 @@ end define_parser(:paragraph, PARAGRAPH_START) + def paragraph_end + self.class::PARAGRAPH_END + end + end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/kramdown/parser/kramdown.rb new/lib/kramdown/parser/kramdown.rb --- old/lib/kramdown/parser/kramdown.rb 2016-05-01 22:18:00.000000000 +0200 +++ new/lib/kramdown/parser/kramdown.rb 2016-08-15 10:55:25.000000000 +0200 @@ -178,7 +178,11 @@ last_blank = nil update_tree(child) update_attr_with_ial(child.attr, child.options[:ial]) if child.options[:ial] - update_raw_header_text(child) if child.type == :header + # DEPRECATED: option auto_id_stripping will be removed in 2.0 because then this will be + # the default behaviour + if child.type == :dt || (child.type == :header && @options[:auto_id_stripping]) + update_raw_text(child) + end child end end.flatten! @@ -267,11 +271,8 @@ end end - # Update the raw header text for automatic ID generation. - def update_raw_header_text(header) - # DEPRECATED: option auto_id_stripping will be removed in 2.0 because then this will be the - # default behaviour - return unless @options[:auto_id_stripping] + # Update the raw text for automatic ID generation. + def update_raw_text(item) raw_text = '' append_text = lambda do |child| @@ -282,8 +283,8 @@ end end - append_text.call(header) - header.options[:raw_text] = raw_text + append_text.call(item) + item.options[:raw_text] = raw_text end # Create a new block-level element, taking care of applying a preceding block IAL if it diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/kramdown/version.rb new/lib/kramdown/version.rb --- old/lib/kramdown/version.rb 2016-05-01 22:18:00.000000000 +0200 +++ new/lib/kramdown/version.rb 2016-08-15 10:55:25.000000000 +0200 @@ -10,6 +10,6 @@ module Kramdown # The kramdown version. - VERSION = '1.11.1' + VERSION = '1.12.0' end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/man/man1/kramdown.1 new/man/man1/kramdown.1 --- old/man/man1/kramdown.1 2016-05-01 22:18:00.000000000 +0200 +++ new/man/man1/kramdown.1 2016-08-15 10:55:25.000000000 +0200 @@ -209,6 +209,33 @@ .TP +.B \-\-gfm-quirks ARG + +Enables a set of GFM specific quirks + +The way how GFM is transformed on Github often differs from the way +kramdown does things. Many of these differences are negligible but +others are not. + +This option allows one to enable/disable certain GFM quirks, i.e. ways +in which GFM parsing differs from kramdown parsing. + +The value has to be a list of quirk names that should be enabled, +separated by commas. Possible names are: + +* paragraph_end + + Disables the kramdown restriction that at least one blank line has to + be used after a paragraph before a new block element can be started. + + Note that if this quirk is used, lazy line wrapping does not fully + work anymore! + +Default: paragraph_end +Used by: GFM parser + + +.TP .B \-\-[no\-]hard-wrap Interprets line breaks literally diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2016-05-01 22:18:00.000000000 +0200 +++ new/metadata 2016-08-15 10:55:25.000000000 +0200 @@ -1,14 +1,14 @@ --- !ruby/object:Gem::Specification name: kramdown version: !ruby/object:Gem::Version - version: 1.11.1 + version: 1.12.0 platform: ruby authors: - Thomas Leitner autorequire: bindir: bin cert_chain: [] -date: 2016-05-01 00:00:00.000000000 Z +date: 2016-08-15 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: minitest @@ -316,6 +316,9 @@ - test/testcases/block/06_codeblock/rouge/disabled.html - test/testcases/block/06_codeblock/rouge/disabled.options - test/testcases/block/06_codeblock/rouge/disabled.text +- test/testcases/block/06_codeblock/rouge/multiple.html +- test/testcases/block/06_codeblock/rouge/multiple.options +- test/testcases/block/06_codeblock/rouge/multiple.text - test/testcases/block/06_codeblock/rouge/simple.html - test/testcases/block/06_codeblock/rouge/simple.options - test/testcases/block/06_codeblock/rouge/simple.text @@ -467,6 +470,8 @@ - test/testcases/block/12_extension/options2.text - test/testcases/block/12_extension/options3.html - test/testcases/block/12_extension/options3.text +- test/testcases/block/13_definition_list/auto_ids.html +- test/testcases/block/13_definition_list/auto_ids.text - test/testcases/block/13_definition_list/definition_at_beginning.html - test/testcases/block/13_definition_list/definition_at_beginning.text - test/testcases/block/13_definition_list/deflist_ial.html @@ -525,6 +530,9 @@ - test/testcases/block/15_math/mathjaxnode_semantics.html.19 - test/testcases/block/15_math/mathjaxnode_semantics.options - test/testcases/block/15_math/mathjaxnode_semantics.text +- test/testcases/block/15_math/no_engine.html +- test/testcases/block/15_math/no_engine.options +- test/testcases/block/15_math/no_engine.text - test/testcases/block/15_math/normal.html - test/testcases/block/15_math/normal.text - test/testcases/block/15_math/ritex.html @@ -657,6 +665,9 @@ - test/testcases/span/math/mathjaxnode.html.19 - test/testcases/span/math/mathjaxnode.options - test/testcases/span/math/mathjaxnode.text +- test/testcases/span/math/no_engine.html +- test/testcases/span/math/no_engine.options +- test/testcases/span/math/no_engine.text - test/testcases/span/math/normal.html - test/testcases/span/math/normal.text - test/testcases/span/math/ritex.html @@ -697,6 +708,11 @@ - test/testcases_gfm/hard_line_breaks_off.html - test/testcases_gfm/hard_line_breaks_off.options - test/testcases_gfm/hard_line_breaks_off.text +- test/testcases_gfm/paragraph_end-disabled.html +- test/testcases_gfm/paragraph_end-disabled.options +- test/testcases_gfm/paragraph_end-disabled.text +- test/testcases_gfm/paragraph_end.html +- test/testcases_gfm/paragraph_end.text - test/testcases_gfm/strikethrough.html - test/testcases_gfm/strikethrough.html.19 - test/testcases_gfm/strikethrough.text diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/test_files.rb new/test/test_files.rb --- old/test/test_files.rb 2016-05-01 22:18:00.000000000 +0200 +++ new/test/test_files.rb 2016-08-15 10:55:25.000000000 +0200 @@ -12,6 +12,22 @@ require 'yaml' require 'tmpdir' +begin + require 'kramdown/converter/syntax_highlighter/rouge' + + # custom formatter for tests + class RougeHTMLFormatters < ::Rouge::Formatters::HTML + tag 'rouge_html_formatters' + + def stream(tokens, &b) + yield %(<div class="custom-class">) + super + yield %(</div>) + end + end +rescue LoadError, SyntaxError, NameError +end + Encoding.default_external = 'utf-8' if RUBY_VERSION >= '1.9' class TestFiles < Minitest::Test @@ -19,7 +35,8 @@ EXCLUDE_KD_FILES = [('test/testcases/block/04_header/with_auto_ids.text' if RUBY_VERSION <= '1.8.6'), # bc of dep stringex not working ('test/testcases/span/03_codespan/rouge/' if RUBY_VERSION < '2.0'), #bc of rouge ('test/testcases/block/06_codeblock/rouge/' if RUBY_VERSION < '2.0'), #bc of rouge - + ('test/testcases/block/15_math/itex2mml.text' if RUBY_PLATFORM == 'java'), # bc of itextomml + ('test/testcases/span/math/itex2mml.text' if RUBY_PLATFORM == 'java'), # bc of itextomml ].compact # Generate test methods for kramdown-to-xxx conversion @@ -52,6 +69,7 @@ 'test/testcases/block/04_header/with_auto_ids.html', # bc of auto_ids=true option 'test/testcases/block/04_header/header_type_offset.html', # bc of header_offset option 'test/testcases/block/06_codeblock/rouge/simple.html', # bc of double surrounding <div> + 'test/testcases/block/06_codeblock/rouge/multiple.html', # bc of double surrounding <div> ('test/testcases/span/03_codespan/rouge/simple.html' if RUBY_VERSION < '2.0'), ('test/testcases/span/03_codespan/rouge/disabled.html' if RUBY_VERSION < '2.0'), 'test/testcases/block/15_math/ritex.html', # bc of tidy @@ -161,6 +179,7 @@ ('test/testcases/span/03_codespan/rouge/simple.text' if RUBY_VERSION < '2.0'), #bc of rouge ('test/testcases/span/03_codespan/rouge/disabled.text' if RUBY_VERSION < '2.0'), #bc of rouge 'test/testcases/block/06_codeblock/rouge/simple.text', + 'test/testcases/block/06_codeblock/rouge/multiple.text', # check, what document contain more, than one code block 'test/testcases/block/15_math/ritex.text', # bc of tidy 'test/testcases/span/math/ritex.text', # bc of tidy 'test/testcases/block/15_math/itex2mml.text', # bc of tidy @@ -203,6 +222,7 @@ 'test/testcases/block/09_html/html_to_native/table_simple.html', # bc of invalidly converted simple table 'test/testcases/block/06_codeblock/whitespace.html', # bc of entity to char conversion 'test/testcases/block/06_codeblock/rouge/simple.html', # bc of double surrounding <div> + 'test/testcases/block/06_codeblock/rouge/multiple.html', # bc of double surrounding <div> 'test/testcases/block/11_ial/simple.html', # bc of change of ordering of attributes in header 'test/testcases/span/03_codespan/highlighting.html', # bc of span elements inside code element 'test/testcases/block/04_header/with_auto_ids.html', # bc of auto_ids=true option @@ -294,6 +314,7 @@ 'test/testcases/span/extension/comment.text', 'test/testcases/span/ial/simple.text', 'test/testcases/span/line_breaks/normal.text', + 'test/testcases/span/math/normal.text', 'test/testcases/span/text_substitutions/entities_as_char.text', 'test/testcases/span/text_substitutions/entities.text', 'test/testcases/span/text_substitutions/typography.text', @@ -301,6 +322,9 @@ ('test/testcases/span/03_codespan/rouge/disabled.text' if RUBY_VERSION < '2.0'), ('test/testcases/block/06_codeblock/rouge/simple.text' if RUBY_VERSION < '2.0'), #bc of rouge ('test/testcases/block/06_codeblock/rouge/disabled.text' if RUBY_VERSION < '2.0'), #bc of rouge + ('test/testcases/block/06_codeblock/rouge/multiple.text' if RUBY_VERSION < '2.0'), #bc of rouge + ('test/testcases/block/15_math/itex2mml.text' if RUBY_PLATFORM == 'java'), # bc of itextomml + ('test/testcases/span/math/itex2mml.text' if RUBY_PLATFORM == 'java'), # bc of itextomml ].compact # Generate test methods for gfm-to-html conversion @@ -331,11 +355,15 @@ 'test/testcases/block/04_header/with_auto_ids.text', ].compact + EXCLUDE_MODIFY = ['test/testcases/block/06_codeblock/rouge/multiple.text', # bc of HTMLFormater in options + ] + # Generate test methods for asserting that converters don't modify the document tree. Dir[File.dirname(__FILE__) + '/testcases/**/*.text'].each do |text_file| opts_file = text_file.sub(/\.text$/, '.options') options = File.exist?(opts_file) ? YAML::load(File.read(opts_file)) : {:auto_ids => false, :footnote_nr => 1} (Kramdown::Converter.constants.map {|c| c.to_sym} - [:Base, :RemoveHtmlTags, :MathEngine, :SyntaxHighlighter]).each do |conv_class| + next if EXCLUDE_MODIFY.any? {|f| text_file =~ /#{f}$/} next if conv_class == :Pdf && (RUBY_VERSION < '2.0' || EXCLUDE_PDF_MODIFY.any? {|f| text_file =~ /#{f}$/}) define_method("test_whether_#{conv_class}_modifies_tree_with_file_#{text_file.tr('.', '_')}") do doc = Kramdown::Document.new(File.read(text_file), options) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/testcases/block/06_codeblock/rouge/multiple.html new/test/testcases/block/06_codeblock/rouge/multiple.html --- old/test/testcases/block/06_codeblock/rouge/multiple.html 1970-01-01 01:00:00.000000000 +0100 +++ new/test/testcases/block/06_codeblock/rouge/multiple.html 2016-08-15 10:55:25.000000000 +0200 @@ -0,0 +1,11 @@ +<div class="language-ruby highlighter-rouge"><div class="custom-class"><pre class="highlight"><code><span class="nb">puts</span> <span class="s2">"Hello"</span> +</code></pre> +</div></div> + +<div class="language-ruby highlighter-rouge"><div class="custom-class"><pre class="highlight"><code><span class="nb">puts</span> <span class="s2">"World"</span> +</code></pre> +</div></div> + +<div class="language-php highlighter-rouge"><div class="custom-class"><pre class="highlight"><code><span class="nv">$foo</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Bar</span><span class="p">;</span> +</code></pre> +</div></div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/testcases/block/06_codeblock/rouge/multiple.options new/test/testcases/block/06_codeblock/rouge/multiple.options --- old/test/testcases/block/06_codeblock/rouge/multiple.options 1970-01-01 01:00:00.000000000 +0100 +++ new/test/testcases/block/06_codeblock/rouge/multiple.options 2016-08-15 10:55:25.000000000 +0200 @@ -0,0 +1,4 @@ +:syntax_highlighter: rouge +:syntax_highlighter_opts: + default_lang: ruby + formatter: !ruby/class 'RougeHTMLFormatters' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/testcases/block/06_codeblock/rouge/multiple.text new/test/testcases/block/06_codeblock/rouge/multiple.text --- old/test/testcases/block/06_codeblock/rouge/multiple.text 1970-01-01 01:00:00.000000000 +0100 +++ new/test/testcases/block/06_codeblock/rouge/multiple.text 2016-08-15 10:55:25.000000000 +0200 @@ -0,0 +1,11 @@ +~~~ ruby +puts "Hello" +~~~ + +~~~ ruby +puts "World" +~~~ + +~~~ php?start_inline=1 +$foo = new Bar; +~~~ \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/testcases/block/13_definition_list/auto_ids.html new/test/testcases/block/13_definition_list/auto_ids.html --- old/test/testcases/block/13_definition_list/auto_ids.html 1970-01-01 01:00:00.000000000 +0100 +++ new/test/testcases/block/13_definition_list/auto_ids.html 2016-08-15 10:55:25.000000000 +0200 @@ -0,0 +1,15 @@ +<dl> + <dt id="item">item</dt> + <dd>def</dd> + <dt id="item2">item2</dt> + <dd>def</dd> +</dl> + +<dl> + <dt id="prefix-item">item</dt> + <dd>def</dd> + <dt id="prefix-item2">item2</dt> + <dd>def</dd> + <dt id="id">item3</dt> + <dd>def</dd> +</dl> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/testcases/block/13_definition_list/auto_ids.text new/test/testcases/block/13_definition_list/auto_ids.text --- old/test/testcases/block/13_definition_list/auto_ids.text 1970-01-01 01:00:00.000000000 +0100 +++ new/test/testcases/block/13_definition_list/auto_ids.text 2016-08-15 10:55:25.000000000 +0200 @@ -0,0 +1,18 @@ +{:auto_ids} +item +: def + +item2 +: def + +^ + +{:auto_ids-prefix-} +item +: def + +item2 +: def + +{:#id} item3 +: def diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/testcases/block/13_definition_list/item_ial.html new/test/testcases/block/13_definition_list/item_ial.html --- old/test/testcases/block/13_definition_list/item_ial.html 2016-05-01 22:18:00.000000000 +0200 +++ new/test/testcases/block/13_definition_list/item_ial.html 2016-08-15 10:55:25.000000000 +0200 @@ -9,4 +9,9 @@ </dd> <dd class="cls">IAL at last no code bc of text</dd> + <dt class="class">term</dt> + <dd>definition</dd> + <dt class="class1">term1</dt> + <dt class="class2">term2</dt> + <dd>definition</dd> </dl> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/testcases/block/13_definition_list/item_ial.text new/test/testcases/block/13_definition_list/item_ial.text --- old/test/testcases/block/13_definition_list/item_ial.text 2016-05-01 22:18:00.000000000 +0200 +++ new/test/testcases/block/13_definition_list/item_ial.text 2016-08-15 10:55:25.000000000 +0200 @@ -6,3 +6,11 @@ code : {:.cls} IAL at last no code bc of text + + +{:.class} term +: definition + +{:.class1} term1 +{:.class2} term2 +: definition diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/testcases/block/15_math/no_engine.html new/test/testcases/block/15_math/no_engine.html --- old/test/testcases/block/15_math/no_engine.html 1970-01-01 01:00:00.000000000 +0100 +++ new/test/testcases/block/15_math/no_engine.html 2016-08-15 10:55:25.000000000 +0200 @@ -0,0 +1,3 @@ +<div id="math-id" class="kdmath">$$ +5+5 +$$</div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/testcases/block/15_math/no_engine.options new/test/testcases/block/15_math/no_engine.options --- old/test/testcases/block/15_math/no_engine.options 1970-01-01 01:00:00.000000000 +0100 +++ new/test/testcases/block/15_math/no_engine.options 2016-08-15 10:55:25.000000000 +0200 @@ -0,0 +1 @@ +:math_engine: ~ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/testcases/block/15_math/no_engine.text new/test/testcases/block/15_math/no_engine.text --- old/test/testcases/block/15_math/no_engine.text 1970-01-01 01:00:00.000000000 +0100 +++ new/test/testcases/block/15_math/no_engine.text 2016-08-15 10:55:25.000000000 +0200 @@ -0,0 +1,2 @@ +{: #math-id} +$$5+5$$ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/testcases/span/autolinks/url_links.html new/test/testcases/span/autolinks/url_links.html --- old/test/testcases/span/autolinks/url_links.html 2016-05-01 22:18:00.000000000 +0200 +++ new/test/testcases/span/autolinks/url_links.html 2016-08-15 10:55:25.000000000 +0200 @@ -1,12 +1,12 @@ <p>This should be a <a href="http://www.example.com/">http://www.example.com/</a> link. -This should be a <a href="mailto:john.doe@example.com">john.doe@example.com</a> link. -As should <a href="mailto:john.doe@example.com">john.doe@example.com</a> this. -As should <a href="mailto:john_doe@example.com">john_doe@example.com</a> this. -As should <a href="mailto:CSS@example.com"><abbr title="Cascading">CSS</abbr>@example.com</a> this. +This should be a <a href="mailto:[email protected]">[email protected]</a> link. +As should <a href="mailto:[email protected]">[email protected]</a> this. +As should <a href="mailto:[email protected]">[email protected]</a> this. +As should <a href="mailto:[email protected]"><abbr title="Cascading">CSS</abbr>@example.com</a> this. Another ampersand <a href="http://www.example.com/?doit&x=y">http://www.example.com/?doit&x=y</a> link. More entities <a href="http://www.example.com/?doit&x="y&z=y">http://www.example.com/?doit&x="y&z=y</a>.</p> -<p>Email international <a href="mailto:übung@macht.den.meister.de">übung@macht.den.meister.de</a>, <a href="mailto:ü.äß@hülse.de">ü.äß@hülse.de</a> +<p>Email international <a href="mailto:ü[email protected]">ü[email protected]</a>, <a href="mailto:ü.äß@hülse.de">ü.äß@hülse.de</a> Email invalid: <<a href="mailtos:[email protected]">[email protected]</a>></p> <p>Autolink with underscore: <a href="http://www.example.com/with_under_score">http://www.example.com/with_under_score</a></p> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/testcases/span/math/no_engine.html new/test/testcases/span/math/no_engine.html --- old/test/testcases/span/math/no_engine.html 1970-01-01 01:00:00.000000000 +0100 +++ new/test/testcases/span/math/no_engine.html 2016-08-15 10:55:25.000000000 +0200 @@ -0,0 +1 @@ +<p><span class="kdmath">$5+5$</span> inline math</p> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/testcases/span/math/no_engine.options new/test/testcases/span/math/no_engine.options --- old/test/testcases/span/math/no_engine.options 1970-01-01 01:00:00.000000000 +0100 +++ new/test/testcases/span/math/no_engine.options 2016-08-15 10:55:25.000000000 +0200 @@ -0,0 +1 @@ +:math_engine: ~ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/testcases/span/math/no_engine.text new/test/testcases/span/math/no_engine.text --- old/test/testcases/span/math/no_engine.text 1970-01-01 01:00:00.000000000 +0100 +++ new/test/testcases/span/math/no_engine.text 2016-08-15 10:55:25.000000000 +0200 @@ -0,0 +1 @@ +$$5+5$$ inline math diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/testcases_gfm/paragraph_end-disabled.html new/test/testcases_gfm/paragraph_end-disabled.html --- old/test/testcases_gfm/paragraph_end-disabled.html 1970-01-01 01:00:00.000000000 +0100 +++ new/test/testcases_gfm/paragraph_end-disabled.html 2016-08-15 10:55:25.000000000 +0200 @@ -0,0 +1,31 @@ +<p>A<br /> + - b</p> + +<p>This is a list<br /> +- or is it</p> + +<p>blockquote<br /> +> text</p> + +<p>header<br /> +# text</p> + +<p>codeblock fenced<br /> +<code> +puts hello world +</code></p> + +<ul> + <li> + <p>level 1<br /> +some text</p> + + <p>begin level 2<br /> +* level 2<br /> +* level 2</p> + </li> +</ul> + +<h1 id="h1">h1</h1> +<p>## h2<br /> +### h3</p> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/testcases_gfm/paragraph_end-disabled.options new/test/testcases_gfm/paragraph_end-disabled.options --- old/test/testcases_gfm/paragraph_end-disabled.options 1970-01-01 01:00:00.000000000 +0100 +++ new/test/testcases_gfm/paragraph_end-disabled.options 2016-08-15 10:55:25.000000000 +0200 @@ -0,0 +1 @@ +:gfm_quirks: [] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/testcases_gfm/paragraph_end-disabled.text new/test/testcases_gfm/paragraph_end-disabled.text --- old/test/testcases_gfm/paragraph_end-disabled.text 1970-01-01 01:00:00.000000000 +0100 +++ new/test/testcases_gfm/paragraph_end-disabled.text 2016-08-15 10:55:25.000000000 +0200 @@ -0,0 +1,27 @@ +A + - b + +This is a list +- or is it + +blockquote +> text + +header +# text + +codeblock fenced +``` +puts hello world +``` + +* level 1 + some text + + begin level 2 + * level 2 + * level 2 + +# h1 +## h2 +### h3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/testcases_gfm/paragraph_end.html new/test/testcases_gfm/paragraph_end.html --- old/test/testcases_gfm/paragraph_end.html 1970-01-01 01:00:00.000000000 +0100 +++ new/test/testcases_gfm/paragraph_end.html 2016-08-15 10:55:25.000000000 +0200 @@ -0,0 +1,38 @@ +<p>A</p> +<ul> + <li>b</li> +</ul> + +<p>This is a list</p> +<ul> + <li>or is it</li> +</ul> + +<p>blockquote</p> +<blockquote> + <p>text</p> +</blockquote> + +<p>header</p> +<h1>text</h1> + +<p>codeblock fenced</p> +<pre><code>puts hello world +</code></pre> + +<ul> + <li> + <p>level 1<br /> +some text</p> + + <p>begin level 2</p> + <ul> + <li>level 2</li> + <li>level 2</li> + </ul> + </li> +</ul> + +<h1>h1</h1> +<h2>h2</h2> +<h3>h3</h3> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/testcases_gfm/paragraph_end.text new/test/testcases_gfm/paragraph_end.text --- old/test/testcases_gfm/paragraph_end.text 1970-01-01 01:00:00.000000000 +0100 +++ new/test/testcases_gfm/paragraph_end.text 2016-08-15 10:55:25.000000000 +0200 @@ -0,0 +1,27 @@ +A + - b + +This is a list +- or is it + +blockquote +> text + +header +# text + +codeblock fenced +``` +puts hello world +``` + +* level 1 + some text + + begin level 2 + * level 2 + * level 2 + +# h1 +## h2 +### h3
