Module: Senko::Dialect
- Defined in:
- lib/senko/dialect.rb
Constant Summary collapse
- DEFAULT =
:'2020-12'- DIALECT_MAP =
{ 'https://json-schema.org/draft/2020-12/schema' => :'2020-12', 'https://json-schema.org/draft/2020-12/schema#' => :'2020-12', 'https://json-schema.org/draft/2019-09/schema' => :'2019-09', 'https://json-schema.org/draft/2019-09/schema#' => :'2019-09', 'http://json-schema.org/draft-07/schema#' => :'draft-07', 'http://json-schema.org/draft-07/schema' => :'draft-07', 'http://json-schema.org/draft-06/schema#' => :'draft-06', 'http://json-schema.org/draft-06/schema' => :'draft-06', 'http://json-schema.org/draft-04/schema#' => :'draft-04', 'http://json-schema.org/draft-04/schema' => :'draft-04' }.freeze
- SUPPORTED =
%i[2020-12 2019-09 draft-07 draft-06 draft-04].freeze
Class Method Summary collapse
- .detect(schema, explicit_draft = nil) ⇒ Object
- .normalize_name(name) ⇒ Object
- .schema_draft(schema) ⇒ Object
Class Method Details
.detect(schema, explicit_draft = nil) ⇒ Object
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/senko/dialect.rb', line 24 def detect(schema, explicit_draft = nil) draft = explicit_draft || schema_draft(schema) || DEFAULT normalized = normalize_name(draft) unless SUPPORTED.include?(normalized) raise UnsupportedDialectError, "unsupported JSON Schema dialect: #{draft.inspect}" end normalized end |
.normalize_name(name) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/senko/dialect.rb', line 42 def normalize_name(name) case name when :'2020-12', :draft202012, '2020-12', 'draft202012' :'2020-12' when :'2019-09', :draft201909, '2019-09', 'draft201909' :'2019-09' when :'draft-07', :draft07, 'draft-07', 'draft07' :'draft-07' when :'draft-06', :draft06, 'draft-06', 'draft06' :'draft-06' when :'draft-04', :draft04, 'draft-04', 'draft04' :'draft-04' else name end end |
.schema_draft(schema) ⇒ Object
35 36 37 38 39 40 |
# File 'lib/senko/dialect.rb', line 35 def schema_draft(schema) return nil unless schema.is_a?(Hash) value = schema['$schema'] || schema[:$schema] DIALECT_MAP[value] end |