Module: Coradoc
- Extended by:
- Configurable
- Defined in:
- lib/coradoc/coradoc.rb,
lib/coradoc.rb,
lib/coradoc/cli.rb,
lib/coradoc/hooks.rb,
lib/coradoc/query.rb,
lib/coradoc/errors.rb,
lib/coradoc/logger.rb,
lib/coradoc/version.rb,
lib/coradoc/visitor.rb,
lib/coradoc/dispatch.rb,
lib/coradoc/pipeline.rb,
lib/coradoc/registry.rb,
lib/coradoc/core_model.rb,
lib/coradoc/validation.rb,
lib/coradoc/configurable.rb,
lib/coradoc/format_module.rb,
lib/coradoc/introspection.rb,
lib/coradoc/link_rewriter.rb,
lib/coradoc/relative_path.rb,
lib/coradoc/core_model/toc.rb,
lib/coradoc/format_catalog.rb,
lib/coradoc/core_model/base.rb,
lib/coradoc/core_model/term.rb,
lib/coradoc/core_model/block.rb,
lib/coradoc/core_model/image.rb,
lib/coradoc/core_model/table.rb,
lib/coradoc/include_resolver.rb,
lib/coradoc/resolve_includes.rb,
lib/coradoc/include_selectors.rb,
lib/coradoc/core_model/callout.rb,
lib/coradoc/core_model/include.rb,
lib/coradoc/core_model/footnote.rb,
lib/coradoc/core_model/metadata.rb,
lib/coradoc/core_model/list_item.rb,
lib/coradoc/core_model/list_block.rb,
lib/coradoc/core_model/open_block.rb,
lib/coradoc/core_model/pass_block.rb,
lib/coradoc/core_model/stem_block.rb,
lib/coradoc/link_rewriter/visitor.rb,
lib/coradoc/core_model/frontmatter.rb,
lib/coradoc/core_model/quote_block.rb,
lib/coradoc/core_model/verse_block.rb,
lib/coradoc/include_selectors/tags.rb,
lib/coradoc/link_rewriter/identity.rb,
lib/coradoc/performance_regression.rb,
lib/coradoc/core_model/bibliography.rb,
lib/coradoc/core_model/callout_text.rb,
lib/coradoc/core_model/comment_line.rb,
lib/coradoc/core_model/has_children.rb,
lib/coradoc/core_model/id_generator.rb,
lib/coradoc/core_model/source_block.rb,
lib/coradoc/core_model/text_content.rb,
lib/coradoc/include_selectors/lines.rb,
lib/coradoc/core_model/comment_block.rb,
lib/coradoc/core_model/example_block.rb,
lib/coradoc/core_model/listing_block.rb,
lib/coradoc/core_model/literal_block.rb,
lib/coradoc/core_model/sidebar_block.rb,
lib/coradoc/core_model/toc_generator.rb,
lib/coradoc/include_selectors/indent.rb,
lib/coradoc/core_model/inline_content.rb,
lib/coradoc/core_model/inline_element.rb,
lib/coradoc/core_model/reviewer_block.rb,
lib/coradoc/core_model/definition_item.rb,
lib/coradoc/core_model/definition_list.rb,
lib/coradoc/core_model/include_options.rb,
lib/coradoc/core_model/output_artifact.rb,
lib/coradoc/core_model/paragraph_block.rb,
lib/coradoc/core_model/annotation_block.rb,
lib/coradoc/core_model/children_content.rb,
lib/coradoc/include_resolver/filesystem.rb,
lib/coradoc/core_model/element_attribute.rb,
lib/coradoc/core_model/frontmatter/codec.rb,
lib/coradoc/core_model/bibliography_entry.rb,
lib/coradoc/core_model/raw_inline_element.rb,
lib/coradoc/core_model/structural_element.rb,
lib/coradoc/introspection/element_counter.rb,
lib/coradoc/include_selectors/level_offset.rb,
lib/coradoc/core_model/include_level_offset.rb,
lib/coradoc/core_model/horizontal_rule_block.rb,
lib/coradoc/core_model/frontmatter/text_splitter.rb,
lib/coradoc/core_model/frontmatter/field_transform.rb,
lib/coradoc/core_model/frontmatter/schema_resolver.rb,
lib/coradoc/core_model/frontmatter/frontmatter_value.rb
Overview
Coradoc - A hub-and-spoke document transformation library
Coradoc provides a unified document model (CoreModel) and transformation infrastructure for converting between document formats such as AsciiDoc, HTML, and Markdown.
## Architecture
Coradoc uses a hub-and-spoke architecture where CoreModel acts as the canonical document representation. Each format (AsciiDoc, HTML, Markdown) has its own model and transformers to/from CoreModel.
“‘ Source Format → Source Model → CoreModel → Target Model → Target Format “`
## Quick Start
Defined Under Namespace
Modules: Configurable, CoreModel, FormatCatalog, FormatModule, Hooks, IncludeSelectors, Introspection, LinkRewriter, PerformanceRegression, Pipeline, Query, RelativePath, Validation, Visitor
Classes: CLI, CircularIncludeError, Dispatch, Error, FileNotFoundError, IncludeDepthExceededError, IncludeNotFoundError, IncludeResolver, IncludeTooLargeError, Logger, ParseError, Registry, ResolveIncludes, TransformationError, UnsafeIncludeError, UnsupportedFormatError, ValidationError
Constant Summary
collapse
- ERROR_SUGGESTIONS =
Suggestion patterns for common parsing errors
These patterns are matched against error messages and source content to provide helpful suggestions for fixing common issues.
[
{
pattern: /unterminated.*string|unexpected.*end.*of.*input|expected.*["']/i,
suggestion: 'Check for unclosed quotes or strings',
examples: ["'text'", '"text"']
},
{
pattern: /unexpected.*indentation|indentation.*error|inconsistent.*indent/i,
suggestion: 'Check indentation - use consistent spaces or tabs',
examples: [' indented line', ' nested item']
},
{
pattern: /missing.*separator|expected.*delimiter|missing.*comma/i,
suggestion: 'Add missing separator between elements',
examples: ['item1, item2', 'key: value']
},
{
pattern: /invalid.*attribute|unknown.*attribute|attribute.*not.*allowed/i,
suggestion: 'Check attribute spelling and allowed values',
examples: ['[role=example]', '[source,ruby]']
},
{
pattern: /invalid.*heading|heading.*level|expected.*heading/i,
suggestion: 'Use valid heading syntax with = or # markers',
examples: ['= Level 1', '== Level 2', '### Level 3']
},
{
pattern: /invalid.*list|list.*marker|expected.*list.*item/i,
suggestion: 'Use correct list markers (*, -, ., or numbered)',
examples: ['* bullet', '. ordered', 'term:: definition']
},
{
pattern: /invalid.*link|malformed.*url|link.*syntax/i,
suggestion: 'Use correct link syntax: text[url] or link:url[]',
examples: ['Google[https://google.com]', 'link:file.adoc[]']
},
{
pattern: /invalid.*table|table.*delimiter|expected.*separator/i,
suggestion: 'Check table syntax with | delimiters',
examples: ["|===\n| Cell 1 | Cell 2\n|==="]
},
{
pattern: /invalid.*block|block.*delimiter|unterminated.*block/i,
suggestion: 'Ensure block delimiters match (----, ****, ====, etc.)',
examples: ["----\ncode\n----", "====\nexample\n===="]
},
{
pattern: /invalid.*macro|unknown.*macro|macro.*syntax/i,
suggestion: 'Check macro syntax: name:target[attributes]',
examples: ['include::file.adoc[]', 'image::image.png[]']
}
].freeze
- VERSION =
'2.0.24'
Class Method Summary
collapse
load_configuration, reset_configuration!
Class Method Details
.build ⇒ Object
81
|
# File 'lib/coradoc/coradoc.rb', line 81
def build(...) = Pipeline.build(...)
|
Shortcut to configuration
This method returns an undefined value.
Shortcut to configure
524
525
526
|
# File 'lib/coradoc/configurable.rb', line 524
def self.configure(&block)
Configurable.configure(&block) if block_given?
end
|
.convert(text) ⇒ Object
75
|
# File 'lib/coradoc/coradoc.rb', line 75
def convert(text, **) = Pipeline.convert(text, **)
|
.convert_file(path) ⇒ Object
85
|
# File 'lib/coradoc/coradoc.rb', line 85
def convert_file(path, **) = Pipeline.convert_file(path, **)
|
.describe_element(elem) ⇒ Object
—- Format detection (delegates to FormatCatalog) —-
.document_stats(doc) ⇒ Object
.file_info(path) ⇒ Object
—- Introspection (delegates to Introspection) —-
.parse(text, format:) ⇒ Object
—- Pipeline (delegates to Pipeline) —-
69
|
# File 'lib/coradoc/coradoc.rb', line 69
def parse(text, format:) = Pipeline.parse(text, format: format)
|
.parse_file(path) ⇒ Object
83
|
# File 'lib/coradoc/coradoc.rb', line 83
def parse_file(path, **) = Pipeline.parse_file(path, **)
|
59
60
61
|
# File 'lib/coradoc/coradoc.rb', line 59
def register_format(format_name, format_module, **options)
FormatCatalog.register_format(format_name, format_module, **options)
end
|
.registry ⇒ Object
—- Format registry (delegates to FormatCatalog) —-
.resolve_includes(document) ⇒ Object
71
|
# File 'lib/coradoc/coradoc.rb', line 71
def resolve_includes(document, **) = Pipeline.resolve_includes(document, **)
|
.serialize(model) ⇒ Object
79
|
# File 'lib/coradoc/coradoc.rb', line 79
def serialize(model, **) = Pipeline.serialize(model, **)
|
.strip_unicode(string, only: nil) ⇒ String
Strip unicode whitespace from a string.
120
121
122
123
124
125
126
127
128
129
130
131
|
# File 'lib/coradoc/coradoc.rb', line 120
def strip_unicode(string, only: nil)
return string if string.nil?
case only
when :begin
string.sub(/^\p{Zs}+/, '')
when :end
string.sub(/\p{Zs}+$/, '')
else
string.sub(/^\p{Zs}+/, '').sub(/\p{Zs}+$/, '')
end
end
|
.to_core(model) ⇒ Object
77
|
# File 'lib/coradoc/coradoc.rb', line 77
def to_core(model) = Pipeline.to_core(model)
|
.validate_file(path) ⇒ Object