Class: Coradoc::Html::ConverterBase Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/coradoc/html/converter_base.rb

Overview

This class is abstract.

Subclass and implement #convert to create a custom converter

Abstract base class for HTML output converters

This class defines the interface that all HTML output converters must implement. It provides common functionality for document validation, configuration building, and HTML output generation.

Examples:

Creating a custom converter

class MyConverter < Coradoc::Html::ConverterBase
  def convert
    # Generate HTML from document
  end
end

Direct Known Subclasses

Spa, Static

Defined Under Namespace

Classes: ConfigurationBase, UnsupportedDocumentError, ValidationError

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(document, config = {}) ⇒ ConverterBase

Initialize a new converter instance

Parameters:

  • document (Coradoc::CoreModel::StructuralElement)

    The document to convert

  • config (Hash, Configuration) (defaults to: {})

    Converter configuration

Raises:



87
88
89
90
# File 'lib/coradoc/html/converter_base.rb', line 87

def initialize(document, config = {})
  @document = validate_input(document)
  @config = build_config(config)
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



80
81
82
# File 'lib/coradoc/html/converter_base.rb', line 80

def config
  @config
end

#documentObject (readonly)

Returns the value of attribute document.



80
81
82
# File 'lib/coradoc/html/converter_base.rb', line 80

def document
  @document
end

Class Method Details

.convert(document, config = {}) ⇒ String

Class method to convert a document

Parameters:

  • document (Coradoc::CoreModel::StructuralElement)

    The document to convert

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

    Converter configuration

Returns:

  • (String)

    HTML output



123
124
125
# File 'lib/coradoc/html/converter_base.rb', line 123

def self.convert(document, config = {})
  new(document, config).convert
end

.to_file(document, output_path, config = {}) ⇒ String

Class method to convert and write to file

Parameters:

  • document (Coradoc::CoreModel::StructuralElement)

    The document to convert

  • output_path (String)

    Path to write the output file

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

    Converter configuration

Returns:

  • (String)

    The output path



133
134
135
# File 'lib/coradoc/html/converter_base.rb', line 133

def self.to_file(document, output_path, config = {})
  new(document, config).to_file(output_path)
end

Instance Method Details

#convertString

This method is abstract.

Subclasses must implement this method

Convert the document to HTML

Returns:

  • (String)

    HTML output

Raises:

  • (NotImplementedError)

    if not implemented by subclass



97
98
99
100
# File 'lib/coradoc/html/converter_base.rb', line 97

def convert
  raise NotImplementedError,
        "#{self.class.name} must implement #convert method"
end

#to_file(output_path) ⇒ String

Convert and write to file

Parameters:

  • output_path (String)

    Path to write the output file

Returns:

  • (String)

    The output path



106
107
108
109
110
111
112
113
114
115
116
# File 'lib/coradoc/html/converter_base.rb', line 106

def to_file(output_path)
  html = convert

  # Ensure parent directory exists
  output_dir = File.dirname(output_path)
  FileUtils.mkdir_p(output_dir) unless output_dir == '.'

  File.write(output_path, html)

  output_path
end