Sha256: e49cc869891cba565d246d145296adaa6ee7964889eda51b5f4e2377c22db5a5
Contents?: true
Size: 1.11 KB
Versions: 2
Compression:
Stored size: 1.11 KB
Contents
module Jimmy class SchemaTypes::String < SchemaType register! trait :min_length trait :max_length trait(:pattern) { |regex| attrs[:pattern] = regex.is_a?(Regexp) ? regex.inspect.gsub(%r`^/|/[a-z]*$`, '') : regex } trait(:format) { |value| attrs[:format] = value.to_s.gsub('_', '-') } %i[ date_time email hostname ipv4 ipv6 uri ].each { |k| trait(k) { format k } } trait(:enum) do |*values| attrs[:enum] ||= [] attrs[:enum] |= values.flatten.map(&:to_s) end trait(Regexp) { |regex| pattern regex } trait Range do |value| variation = value.exclude_end? ? 1 : 0 if value.first < value.last attrs[:min_length] = value.first attrs[:max_length] = value.last - variation else attrs[:max_length] = value.first attrs[:min_length] = value.last + variation end end trait(Integer) { |value| min_length value; max_length value } trait(Array) { |value| enum value } compile do |hash| hash.merge! camelize_attrs(%i[min_length max_length pattern enum format]) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
jimmy-0.5.5 | lib/jimmy/schema_types/string.rb |
jimmy-0.5.4 | lib/jimmy/schema_types/string.rb |