Module: Markly::Merge

Defined in:
lib/markly/merge.rb,
lib/markly/merge/backend.rb,
lib/markly/merge/version.rb,
lib/markly/merge/freeze_node.rb,
lib/markly/merge/debug_logger.rb,
lib/markly/merge/smart_merger.rb,
lib/markly/merge/file_analysis.rb,
lib/markly/merge/comment_tracker.rb,
lib/markly/merge/partial_template_merger.rb

Overview

Smart merging for Markdown files using Markly AST.

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

  • Parsing Markdown into AST using Markly (cmark-gfm) 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 markly gem
  • Sets markly-specific defaults (freeze token, inner_merge_code_blocks)
  • Exposes markly-specific options (flags, extensions)
  • Maintains API compatibility for existing users

Examples:

Basic merge

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

With freeze blocks

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

See Also:

Defined Under Namespace

Modules: Backend, DebugLogger, Version Classes: FileAnalysis, PartialTemplateMerger, SmartMerger

Constant Summary collapse

VERSION =

Traditional Constant Location

Version::VERSION
FreezeNode =
Markdown::Merge::FreezeNode
CommentTracker =
Markdown::Merge::CommentTracker