Class: Lutaml::Xsd::Spa::OutputStrategy Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/lutaml/xsd/spa/output_strategy.rb

Overview

This class is abstract.

Subclass and implement #write_files to create a concrete output strategy

Base class for output strategies (Strategy Pattern)

Defines the interface for different output modes (single-file vs multi-file). Subclasses implement specific strategies for writing generated documentation to the filesystem.

This implements the Template Method pattern where the overall algorithm is defined in the base class, but specific steps are implemented by subclasses.

Examples:

Using an output strategy

strategy = SingleFileStrategy.new(output_path: 'docs.html')
files = strategy.write(html_content, schema_data)
puts "Generated files: #{files.join(', ')}"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(verbose: false) ⇒ OutputStrategy

Initialize output strategy

Parameters:

  • verbose (Boolean) (defaults to: false)

    Enable verbose output



31
32
33
# File 'lib/lutaml/xsd/spa/output_strategy.rb', line 31

def initialize(verbose: false)
  @verbose = verbose
end

Instance Attribute Details

#verboseObject (readonly)

Returns the value of attribute verbose.



26
27
28
# File 'lib/lutaml/xsd/spa/output_strategy.rb', line 26

def verbose
  @verbose
end

Instance Method Details

#write(html_content, schema_data) ⇒ Array<String>

Write output files (template method)

This method defines the algorithm for writing output files:

  1. Prepare output directory

  2. Write files using strategy-specific implementation

  3. Verify written files

  4. Return list of written files

Parameters:

  • html_content (String)

    Generated HTML content

  • schema_data (Hash)

    Serialized schema data

Returns:

  • (Array<String>)

    List of written file paths



46
47
48
49
50
51
52
53
54
55
# File 'lib/lutaml/xsd/spa/output_strategy.rb', line 46

def write(html_content, schema_data)
  log "Preparing output using #{self.class.name}..."

  prepare_output
  files = write_files(html_content, schema_data)
  verify_files(files)

  log "✓ Successfully wrote #{files.size} file(s)"
  files
end