Sha256: 878aab07e68c1ccdd06f9d025cc0d54e4ddf111cb78fa268d3f5d87f4a71df8d
Contents?: true
Size: 1.4 KB
Versions: 1
Compression:
Stored size: 1.4 KB
Contents
# typed: strict module DataModel class Builtin::String < Type include Errors class Arguments < T::Struct prop :optional, T::Boolean, default: false prop :allow_blank, T::Boolean, default: true prop :included, T::Array[String], default: [] prop :excluded, T::Array[String], default: [] end sig { override.params(val: Object, coerce: T::Boolean).returns(TTypeResult) } def read(val, coerce: false) args = Arguments.new(type_args) err = Error.new # optional & missing if args.optional && val.nil? return [val, err] end if !args.optional && val.nil? err.add(missing_error(String)) return [val, err] end # type error if !val.is_a?(String) && !coerce err.add(type_error(String, val)) return [val, err] end # attempt coercion if !val.is_a?(String) && coerce begin val = String(val) rescue TypeError err.add(coerce_error(String, val)) return [val, err] end end # inclusion if args.included.any? && !args.included.include?(val) err.add(inclusion_error(args.included)) return [val, err] end # exclusion if args.excluded.any? && args.excluded.include?(val) err.add(exclusion_error(args.excluded)) return [val, err] end # allow blank if val.is_a?(String) && !args.allow_blank && val.empty? err.add(blank_error) return [val, err] end # done return [val, err] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
data_model-0.1.0 | lib/data_model/builtin/string.rb |