Class: GrapeOAS::Introspectors::DryIntrospectorSupport::ContractResolver
- Inherits:
-
Object
- Object
- GrapeOAS::Introspectors::DryIntrospectorSupport::ContractResolver
- Defined in:
- lib/grape_oas/introspectors/dry_introspector_support/contract_resolver.rb
Overview
Resolves contract class, schema, and metadata from a Dry contract. Handles both class and instance contracts.
Instance Method Summary collapse
-
#canonical_name ⇒ String?
Gets canonical name for contracts and schemas.
-
#contract_class ⇒ Class
Gets the contract class (handles both class and instance).
-
#contract_schema ⇒ Object
Gets the schema from contract (handles both class and instance).
-
#initialize(contract) ⇒ ContractResolver
constructor
A new instance of ContractResolver.
-
#validation_contract? ⇒ Boolean
Checks if this is a Dry::Validation::Contract (class or instance).
Constructor Details
#initialize(contract) ⇒ ContractResolver
Returns a new instance of ContractResolver.
9 10 11 |
# File 'lib/grape_oas/introspectors/dry_introspector_support/contract_resolver.rb', line 9 def initialize(contract) @contract = contract end |
Instance Method Details
#canonical_name ⇒ String?
Gets canonical name for contracts and schemas.
-
For Dry::Validation::Contract: uses class name
-
For Dry::Schema with schema_name: uses the defined schema_name
36 37 38 39 40 41 42 43 |
# File 'lib/grape_oas/introspectors/dry_introspector_support/contract_resolver.rb', line 36 def canonical_name return contract_class.name if validation_contract? # Check for schema_name on Dry::Schema objects return @contract.schema_name if @contract.respond_to?(:schema_name) && @contract.schema_name nil end |
#contract_class ⇒ Class
Gets the contract class (handles both class and instance).
16 17 18 |
# File 'lib/grape_oas/introspectors/dry_introspector_support/contract_resolver.rb', line 16 def contract_class @contract.is_a?(Class) ? @contract : @contract.class end |
#contract_schema ⇒ Object
Gets the schema from contract (handles both class and instance).
23 24 25 26 27 28 29 |
# File 'lib/grape_oas/introspectors/dry_introspector_support/contract_resolver.rb', line 23 def contract_schema if @contract.is_a?(Class) @contract.respond_to?(:schema) ? @contract.schema : @contract else @contract.respond_to?(:schema) ? @contract.class.schema : @contract end end |
#validation_contract? ⇒ Boolean
Checks if this is a Dry::Validation::Contract (class or instance).
48 49 50 51 52 53 54 55 56 |
# File 'lib/grape_oas/introspectors/dry_introspector_support/contract_resolver.rb', line 48 def validation_contract? return false unless defined?(Dry::Validation::Contract) if @contract.is_a?(Class) @contract < Dry::Validation::Contract else @contract.is_a?(Dry::Validation::Contract) end end |