Class: Fontisan::Validators::Validator

Inherits:
Object
  • Object
show all
Defined in:
lib/fontisan/validators/validator.rb

Overview

Base class for all validators using block-based DSL

This class provides a declarative DSL for defining validation checks and an execution engine that runs those checks against font files. Subclasses define their validation logic by implementing define_checks.

Examples:

Creating a custom validator

class MyValidator < Validator
  private

  def define_checks
    check_table :name_table, 'name' do
      check_field :family_name, :family_name do |table, value|
        !value.nil? && !value.empty?
      end
    end
  end
end

Running validation

validator = MyValidator.new
report = validator.validate(font)
puts report.valid?

Direct Known Subclasses

BasicValidator

Instance Method Summary collapse

Constructor Details

#initializeValidator

Initialize validator and define checks



30
31
32
33
34
# File 'lib/fontisan/validators/validator.rb', line 30

def initialize
  @checks = []
  @current_table_context = nil
  define_checks
end

Instance Method Details

#validate(font) ⇒ ValidationReport

Validate a font and return a ValidationReport

Parameters:

Returns:

  • (ValidationReport)

    Complete validation report



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/fontisan/validators/validator.rb', line 40

def validate(font)
  start_time = Time.now
  all_results = []

  @checks.each do |check_def|
    result = execute_check(font, check_def)
    all_results << result
  end

  elapsed = Time.now - start_time
  build_report(font, all_results, elapsed)
end