Class: JSONSchemer::Draft202012::Vocab::FormatAssertion::Format

Inherits:
Keyword
  • Object
show all
Extended by:
Format
Defined in:
lib/json_schemer/draft202012/vocab/format_assertion.rb

Constant Summary collapse

DEFAULT_FORMAT =
proc do |instance, value|
  !instance.is_a?(String) || valid_spec_format?(instance, value)
end

Constants included from Format

Format::ASCII_8BIT_TO_PERCENT_ENCODED, Format::DATE_TIME_OFFSET_REGEX, Format::HOUR_24_REGEX, Format::INVALID_QUERY_REGEX, Format::IP_REGEX, Format::IRI_ESCAPE_REGEX, Format::LEAP_SECOND_REGEX, Format::NIL_UUID, Format::UUID_REGEX

Constants included from Format::URITemplate

Format::URITemplate::EXPLODE, Format::URITemplate::EXPRESSION, Format::URITemplate::LITERALS, Format::URITemplate::MAX_LENGTH, Format::URITemplate::MODIFIER_LEVEL4, Format::URITemplate::OPERATOR, Format::URITemplate::PCT_ENCODED, Format::URITemplate::PREFIX, Format::URITemplate::URI_TEMPLATE, Format::URITemplate::URI_TEMPLATE_REGEX, Format::URITemplate::VARCHAR, Format::URITemplate::VARIABLE_LIST, Format::URITemplate::VARNAME, Format::URITemplate::VARSPEC

Constants included from Format::JSONPointer

Format::JSONPointer::JSON_POINTER_REGEX, Format::JSONPointer::JSON_POINTER_REGEX_STRING, Format::JSONPointer::RELATIVE_JSON_POINTER_REGEX

Constants included from Format::Hostname

Format::Hostname::ARABIC_EXTENDED_DIGITS_REGEX, Format::Hostname::ARABIC_INDIC_DIGITS_REGEX, Format::Hostname::CONTEXT_REGEX, Format::Hostname::EXCEPTIONS_DISALLOWED, Format::Hostname::EXCEPTIONS_PVALID, Format::Hostname::GREEK_LOWER_NUMERAL_SIGN, Format::Hostname::HEBREW_PUNCTUATION, Format::Hostname::HOSTNAME_REGEX, Format::Hostname::JOINING_TYPE_D_CHARACTER_CLASS, Format::Hostname::JOINING_TYPE_L_CHARACTER_CLASS, Format::Hostname::JOINING_TYPE_R_CHARACTER_CLASS, Format::Hostname::JOINING_TYPE_T_CHARACTER_CLASS, Format::Hostname::KATAKANA_MIDDLE_DOT_CONTEXT_REGEX, Format::Hostname::KATAKANA_MIDDLE_DOT_REGEX, Format::Hostname::LABEL_CHARACTER_CLASS, Format::Hostname::LABEL_REGEX_STRING, Format::Hostname::LEADING_CHARACTER_CLASS, Format::Hostname::LETTER_DIGITS, Format::Hostname::MARKS, Format::Hostname::MIDDLE_DOT, Format::Hostname::VIRAMA_CHARACTER_CLASS, Format::Hostname::ZERO_WIDTH_NON_JOINER_JOINING_TYPE, Format::Hostname::ZERO_WIDTH_VIRAMA

Constants included from Format::Email

Format::Email::ADDRESS_LITERAL, Format::Email::ATOM, Format::Email::A_TEXT, Format::Email::DOT_STRING, Format::Email::EMAIL_REGEX, Format::Email::LOCAL_PART, Format::Email::MAILBOX, Format::Email::QUOTED_PAIR_SMTP, Format::Email::QUOTED_STRING, Format::Email::Q_CONTENT_SMTP, Format::Email::Q_TEXT_SMTP, Format::Email::UTF8_NON_ASCII

Constants included from Format::Duration

Format::Duration::DURATION, Format::Duration::DURATION_REGEX, Format::Duration::DUR_DATE, Format::Duration::DUR_DAY, Format::Duration::DUR_HOUR, Format::Duration::DUR_MINUTE, Format::Duration::DUR_MONTH, Format::Duration::DUR_SECOND, Format::Duration::DUR_TIME, Format::Duration::DUR_WEEK, Format::Duration::DUR_YEAR

Constants included from Output

Output::FRAGMENT_ENCODE_REGEX

Instance Attribute Summary

Attributes inherited from Keyword

#parent, #parsed, #root, #value

Attributes included from Output

#keyword, #schema

Instance Method Summary collapse

Methods included from Format

decode_content_encoding, iri_escape, parse_content_media_type, parse_uri_scheme, percent_encode, valid_date_time?, valid_ip?, valid_regex?, valid_spec_format?, valid_uri?, valid_uri_reference?, valid_uuid?

Methods included from Format::URITemplate

#valid_uri_template?

Methods included from Format::JSONPointer

#valid_json_pointer?, #valid_relative_json_pointer?

Methods included from Format::Hostname

#valid_hostname?

Methods included from Format::Email

#valid_email?

Methods included from Format::Duration

#valid_duration?

Methods inherited from Keyword

#absolute_keyword_location, #initialize, #schema_pointer

Constructor Details

This class inherits a constructor from JSONSchemer::Keyword

Instance Method Details

#error(formatted_instance_location:) ⇒ Object



13
14
15
# File 'lib/json_schemer/draft202012/vocab/format_assertion.rb', line 13

def error(formatted_instance_location:, **)
  "value at #{formatted_instance_location} does not match format: #{value}"
end

#parseObject



17
18
19
# File 'lib/json_schemer/draft202012/vocab/format_assertion.rb', line 17

def parse
  root.format && root.formats.fetch(value) { root.meta_schema.formats.fetch(value, DEFAULT_FORMAT) }
end

#validate(instance, instance_location, keyword_location, _context) ⇒ Object



21
22
23
24
# File 'lib/json_schemer/draft202012/vocab/format_assertion.rb', line 21

def validate(instance, instance_location, keyword_location, _context)
  valid = parsed == false || parsed.call(instance, value)
  result(instance, instance_location, keyword_location, valid, :annotation => value)
end