Class: Uniword::Validation::LayerValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/uniword/validation/layer_validator.rb

Overview

Base class for all layer validators.

Responsibility: Define the interface for layer validation. Single Responsibility: Only provides validation interface.

Each layer validator validates one specific aspect of document structure:

  • File structure (existence, permissions, etc.)

  • ZIP integrity (valid archive, no corruption)

  • OOXML parts (required files present)

  • XML schema (well-formed XML)

  • Relationships (valid references)

  • Content types (consistent type declarations)

  • Document semantics (valid structure)

Examples:

Implement a validator

class MyValidator < LayerValidator
  def layer_name
    'My Layer'
  end

  def validate(path)
    result = LayerValidationResult.new(layer_name)
    # Perform validation
    result.add_error('Something wrong') unless valid?
    result
  end
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config = {}) ⇒ LayerValidator

Initialize a layer validator.

Examples:

Create a validator

validator = MyValidator.new(config)

Parameters:

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

    Configuration hash



44
45
46
# File 'lib/uniword/validation/layer_validator.rb', line 44

def initialize(config = {})
  @config = config || {}
end

Instance Attribute Details

#configHash (readonly)

Returns Configuration for this validator.

Returns:

  • (Hash)

    Configuration for this validator



36
37
38
# File 'lib/uniword/validation/layer_validator.rb', line 36

def config
  @config
end

Instance Method Details

#enabled?Boolean

Check if this validator is enabled.

Examples:

validator.enabled? # => true

Returns:

  • (Boolean)

    true if enabled



79
80
81
82
83
84
# File 'lib/uniword/validation/layer_validator.rb', line 79

def enabled?
  layer_config = @config[config_key]
  return true if layer_config.nil?

  layer_config[:enabled] != false
end

#layer_nameString

Get the name of this validation layer.

Examples:

validator.layer_name # => 'File Structure'

Returns:

  • (String)

    Layer name

Raises:

  • (NotImplementedError)

    Must be implemented by subclass



55
56
57
58
# File 'lib/uniword/validation/layer_validator.rb', line 55

def layer_name
  raise NotImplementedError,
        "#{self.class} must implement #layer_name"
end

#validate(path) ⇒ LayerValidationResult

Validate the document at this layer.

Examples:

result = validator.validate('/path/to/document.docx')

Parameters:

  • path (String)

    Path to the document file

Returns:

Raises:

  • (NotImplementedError)

    Must be implemented by subclass



68
69
70
71
# File 'lib/uniword/validation/layer_validator.rb', line 68

def validate(path)
  raise NotImplementedError,
        "#{self.class} must implement #validate"
end