Module: Coradoc::Markdown

Defined in:
lib/coradoc/markdown.rb,
lib/coradoc/markdown/errors.rb,
lib/coradoc/markdown/parser.rb,
lib/coradoc/markdown/version.rb,
lib/coradoc/markdown/model/base.rb,
lib/coradoc/markdown/model/code.rb,
lib/coradoc/markdown/model/link.rb,
lib/coradoc/markdown/model/list.rb,
lib/coradoc/markdown/model/math.rb,
lib/coradoc/markdown/model/pass.rb,
lib/coradoc/markdown/model/text.rb,
lib/coradoc/markdown/serializer.rb,
lib/coradoc/markdown/model/image.rb,
lib/coradoc/markdown/model/table.rb,
lib/coradoc/markdown/model/verse.rb,
lib/coradoc/markdown/parser_util.rb,
lib/coradoc/markdown/transformer.rb,
lib/coradoc/markdown/model/strong.rb,
lib/coradoc/markdown/model/comment.rb,
lib/coradoc/markdown/model/heading.rb,
lib/coradoc/markdown/model/literal.rb,
lib/coradoc/markdown/model/sidebar.rb,
lib/coradoc/markdown/toc_generator.rb,
lib/coradoc/markdown/model/document.rb,
lib/coradoc/markdown/model/emphasis.rb,
lib/coradoc/markdown/model/footnote.rb,
lib/coradoc/markdown/model/extension.rb,
lib/coradoc/markdown/model/highlight.rb,
lib/coradoc/markdown/model/list_item.rb,
lib/coradoc/markdown/model/paragraph.rb,
lib/coradoc/markdown/model/subscript.rb,
lib/coradoc/markdown/model/underline.rb,
lib/coradoc/markdown/model/admonition.rb,
lib/coradoc/markdown/model/blockquote.rb,
lib/coradoc/markdown/model/code_block.rb,
lib/coradoc/markdown/model/open_block.rb,
lib/coradoc/markdown/model/named_value.rb,
lib/coradoc/markdown/model/superscript.rb,
lib/coradoc/markdown/serializer/config.rb,
lib/coradoc/markdown/serializer/flavor.rb,
lib/coradoc/markdown/serializer/runner.rb,
lib/coradoc/markdown/model/abbreviation.rb,
lib/coradoc/markdown/serializer/builder.rb,
lib/coradoc/markdown/serializer/context.rb,
lib/coradoc/markdown/model/example_block.rb,
lib/coradoc/markdown/model/strikethrough.rb,
lib/coradoc/markdown/parser/block_parser.rb,
lib/coradoc/markdown/serializer/registry.rb,
lib/coradoc/markdown/model/attribute_list.rb,
lib/coradoc/markdown/parser/ast_processor.rb,
lib/coradoc/markdown/parser/html_entities.rb,
lib/coradoc/markdown/parser/inline_parser.rb,
lib/coradoc/markdown/model/cross_reference.rb,
lib/coradoc/markdown/model/definition_item.rb,
lib/coradoc/markdown/model/definition_list.rb,
lib/coradoc/markdown/model/definition_term.rb,
lib/coradoc/markdown/model/hard_line_break.rb,
lib/coradoc/markdown/model/horizontal_rule.rb,
lib/coradoc/markdown/parser/parslet_extras.rb,
lib/coradoc/markdown/transform/to_core_model.rb,
lib/coradoc/markdown/model/footnote_reference.rb,
lib/coradoc/markdown/serializer/registrations.rb,
lib/coradoc/markdown/parser/frontmatter_parser.rb,
lib/coradoc/markdown/transform/from_core_model.rb,
lib/coradoc/markdown/transform/text_extraction.rb,
lib/coradoc/markdown/transform/list_transformer.rb,
lib/coradoc/markdown/serializer/serializers/code.rb,
lib/coradoc/markdown/serializer/serializers/link.rb,
lib/coradoc/markdown/serializer/serializers/list.rb,
lib/coradoc/markdown/serializer/serializers/math.rb,
lib/coradoc/markdown/serializer/serializers/pass.rb,
lib/coradoc/markdown/transform/block_transformer.rb,
lib/coradoc/markdown/transform/image_transformer.rb,
lib/coradoc/markdown/transform/table_transformer.rb,
lib/coradoc/markdown/serializer/serializers/image.rb,
lib/coradoc/markdown/serializer/serializers/table.rb,
lib/coradoc/markdown/serializer/serializers/verse.rb,
lib/coradoc/markdown/transform/inline_transformer.rb,
lib/coradoc/markdown/serializer/element_serializer.rb,
lib/coradoc/markdown/serializer/serializers/strong.rb,
lib/coradoc/markdown/serializer/serializers/comment.rb,
lib/coradoc/markdown/serializer/serializers/heading.rb,
lib/coradoc/markdown/serializer/serializers/literal.rb,
lib/coradoc/markdown/serializer/serializers/sidebar.rb,
lib/coradoc/markdown/serializer/serializers/document.rb,
lib/coradoc/markdown/serializer/serializers/emphasis.rb,
lib/coradoc/markdown/serializer/serializers/footnote.rb,
lib/coradoc/markdown/serializer/serializers/extension.rb,
lib/coradoc/markdown/serializer/serializers/highlight.rb,
lib/coradoc/markdown/serializer/serializers/paragraph.rb,
lib/coradoc/markdown/serializer/serializers/subscript.rb,
lib/coradoc/markdown/serializer/serializers/underline.rb,
lib/coradoc/markdown/transform/structural_transformer.rb,
lib/coradoc/markdown/serializer/serializers/admonition.rb,
lib/coradoc/markdown/serializer/serializers/blockquote.rb,
lib/coradoc/markdown/serializer/serializers/code_block.rb,
lib/coradoc/markdown/serializer/serializers/open_block.rb,
lib/coradoc/markdown/serializer/serializers/superscript.rb,
lib/coradoc/markdown/serializer/serializers/abbreviation.rb,
lib/coradoc/markdown/serializer/strategies/autolink/bare.rb,
lib/coradoc/markdown/serializer/strategies/autolink/base.rb,
lib/coradoc/markdown/serializer/strategies/autolink/none.rb,
lib/coradoc/markdown/serializer/serializers/example_block.rb,
lib/coradoc/markdown/serializer/serializers/strikethrough.rb,
lib/coradoc/markdown/serializer/strategies/autolink/angle.rb,
lib/coradoc/markdown/serializer/serializers/attribute_list.rb,
lib/coradoc/markdown/serializer/strategies/admonition/base.rb,
lib/coradoc/markdown/serializer/strategies/admonition/html.rb,
lib/coradoc/markdown/serializer/serializers/cross_reference.rb,
lib/coradoc/markdown/serializer/serializers/definition_list.rb,
lib/coradoc/markdown/serializer/serializers/hard_line_break.rb,
lib/coradoc/markdown/serializer/serializers/horizontal_rule.rb,
lib/coradoc/markdown/serializer/strategies/admonition/github.rb,
lib/coradoc/markdown/serializer/strategies/autolink/registry.rb,
lib/coradoc/markdown/serializer/serializers/footnote_reference.rb,
lib/coradoc/markdown/serializer/strategies/admonition/registry.rb,
lib/coradoc/markdown/serializer/strategies/admonition/container.rb,
lib/coradoc/markdown/serializer/strategies/admonition/gfm_alert.rb,
lib/coradoc/markdown/serializer/strategies/definition_list/base.rb,
lib/coradoc/markdown/serializer/strategies/definition_list/flat.rb,
lib/coradoc/markdown/serializer/strategies/definition_list/registry.rb,
lib/coradoc/markdown/serializer/strategies/definition_list/nested_html.rb

