37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/nora_mark/document.rb', line 37
def self.parse(string_or_io, param = {})
instance = new param
src = (string_or_io.respond_to?(:read) ? string_or_io.read : string_or_io).encode 'utf-8'
yield instance if block_given?
instance.instance_eval do
@preprocessors.each do |pr|
src = pr.call(src)
end
parser = Parser.new(src)
if (!parser.parse)
raise parser.raise_error
end
@root = parser.result
@root.document_name ||= @document_name
@root.reparent
@root.assign_pageno
end
frontmatter = instance.root.find_node :type => :Frontmatter
if (frontmatter)
if (frontmatter.yaml['generator'])
NoraMark::Extensions.register_generator(frontmatter.yaml['generator'].to_sym)
end
end
instance
end
|