Class: Uniword::Validation::LayerValidationResult

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

Overview

Represents the result of validating a single layer of document structure.

Responsibility: Store validation outcome for one layer (file, ZIP, XML, etc.) Single Responsibility: Only represents layer validation results.

A layer validation result includes:

  • Layer name

  • Collection of errors (critical and non-critical)

  • Collection of warnings

  • Collection of info messages

Examples:

Create a result

result = LayerValidationResult.new('File Structure')
result.add_error('File does not exist', critical: true)
result.valid? # => false

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(layer_name) ⇒ LayerValidationResult

Initialize a new LayerValidationResult.

Examples:

Create a result

result = LayerValidationResult.new('ZIP Integrity')

Parameters:

  • layer_name (String)

    Name of the validation layer



39
40
41
42
43
44
# File 'lib/uniword/validation/layer_validation_result.rb', line 39

def initialize(layer_name)
  @layer_name = layer_name
  @errors = []
  @warnings = []
  @infos = []
end

Instance Attribute Details

#errorsArray<Hash> (readonly)

Returns Collection of errors.

Returns:

  • (Array<Hash>)

    Collection of errors



25
26
27
# File 'lib/uniword/validation/layer_validation_result.rb', line 25

def errors
  @errors
end

#infosArray<Hash> (readonly)

Returns Collection of info messages.

Returns:

  • (Array<Hash>)

    Collection of info messages



31
32
33
# File 'lib/uniword/validation/layer_validation_result.rb', line 31

def infos
  @infos
end

#layer_nameString (readonly)

Returns Name of the validation layer.

Returns:

  • (String)

    Name of the validation layer



22
23
24
# File 'lib/uniword/validation/layer_validation_result.rb', line 22

def layer_name
  @layer_name
end

#warningsArray<Hash> (readonly)

Returns Collection of warnings.

Returns:

  • (Array<Hash>)

    Collection of warnings



28
29
30
# File 'lib/uniword/validation/layer_validation_result.rb', line 28

def warnings
  @warnings
end

Instance Method Details

#add_error(message, critical: false) ⇒ LayerValidationResult

Add an error to this layer’s results.

Examples:

Add a critical error

result.add_error('File is corrupted', critical: true)

Parameters:

  • message (String)

    Error message

  • critical (Boolean) (defaults to: false)

    Whether this is a critical error

Returns:



54
55
56
57
# File 'lib/uniword/validation/layer_validation_result.rb', line 54

def add_error(message, critical: false)
  @errors << { message: message, critical: critical }
  self
end

#add_info(message) ⇒ LayerValidationResult

Add an info message to this layer’s results.

Examples:

Add info

result.add_info('Optional part missing')

Parameters:

  • message (String)

    Info message

Returns:



78
79
80
81
# File 'lib/uniword/validation/layer_validation_result.rb', line 78

def add_info(message)
  @infos << { message: message }
  self
end

#add_warning(message) ⇒ LayerValidationResult

Add a warning to this layer’s results.

Examples:

Add a warning

result.add_warning('File is very large')

Parameters:

  • message (String)

    Warning message

Returns:



66
67
68
69
# File 'lib/uniword/validation/layer_validation_result.rb', line 66

def add_warning(message)
  @warnings << { message: message }
  self
end

#critical_failures?Boolean

Check if this layer has critical failures.

Examples:

result.critical_failures? # => true

Returns:

  • (Boolean)

    true if any critical errors



99
100
101
# File 'lib/uniword/validation/layer_validation_result.rb', line 99

def critical_failures?
  @errors.any? { |error| error[:critical] }
end

#error_countInteger

Get count of errors.

Returns:

  • (Integer)

    Error count



106
107
108
# File 'lib/uniword/validation/layer_validation_result.rb', line 106

def error_count
  @errors.count
end

#info_countInteger

Get count of info messages.

Returns:

  • (Integer)

    Info count



120
121
122
# File 'lib/uniword/validation/layer_validation_result.rb', line 120

def info_count
  @infos.count
end

#to_hHash

Convert to hash representation.

Examples:

result.to_h
# => { layer: 'File Structure', valid: false, errors: [...] }

Returns:

  • (Hash)

    Hash representation



131
132
133
134
135
136
137
138
139
140
# File 'lib/uniword/validation/layer_validation_result.rb', line 131

def to_h
  {
    layer: @layer_name,
    valid: valid?,
    critical_failures: critical_failures?,
    errors: @errors,
    warnings: @warnings,
    infos: @infos,
  }
end

#to_sString

Convert to string for display.

Returns:

  • (String)

    String representation



145
146
147
148
149
150
151
152
153
154
# File 'lib/uniword/validation/layer_validation_result.rb', line 145

def to_s
  status = valid? ? "PASS" : "FAIL"
  details = []
  details << "#{error_count} error(s)" if error_count.positive?
  details << "#{warning_count} warning(s)" if warning_count.positive?
  details << "#{info_count} info(s)" if info_count.positive?

  detail_str = details.empty? ? "" : " (#{details.join(', ')})"
  "[#{status}] #{@layer_name}#{detail_str}"
end

#valid?Boolean

Check if this layer validation passed.

Examples:

result.valid? # => false

Returns:

  • (Boolean)

    true if no errors



89
90
91
# File 'lib/uniword/validation/layer_validation_result.rb', line 89

def valid?
  @errors.empty?
end

#warning_countInteger

Get count of warnings.

Returns:

  • (Integer)

    Warning count



113
114
115
# File 'lib/uniword/validation/layer_validation_result.rb', line 113

def warning_count
  @warnings.count
end