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/text.rb,
lib/coradoc/markdown/serializer.rb,
lib/coradoc/markdown/model/image.rb,
lib/coradoc/markdown/model/table.rb,
lib/coradoc/markdown/parser_util.rb,
lib/coradoc/markdown/transformer.rb,
lib/coradoc/markdown/model/strong.rb,
lib/coradoc/markdown/model/heading.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/blockquote.rb,
lib/coradoc/markdown/model/code_block.rb,
lib/coradoc/markdown/model/named_value.rb,
lib/coradoc/markdown/model/superscript.rb,
lib/coradoc/markdown/model/abbreviation.rb,
lib/coradoc/markdown/model/strikethrough.rb,
lib/coradoc/markdown/parser/block_parser.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/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/transform/from_core_model.rb,
lib/coradoc/markdown/transform/text_extraction.rb

Overview

Markdown document model, parser, and serializer.

Defined Under Namespace

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

Constant Summary collapse

VERSION =
'1.0.2'

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:



169
170
171
# File 'lib/coradoc/markdown.rb', line 169

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



117
118
119
120
# File 'lib/coradoc/markdown.rb', line 117

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



143
144
145
# File 'lib/coradoc/markdown.rb', line 143

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:



99
100
101
102
# File 'lib/coradoc/markdown.rb', line 99

def parse(content, _options = {})
  ast = Parser::BlockParser.new.parse(content)
  Transformer.transform_document(ast)
end

.parse_ast(content) ⇒ Array

Parse raw AST (for debugging)

Parameters:

  • content (String)

    The Markdown content to parse

Returns:

  • (Array)

    The raw AST



108
109
110
# File 'lib/coradoc/markdown.rb', line 108

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



126
127
128
# File 'lib/coradoc/markdown.rb', line 126

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



160
161
162
163
# File 'lib/coradoc/markdown.rb', line 160

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



135
136
137
# File 'lib/coradoc/markdown.rb', line 135

def serialize(document, options = {})
  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



151
152
153
# File 'lib/coradoc/markdown.rb', line 151

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