Class: Expressir::Model::InterfaceValidator
- Inherits:
-
Object
- Object
- Expressir::Model::InterfaceValidator
- Defined in:
- lib/expressir/model/interface_validator.rb
Overview
Validates EXPRESS interface statements (USE FROM, REFERENCE FROM) Single responsibility: Interface-specific validation only Handles schema reference validation, interface item validation, and type compatibility checks
Constant Summary collapse
- ERROR_TYPES =
Error types returned by validation
{ missing_schema: :missing_schema_reference, missing_item: :missing_interface_item, type_mismatch: :interface_type_mismatch, duplicate_alias: :duplicate_interface_alias, self_reference: :self_reference_interface, empty_items: :empty_interface_items, }.freeze
Instance Attribute Summary collapse
-
#repository ⇒ Object
readonly
Returns the value of attribute repository.
-
#schemas ⇒ Object
readonly
Returns the value of attribute schemas.
Instance Method Summary collapse
-
#initialize(repository) ⇒ InterfaceValidator
constructor
Initialize validator with a repository.
-
#validate(options = {}) ⇒ Hash
Main validation entry point.
-
#validate_schema(schema_name, options = {}) ⇒ Hash
Validate interfaces in a specific schema.
Constructor Details
#initialize(repository) ⇒ InterfaceValidator
Initialize validator with a repository
23 24 25 26 |
# File 'lib/expressir/model/interface_validator.rb', line 23 def initialize(repository) @repository = repository @schemas = repository.schemas end |
Instance Attribute Details
#repository ⇒ Object (readonly)
Returns the value of attribute repository.
19 20 21 |
# File 'lib/expressir/model/interface_validator.rb', line 19 def repository @repository end |
#schemas ⇒ Object (readonly)
Returns the value of attribute schemas.
19 20 21 |
# File 'lib/expressir/model/interface_validator.rb', line 19 def schemas @schemas end |
Instance Method Details
#validate(options = {}) ⇒ Hash
Main validation entry point
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/expressir/model/interface_validator.rb', line 35 def validate( = {}) errors = [] warnings = [] stats = { use_from: 0, reference_from: 0, total_items: 0 } schemas.each do |schema| validate_schema_interfaces(schema, errors, warnings, stats, ) end result = { valid?: errors.empty?, errors: errors, warnings: warnings, stats: stats, } if [:detailed] result[:interface_report] = build_detailed_report(errors, warnings, stats) end result end |
#validate_schema(schema_name, options = {}) ⇒ Hash
Validate interfaces in a specific schema
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/expressir/model/interface_validator.rb', line 63 def validate_schema(schema_name, = {}) schema = find_schema(schema_name) unless schema return { valid?: false, errors: [{ type: :schema_not_found, message: "Schema '#{schema_name}' not found" }] } end errors = [] warnings = [] stats = { use_from: 0, reference_from: 0, total_items: 0 } validate_schema_interfaces(schema, errors, warnings, stats, ) { valid?: errors.empty?, errors: errors, warnings: warnings, stats: stats, } end |