Module: JsonModel::Types

Defined in:
lib/json_model/types.rb,
lib/json_model/types/ref.rb,
lib/json_model/types/alias.rb,
lib/json_model/types/any_of.rb,
lib/json_model/types/one_of.rb

Defined Under Namespace

Classes: Alias, AnyOf, OneOf, Ref

Constant Summary collapse

Date =
Dry::Types['date'].meta(format: 'date')
DateTime =
Dry::Types['date_time'].meta(format: 'date-time')
Email =
String.constrained(format: URI::MailTo::EMAIL_REGEXP).meta(format: 'email')
Hostname =
String.constrained(
  format: /(?i)^(?:([a-z0-9-]+|\*)\.)?([a-z0-9-]{1,61})\.([a-z0-9]{2,7})$/,
).meta(format: 'hostname')
IPv4 =
String.constrained(
  format: ::Resolv::IPv4::Regex,
).meta(format: 'ipv4')
IPv6 =
String.constrained(
  format: ::Resolv::IPv6::Regex,
).meta(format: 'ipv6')
Time =
Dry::Types['time'].meta(format: 'time')
UUID =
String.constrained(
  format: /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,
).meta(format: 'uuid')
URI =
String.constrained(
  format: ::URI::DEFAULT_PARSER.make_regexp,
).meta(format: 'uri')
UriReference =
String.constrained(
  format: %r{^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?},
).meta(format: 'uri-reference')
Regex =
String.constrained(
  format: %r{\A(/?)(.+)\1([a-z]*)\z}i,
).meta(format: 'regex')
UniqueArray =
Array.constrained(unique: true)

Class Method Summary collapse

Class Method Details

.any_of(tag_key) ⇒ AnyOf

Parameters:

  • tag_key (Symbol)

Returns:



8
9
10
11
12
# File 'lib/json_model/types/any_of.rb', line 8

def any_of(tag_key, &)
  builder = AnyOf::Builder.new(tag_key)
  builder.instance_eval(&)
  builder.build
end

.one_of(tag_key) ⇒ OneOf

Parameters:

  • tag_key (Symbol)

Returns:



8
9
10
11
12
# File 'lib/json_model/types/one_of.rb', line 8

def one_of(tag_key, &)
  builder = OneOf::Builder.new(tag_key)
  builder.instance_eval(&)
  builder.build
end