Module: Markdown::Merge

Defined in:
lib/markdown/merge.rb,
lib/markdown/merge/cleanse.rb,
lib/markdown/merge/version.rb,
lib/markdown/merge/freeze_node.rb,
lib/markdown/merge/link_parser.rb,
lib/markdown/merge/debug_logger.rb,
lib/markdown/merge/file_aligner.rb,
lib/markdown/merge/merge_result.rb,
lib/markdown/merge/smart_merger.rb,
lib/markdown/merge/file_analysis.rb,
lib/markdown/merge/gap_line_node.rb,
lib/markdown/merge/output_builder.rb,
lib/markdown/merge/code_block_merger.rb,
lib/markdown/merge/conflict_resolver.rb,
lib/markdown/merge/document_problems.rb,
lib/markdown/merge/smart_merger_base.rb,
lib/markdown/merge/file_analysis_base.rb,
lib/markdown/merge/markdown_structure.rb,
lib/markdown/merge/table_match_refiner.rb,
lib/markdown/merge/link_definition_node.rb,
lib/markdown/merge/node_type_normalizer.rb,
lib/markdown/merge/cleanse/block_spacing.rb,
lib/markdown/merge/table_match_algorithm.rb,
lib/markdown/merge/whitespace_normalizer.rb,
lib/markdown/merge/partial_template_merger.rb,
lib/markdown/merge/link_definition_formatter.rb,
lib/markdown/merge/link_reference_rehydrator.rb,
lib/markdown/merge/cleanse/code_fence_spacing.rb,
lib/markdown/merge/cleanse/condensed_link_refs.rb

Overview

Smart merging for Markdown files using AST-based parsers via tree_haver.

Markdown::Merge provides intelligent Markdown merging with support for
multiple parsing backends (Commonmarker, Markly) through tree_haver:

  • Standalone SmartMerger that works with any available backend
  • Matching structural elements (headings, paragraphs, lists, etc.) between files
  • Preserving frozen sections marked with HTML comments
  • Resolving conflicts based on configurable preferences
  • Node type normalization for portable merge rules across backends

Can be used directly or through parser-specific wrappers
(commonmarker-merge, markly-merge) that provide hard dependencies
and backend-specific defaults.

Examples:

Direct usage with auto backend detection

require "markdown/merge"
merger = Markdown::Merge::SmartMerger.new(template, destination)
result = merger.merge

With specific backend

merger = Markdown::Merge::SmartMerger.new(
  template,
  destination,
  backend: :markly,
  flags: Markly::DEFAULT,
  extensions: [:table, :strikethrough]
)
result = merger.merge

Using via commonmarker-merge

require "commonmarker/merge"
merger = Commonmarker::Merge::SmartMerger.new(template, destination)
result = merger.merge

See Also:

Defined Under Namespace

Modules: Cleanse, DebugLogger, LinkDefinitionFormatter, MarkdownStructure, NodeTypeNormalizer, Version Classes: CodeBlockMerger, ConflictResolver, DestinationParseError, DocumentProblems, Error, FileAligner, FileAnalysis, FileAnalysisBase, FreezeNode, GapLineNode, LinkDefinitionNode, LinkParser, LinkReferenceRehydrator, MergeResult, OutputBuilder, ParseError, PartialTemplateMerger, SmartMerger, SmartMergerBase, TableMatchAlgorithm, TableMatchRefiner, TemplateParseError, WhitespaceNormalizer

Constant Summary collapse

VERSION =

traditional location

Version::VERSION
NodeTypingNormalizer =

Alias for the shared normalizer module from ast-merge

Ast::Merge::NodeTyping::Normalizer