lib/kramdown/parser/kramdown/paragraph.rb in kramdown-0.10.0 vs lib/kramdown/parser/kramdown/paragraph.rb in kramdown-0.11.0

- old
+ new

@@ -18,23 +18,34 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. #++ # +require 'kramdown/parser/kramdown/blank_line' +require 'kramdown/parser/kramdown/attribute_list' +require 'kramdown/parser/kramdown/eob' +require 'kramdown/parser/kramdown/list' +require 'kramdown/parser/kramdown/html' + module Kramdown module Parser class Kramdown + LAZY_END_HTML_SPAN_ELEMENTS = HTML_SPAN_ELEMENTS + %w{script} + LAZY_END_HTML_START = /<(?>(?!(?:#{LAZY_END_HTML_SPAN_ELEMENTS.join('|')})\b)#{REXML::Parsers::BaseParser::UNAME_STR})\s*(?>\s+#{REXML::Parsers::BaseParser::UNAME_STR}\s*=\s*(["']).*?\1)*\s*\/?>/m + LAZY_END_HTML_STOP = /<\/(?!(?:#{LAZY_END_HTML_SPAN_ELEMENTS.join('|')})\b)#{REXML::Parsers::BaseParser::UNAME_STR}\s*>/m + PARAGRAPH_START = /^#{OPT_SPACE}[^ \t].*?\n/ + PARAGRAPH_MATCH = /(?:^.*\n)+?(?=#{BLANK_LINE}|#{IAL_BLOCK_START}|#{EOB_MARKER}|#{DEFINITION_LIST_START}|^#{OPT_SPACE}#{LAZY_END_HTML_STOP}|^#{OPT_SPACE}#{LAZY_END_HTML_START}|\Z)/ # Parse the paragraph at the current location. def parse_paragraph - @src.pos += @src.matched_size + result = @src.scan(PARAGRAPH_MATCH) if @tree.children.last && @tree.children.last.type == :p - @tree.children.last.children.first.value << "\n" << @src.matched.chomp + @tree.children.last.children.first.value << "\n" << result.chomp else @tree.children << new_block_el(:p) - add_text(@src.matched.lstrip.chomp, @tree.children.last) + @tree.children.last.children << Element.new(@text_type, result.lstrip.chomp) end true end define_parser(:paragraph, PARAGRAPH_START)