Class: Coradoc::Html::Converters::TemplateHtmlConverter

Inherits:
Base
  • Object
show all
Defined in:
lib/coradoc/html/converters/template_html_converter.rb

Overview

HTML converter that uses Liquid templates for rendering

This converter provides template-based rendering where:

  • Users can provide custom template directories

  • Falls back to default templates

  • Supports template inheritance

Examples:

Basic usage

renderer = TemplateHtmlConverter.new(template_paths: ["/my/templates"])
html = renderer.render(document)

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

build_class_attribute, build_element, build_html_attributes, convert_element_to_core, convert_node_to_core, escape_attribute, escape_html, extract_model_attributes, extract_node_attributes, extract_text_fallback, find_converter_class_by_name, find_converter_for_model, handle_unknown_content, render_core_abbreviation, render_core_annotation_block, render_core_bibliography, render_core_bibliography_entry, render_core_block, render_core_block_image, render_core_definition_item, render_core_definition_list, render_core_footnote, render_core_footnote_reference, render_core_inline_element, render_core_inline_image, render_core_list_block, render_core_list_item, render_core_span, render_core_structural_element, render_core_table_cell, render_core_table_row, render_core_term, render_core_toc, render_core_toc_entry, resolve_block_semantic_type, resolve_format_specific_semantic, transform_to_coremodel, treat_children

Constructor Details

#initialize(template_paths: [], options: {}) ⇒ TemplateHtmlConverter

Initialize the converter

Parameters:

  • template_paths (Array<String>) (defaults to: [])

    Custom template directories

  • options (Hash) (defaults to: {})

    Additional options



24
25
26
27
28
# File 'lib/coradoc/html/converters/template_html_converter.rb', line 24

def initialize(template_paths: [], options: {})
  @template_paths = template_paths
  @options = options
  @renderer = nil
end

Class Method Details

.convert_content_to_html(content, state = {}) ⇒ String

Convert content to HTML using template renderer

Parameters:

  • content (Object)

    Content to convert

  • state (Hash) (defaults to: {})

    Conversion state

Returns:

  • (String)

    HTML string



61
62
63
64
65
66
67
68
69
70
# File 'lib/coradoc/html/converters/template_html_converter.rb', line 61

def self.convert_content_to_html(content, state = {})
  return '' if content.nil?

  renderer = Coradoc::Html::TemplateRenderer.new(
    template_paths: state[:template_paths] || [],
    options: state[:template_options] || {}
  )

  renderer.render(content)
end

.render_with_templates(model, state = {}) ⇒ String

Render a CoreModel document to HTML using the template renderer

Parameters:

  • model (Coradoc::CoreModel::Base)

    The document to render

  • state (Hash) (defaults to: {})

    Rendering state

Returns:

  • (String)

    Rendered HTML



77
78
79
80
81
82
83
84
# File 'lib/coradoc/html/converters/template_html_converter.rb', line 77

def self.render_with_templates(model, state = {})
  renderer = Coradoc::Html::TemplateRenderer.new(
    template_paths: state[:template_paths] || [],
    options: state[:template_options] || {}
  )

  renderer.render(model)
end

.to_html(model, state = {}) ⇒ String

Render a CoreModel document to HTML

Parameters:

  • model (Coradoc::CoreModel::Base)

    The document to render

  • state (Hash) (defaults to: {})

    Rendering state

Returns:

  • (String)

    Rendered HTML



45
46
47
48
49
50
51
52
53
54
# File 'lib/coradoc/html/converters/template_html_converter.rb', line 45

def self.to_html(model, state = {})
  # Get template_paths from state or use defaults
  template_paths = state[:template_paths] || []

  # Create converter with template paths
  new(template_paths: template_paths, options: state[:template_options] || {})

  # Convert content using template renderer
  convert_content_to_html(model, state)
end

Instance Method Details

#rendererCoradoc::Html::TemplateRenderer

Get or create the template renderer

Returns:



33
34
35
36
37
38
# File 'lib/coradoc/html/converters/template_html_converter.rb', line 33

def renderer
  @renderer ||= Coradoc::Html::TemplateRenderer.new(
    template_paths: @template_paths,
    options: @options
  )
end