Module: AsciidoctorVaped::Parser
- Defined in:
- lib/asciidoctor_vaped/parser.rb,
lib/asciidoctor_vaped/parser/blocks.rb,
lib/asciidoctor_vaped/parser/inline.rb,
lib/asciidoctor_vaped/parser/context.rb,
lib/asciidoctor_vaped/parser/inlines/url.rb,
lib/asciidoctor_vaped/parser/inlines/link.rb,
lib/asciidoctor_vaped/parser/blocks/heading.rb,
lib/asciidoctor_vaped/parser/inlines/strong.rb,
lib/asciidoctor_vaped/parser/blocks/paragraph.rb,
lib/asciidoctor_vaped/parser/inlines/emphasis.rb,
lib/asciidoctor_vaped/parser/blocks/admonition.rb,
lib/asciidoctor_vaped/parser/inlines/monospace.rb,
lib/asciidoctor_vaped/parser/blocks/tables/table.rb,
lib/asciidoctor_vaped/parser/blocks/common/comment.rb,
lib/asciidoctor_vaped/parser/blocks/delimited/open.rb,
lib/asciidoctor_vaped/parser/blocks/delimited/quote.rb,
lib/asciidoctor_vaped/parser/blocks/lists/list_base.rb,
lib/asciidoctor_vaped/parser/blocks/lists/list_item.rb,
lib/asciidoctor_vaped/parser/blocks/common/base_node.rb,
lib/asciidoctor_vaped/parser/blocks/metadata/caption.rb,
lib/asciidoctor_vaped/parser/blocks/tables/table_row.rb,
lib/asciidoctor_vaped/parser/blocks/common/blank_line.rb,
lib/asciidoctor_vaped/parser/blocks/delimited/example.rb,
lib/asciidoctor_vaped/parser/blocks/delimited/listing.rb,
lib/asciidoctor_vaped/parser/blocks/delimited/literal.rb,
lib/asciidoctor_vaped/parser/blocks/delimited/sidebar.rb,
lib/asciidoctor_vaped/parser/blocks/tables/table_cell.rb,
lib/asciidoctor_vaped/parser/blocks/lists/ordered_list.rb,
lib/asciidoctor_vaped/parser/blocks/lists/unordered_list.rb,
lib/asciidoctor_vaped/parser/blocks/delimited/passthrough.rb,
lib/asciidoctor_vaped/parser/blocks/delimited/delimited_node.rb,
lib/asciidoctor_vaped/parser/blocks/metadata/document_attribute.rb,
lib/asciidoctor_vaped/parser/blocks/metadata/element_attributes.rb
Defined Under Namespace
Modules: Blocks, Inline, Inlines
Classes: Context
Constant Summary
collapse
- NODE_HANDLERS =
[
Blocks::BlankLine,
Blocks::DocumentAttribute,
Blocks::Caption,
Blocks::ElementAttributes,
Blocks::Comment,
Blocks::Heading,
Blocks::Listing,
Blocks::Literal,
Blocks::Example,
Blocks::Quote,
Blocks::Sidebar,
Blocks::Open,
Blocks::Passthrough,
Blocks::Table,
Blocks::Admonition,
Blocks::UnorderedList,
Blocks::OrderedList,
Blocks::Paragraph
].freeze
- NODE_CHAIN =
Blocks.chain(NODE_HANDLERS)
Class Method Summary
collapse
Class Method Details
.parse(source, attributes: {}) ⇒ Object
38
39
40
41
42
43
44
|
# File 'lib/asciidoctor_vaped/parser.rb', line 38
def parse(source, attributes: {})
document = AST::Document.new(source.to_s, attributes:)
context = Context.new(document, Reader.new(source))
(context)
parse_nodes(context)
document
end
|
.parse_document_title(context) ⇒ Object
63
64
65
66
67
68
69
70
|
# File 'lib/asciidoctor_vaped/parser.rb', line 63
def parse_document_title(context)
title = context.reader.peek&.match(/\A=\s+(.+)\z/)
return unless title
context.document.doctitle = title[1]
context.document.register_attribute("doctitle", title[1])
context.reader.read
end
|
46
47
48
49
50
|
# File 'lib/asciidoctor_vaped/parser.rb', line 46
def (context)
context.reader.skip_blank_lines
(context)
parse_document_title(context)
end
|
58
59
60
61
|
# File 'lib/asciidoctor_vaped/parser.rb', line 58
def (context)
handler = Blocks::DocumentAttribute.new
handler.handle(context) while handler.match?(context)
end
|
.parse_nodes(context) ⇒ Object
52
53
54
55
56
|
# File 'lib/asciidoctor_vaped/parser.rb', line 52
def parse_nodes(context)
until context.reader.eof?
NODE_CHAIN.handle(context)
end
end
|