Overview

Markdown document model, parser, and serializer.

Defined Under Namespace

Modules: Errors, Parser, ParserUtil, Transform Classes: Abbreviation, Admonition, AttributeList, Base, Blockquote, Code, CodeBlock, Comment, CrossReference, DefinitionItem, DefinitionList, DefinitionTerm, Document, Emphasis, ExampleBlock, Extension, Footnote, FootnoteReference, HardLineBreak, Heading, Highlight, HorizontalRule, Image, Link, List, ListItem, Literal, Math, NamedValue, OpenBlock, Paragraph, Pass, Serializer, Sidebar, Strikethrough, Strong, Subscript, Superscript, Table, Text, TocGenerator, Transformer, Underline, Verse

Constant Summary collapse

VERSION =
'1.0.3'

Class Method Summary collapse

Class Method Details

.from_core_model(core_document) ⇒ Coradoc::Markdown::Document

Transform CoreModel to Markdown model

Parameters:

  • core_document (Coradoc::CoreModel::StructuralElement)

    The CoreModel document

Returns:



183
184
185
# File 'lib/coradoc/markdown.rb', line 183

def from_core_model(core_document)
  Transform::FromCoreModel.transform(core_document)
end

.from_file(filename, **options) ⇒ Array

Parse Markdown from a file

