class SmartCore::Schema::Checker::Rules::Options::Type
@api private @since 0.1.0
Constants
- ERROR_CODE
@note Constant is used only for clarity (for other developers) @return [Symbol]
@api private @since 0.1.0
Attributes
type[R]
@return [String, Symbol, SmartCore::Types::Primitive]
@api private @since 0.1.0
Public Class Methods
new(rule, required_type)
click to toggle source
@param rule [SmartCore::Schema::Checker::Rules::Base] @param required_type [String, Symbol, SmartCore::Types::Primitive] @return [void]
@api private @since 0.1.0
Calls superclass method
SmartCore::Schema::Checker::Rules::Options::Empty::new
# File lib/smart_core/schema/checker/rules/options/type.rb, line 20 def initialize(rule, required_type) super(rule) @type = resolve_required_type(required_type) end
Public Instance Methods
validate(verifiable_hash)
click to toggle source
@param verifiable_hash [SmartCore::Schema::Checker::VerifiableHash] @return [SmartCore::Schema::Checker::Rules::Result::Success] @return [SmartCore::Schema::Checker::Rules::Result::Failure]
@api private @since 0.1.0
# File lib/smart_core/schema/checker/rules/options/type.rb, line 31 def validate(verifiable_hash) schema_value = verifiable_hash[schema_key] if type.valid?(schema_value) SmartCore::Schema::Checker::Rules::Result::Success.new( key: schema_key, value: schema_value ) else SmartCore::Schema::Checker::Rules::Result::Failure.new( key: schema_key, value: schema_value, error: ERROR_CODE, message: "Requires #{type} type (got: #{schema_value.class})" ) end end
Private Instance Methods
resolve_required_type(required_type)
click to toggle source
@param required_type [String, Symbol, SmartCore::Types::Primitive] @return [SmartCore::Types::Primitive]
@api private @since 0.1.0
# File lib/smart_core/schema/checker/rules/options/type.rb, line 62 def resolve_required_type(required_type) unless required_type.is_a?(String) || required_type.is_a?(Symbol) || required_type.is_a?(SmartCore::Types::Primitive) raise(SmartCore::Schema::ArgumentError, <<~ERROR_MESSAGE) Schema key type should be a type of string, symbol or SmartCore:Types::Primitive (got: #{required_type}) ERROR_MESSAGE end if required_type.is_a?(SmartCore::Types::Primitive) required_type else begin SmartCore::Schema::Checker::Rules::TYPE_ALIASES.fetch(required_type.to_s) rescue KeyError raise(SmartCore::Schema::ArgumentError, <<~ERROR_MESSAGE) Chosen schema key type is not supported or not registered (got #{required_type}) ERROR_MESSAGE end end # TODO: rework with smart_type-system end