Sha256: 35d68c6546d1dc742c71c5bbbe0d2f54d40a249689817f7291ad3c3f953f98fa
Contents?: true
Size: 805 Bytes
Versions: 2
Compression:
Stored size: 805 Bytes
Contents
# frozen_string_literal: true module Jimmy module Declaration private CASTS = { TrueClass => ->(s, _) { s }, FalseClass => ->(s, _) { s.nothing }, Regexp => ->(s, v) { s.pattern v }, Range => ->(s, v) { s.range v } }.freeze CASTABLE_CLASSES = CASTS.keys.freeze # Cast the given value to a usable schema. # @param [Object] value # @return [Jimmy::Schema] def cast_schema(value) case value when *CASTABLE_CLASSES then apply_cast(Schema.new, value) when Schema then value else assert { "Expected #{value.class} to be a schema" } end end def apply_cast(schema, value) CASTS.each do |klass, proc| return proc.call schema, value if value.is_a? klass end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
jimmy-2.1.0 | lib/jimmy/declaration/casting.rb |
jimmy-2.0.3 | lib/jimmy/declaration/casting.rb |