Parameters:

  • filename (String)

    Path to the Markdown file

  • options (Hash)

    Parsing options (see #parse)

Returns:

  • (Array)

    The parsed AST



130
131
132
133
# File 'lib/coradoc/markdown.rb', line 130

def from_file(filename, **options)
  content = File.read(filename)
  parse(content, **options)
end

.handles_model?(model) ⇒ Boolean

Check if this format can transform the given model to CoreModel

Parameters:

  • model (Object)

    The model to check

Returns:

  • (Boolean)

    true if this format handles the model type



157
158
159
# File 'lib/coradoc/markdown.rb', line 157

def handles_model?(model)
  model.is_a?(Coradoc::Markdown::Base)
end

.parse(content, _options = {}) ⇒ Coradoc::Markdown::Document

Parse Markdown content into a Document model

Parameters:

  • content (String)

    The Markdown content to parse

  • options (Hash)

    Parsing options

Returns:



109
110
111
112
113
114
115
# File 'lib/coradoc/markdown.rb', line 109

def parse(content, _options = {})
  split = Parser::FrontmatterParser.call(content)
  ast = Parser::BlockParser.new.parse(split.body)
  doc = Transformer.transform_document(ast)
  doc.frontmatter = split.frontmatter if split.frontmatter?
  doc
end

.parse_ast(content) ⇒ Array

Parse raw AST (for debugging)

Parameters:

  • content (String)

    The Markdown content to parse

Returns:

  • (Array)

    The raw AST



121
122
123
# File 'lib/coradoc/markdown.rb', line 121

def parse_ast(content)
  Parser::BlockParser.new.parse(content)
end

.parse_inline(content) ⇒ Array

Parse inline Markdown content

Parameters:

  • content (String)

    The inline Markdown content to parse

Returns:

  • (Array)

    The parsed inline elements



139
140
141
# File 'lib/coradoc/markdown.rb', line 139

def parse_inline(content)
  Parser::InlineParser.new.parse(content)
end

.parse_to_core(content) ⇒ Coradoc::CoreModel::StructuralElement

Parse and transform to CoreModel in one step

Parameters:

  • content (String)

    The Markdown content

Returns:

  • (Coradoc::CoreModel::StructuralElement)

    The CoreModel document



174
175
176
177
# File 'lib/coradoc/markdown.rb', line 174

def parse_to_core(content)
  doc = parse(content)
  to_core_model(doc)
end

.serialize(document, options = {}) ⇒ String

Serialize a document model to Markdown string

Parameters:

Returns:

  • (String)

    The Markdown output



148
149
150
151
# File 'lib/coradoc/markdown.rb', line 148

def serialize(document, options = {})
  document = Transform::FromCoreModel.transform(document) if document.is_a?(Coradoc::CoreModel::Base)
  Serializer.serialize(document, options)
end

.to_core_model(document) ⇒ Coradoc::CoreModel::StructuralElement Also known as: to_core

Transform Markdown model to CoreModel

Parameters:

Returns:

  • (Coradoc::CoreModel::StructuralElement)

    The CoreModel document



165
166
167
# File 'lib/coradoc/markdown.rb', line 165

def to_core_model(document)
  Transform::ToCoreModel.transform(document)
end