Module: Commonmarker::Merge

Defined in:
lib/commonmarker/merge.rb,
lib/commonmarker/merge/backend.rb,
lib/commonmarker/merge/version.rb,
lib/commonmarker/merge/freeze_node.rb,
lib/commonmarker/merge/debug_logger.rb,
lib/commonmarker/merge/smart_merger.rb,
lib/commonmarker/merge/file_analysis.rb

Overview

Smart merging for Markdown files using CommonMarker AST.

Commonmarker::Merge provides intelligent merging of Markdown files by:

  • Parsing Markdown into AST using CommonMarker via tree_haver
  • Matching structural elements (headings, paragraphs, lists, etc.) between files
  • Preserving frozen sections marked with HTML comments
  • Resolving conflicts based on configurable preferences

This is a thin wrapper around Markdown::Merge that:

  • Provides hard dependency on the commonmarker gem
  • Sets commonmarker-specific defaults (freeze token, inner_merge_code_blocks)
  • Maintains API compatibility for existing users

Examples:

Basic merge

merger = Commonmarker::Merge::SmartMerger.new(template, destination)
result = merger.merge
puts result.content if result.success?

With freeze blocks

# In your Markdown file:
# <!-- commonmarker-merge:freeze -->
# ## Custom Section
# This content is preserved during merges.
# <!-- commonmarker-merge:unfreeze -->

See Also:

Defined Under Namespace

Modules: Backend, DebugLogger, Version Classes: DestinationParseError, Error, FileAnalysis, FreezeNode, ParseError, SmartMerger, TemplateParseError

Constant Summary collapse

DEFAULT_FREEZE_TOKEN =

Default freeze token for commonmarker-merge

Returns:

  • (String)
"commonmarker-merge"
DEFAULT_INNER_MERGE_CODE_BLOCKS =

Default inner_merge_code_blocks setting for commonmarker-merge

Returns:

  • (Boolean)
false
FileAligner =

Re-export shared classes from markdown-merge

Markdown::Merge::FileAligner
ConflictResolver =
Markdown::Merge::ConflictResolver
MergeResult =
Markdown::Merge::MergeResult
TableMatchAlgorithm =
Markdown::Merge::TableMatchAlgorithm
TableMatchRefiner =
Markdown::Merge::TableMatchRefiner
CodeBlockMerger =
Markdown::Merge::CodeBlockMerger
NodeTypeNormalizer =
Markdown::Merge::NodeTypeNormalizer
VERSION =

traditional location

Version::VERSION

Class Method Summary collapse

Class Method Details

.ensure_backend_loaded!Object

Eagerly load and register backend when this module is loaded
This ensures the backend is available for tree_haver before any parsing happens



84
85
86
# File 'lib/commonmarker/merge.rb', line 84

def ensure_backend_loaded!
  Backend # Access constant to trigger autoload
end