Html2Markdown.Converter (html2markdown v0.3.2)

Copy Markdown

Handles the conversion of HTML nodes to Markdown format.

This module is responsible for transforming parsed HTML nodes into their Markdown equivalents. It uses an efficient IOList-based approach for building the output string.

Implementation Details

The converter uses pattern matching to handle different HTML elements:

  • Headers (h1-h6) → Markdown headers with appropriate # prefixes
  • Text formatting (strong, em, del) → Markdown emphasis markers
  • Lists (ul, ol) → Markdown list syntax with proper nesting
  • Tables → Delegated to Html2Markdown.TableConverter
  • Links and images → Markdown link syntax
  • Code blocks → Fenced code blocks with language detection

Performance Optimizations

  • Uses IOList building instead of string concatenation
  • Processes nodes in a single pass
  • Preserves whitespace in code blocks while normalizing elsewhere

Summary

Functions

convert_to_markdown(document, opts)

@spec convert_to_markdown([Floki.html_node()], Html2Markdown.Options.t()) ::
  String.t()

process_children(children, opts)

@spec process_children([Floki.html_node()], Html2Markdown.Options.t()) :: String.t()

process_node(node, opts)

@spec process_node(Floki.html_node(), Html2Markdown.Options.t()) :: String.t()