Sha256: aa7046df3dcb29e69a0ca20fc385c7e7e171d9ef25b781df05de2490357057e9

Contents?: true

Size: 1.92 KB

Versions: 7

Compression:

Stored size: 1.92 KB

Contents

# -*- coding: utf-8 -*-
#
#--
# Copyright (C) 2009-2013 Thomas Leitner <t_leitner@gmx.at>
#
# This file is part of kramdown which is licensed under the MIT.
#++
#

require 'kramdown/parser/kramdown'

module Kramdown

  module Parser

    # Used for parsing a document in Markdown format.
    #
    # This parser is based on the kramdown parser and removes the parser methods for the additional
    # non-Markdown features. However, since some things are handled differently by the kramdown
    # parser methods (like deciding when a list item contains just text), this parser differs from
    # real Markdown parsers in some respects.
    #
    # Note, though, that the parser basically fails just one of the Markdown test cases (some others
    # also fail but those failures are negligible).
    class Markdown < Kramdown

      # Array with all the parsing methods that should be removed from the standard kramdown parser.
      EXTENDED = [:codeblock_fenced, :table, :definition_list, :footnote_definition, :abbrev_definition, :block_math,
                  :block_extensions,
                  :footnote_marker, :smart_quotes, :inline_math, :span_extensions, :typographic_syms]

      def initialize(source, options) # :nodoc:
        super
        @block_parsers.delete_if {|i| EXTENDED.include?(i)}
        @span_parsers.delete_if {|i| EXTENDED.include?(i)}
      end

      # :stopdoc:

      BLOCK_BOUNDARY = /#{BLANK_LINE}|#{EOB_MARKER}|\Z/
      LAZY_END = /#{BLANK_LINE}|#{EOB_MARKER}|^#{OPT_SPACE}#{LAZY_END_HTML_STOP}|^#{OPT_SPACE}#{LAZY_END_HTML_START}|\Z/
      CODEBLOCK_MATCH = /(?:#{BLANK_LINE}?(?:#{INDENT}[ \t]*\S.*\n)+)*/
      PARAGRAPH_END = LAZY_END

      IAL_RAND_CHARS = (('a'..'z').to_a + ('0'..'9').to_a)
      IAL_RAND_STRING = (1..20).collect {|a| IAL_RAND_CHARS[rand(IAL_RAND_CHARS.size)]}.join
      LIST_ITEM_IAL = /^\s*(#{IAL_RAND_STRING})?\s*\n/
      IAL_SPAN_START = LIST_ITEM_IAL

      # :startdoc:

    end

  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
kramdown-1.3.1 lib/kramdown/parser/markdown.rb
kramdown-1.3.0 lib/kramdown/parser/markdown.rb
kramdown-1.2.0 lib/kramdown/parser/markdown.rb
kramdown-1.1.0 lib/kramdown/parser/markdown.rb
kramdown-1.0.2 lib/kramdown/parser/markdown.rb
kramdown-1.0.1 lib/kramdown/parser/markdown.rb
kramdown-1.0.0 lib/kramdown/parser/markdown.rb