class Kramdown::JekyllDocument
A Kramdown::Document subclass meant to optimize memory usage from initializing a kramdown document for parsing.
The optimization is by using the same options Hash (and its derivatives) for converting all Markdown documents in a Jekyll
site.
Attributes
options[R]
parser[R]
Public Class Methods
new(source, options = {})
click to toggle source
# File lib/jekyll/converters/markdown/kramdown_parser.rb, line 50 def initialize(source, options = {}) JekyllDocument.setup(options) @options = JekyllDocument.options @root, @warnings = JekyllDocument.parser.parse(source, @options) end
setup(options)
click to toggle source
The implementation is basically the core logic in +Kramdown::Document#initialize+
rubocop:disable Naming/MemoizedInstanceVariableName
# File lib/jekyll/converters/markdown/kramdown_parser.rb, line 16 def setup(options) @cache ||= {} # reset variables on a subsequent set up with a different options Hash unless @cache[:id] == options.hash @options = @parser = nil @cache[:id] = options.hash end @options ||= Options.merge(options).freeze @parser ||= begin parser_name = (@options[:input] || "kramdown").to_s parser_name = parser_name[0..0].upcase + parser_name[1..-1] try_require("parser", parser_name) if Parser.const_defined?(parser_name) Parser.const_get(parser_name) else raise Kramdown::Error, "kramdown has no parser to handle the specified " \ "input format: #{@options[:input]}" end end end
Private Class Methods
try_require(type, name)
click to toggle source
rubocop:enable Naming/MemoizedInstanceVariableName
# File lib/jekyll/converters/markdown/kramdown_parser.rb, line 43 def try_require(type, name) require "kramdown/#{type}/#{Utils.snake_case(name)}" rescue LoadError false end
Public Instance Methods
to_html()
click to toggle source
Use Kramdown::Converter::Html class to convert this document into HTML.
The implementation is basically an optimized version of core logic in +Kramdown::Document#method_missing+ from kramdown-2.1.0.
# File lib/jekyll/converters/markdown/kramdown_parser.rb, line 61 def to_html output, warnings = Kramdown::Converter::Html.convert(@root, @options) @warnings.concat(warnings) output end