Sha256: e0cc34eff1ef45a405367523ce57b8bdde4504e690b8658d9c3b5647fa89eec2
Contents?: true
Size: 1.23 KB
Versions: 1
Compression:
Stored size: 1.23 KB
Contents
# -*- coding: utf-8 -*- require 'kramdown/parser/kramdown' module Kramdown module Parser class GFM < Kramdown::Parser::Kramdown def initialize(source, options) super i = @block_parsers.index(:codeblock_fenced) @block_parsers.delete(:codeblock_fenced) @block_parsers.insert(i, :codeblock_fenced_gfm) end FENCED_CODEBLOCK_MATCH = /^(([~`]){3,})\s*?(\w+)?\s*?\n(.*?)^\1\2*\s*?\n/m define_parser(:codeblock_fenced_gfm, /^[~`]{3,}/, nil, 'parse_codeblock_fenced') def parse_paragraph result = @src.scan(PARAGRAPH_MATCH) while !@src.match?(self.class::PARAGRAPH_END) result << @src.scan(PARAGRAPH_MATCH) end result.chomp! unless @tree.children.last && @tree.children.last.type == :p @tree.children << new_block_el(:p) end lines = result.lstrip.split(/\n/) lines.each_with_index do |line, index| @tree.children.last.children << Element.new(@text_type, line) << Element.new(:br) << Element.new(@text_type, "\n") end @tree.children.last.children.pop # added one \n too many @tree.children.last.children.pop # added one :br too many true end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
kramdown-1.2.0 | lib/kramdown/parser/gfm.rb |