Class: LcpRuby::Metadata::SchemaValidator
- Inherits:
-
Object
- Object
- LcpRuby::Metadata::SchemaValidator
- Defined in:
- lib/lcp_ruby/metadata/schema_validator.rb
Constant Summary collapse
- SCHEMA_TYPES =
%w[model presenter permission view_group menu type page theme auth].freeze
- SCHEMAS_DIR =
File.("../schemas", __dir__).freeze
Class Method Summary collapse
-
.schema_for(type) ⇒ Object
Returns the cached JSONSchemer instance for ‘type` (`:permission`, `:model`, …).
Instance Method Summary collapse
-
#initialize ⇒ SchemaValidator
constructor
A new instance of SchemaValidator.
- #validate_auth_hash(hash) ⇒ Object
- #validate_menu(menu_definition) ⇒ Object
- #validate_model(model_definition) ⇒ Object
- #validate_page(page_definition) ⇒ Object
- #validate_permission(permission_definition) ⇒ Object
- #validate_presenter(presenter_definition) ⇒ Object
- #validate_theme_hash(hash) ⇒ Object
- #validate_type_hash(hash, name: nil) ⇒ Object
- #validate_view_group(view_group_definition) ⇒ Object
Constructor Details
#initialize ⇒ SchemaValidator
Returns a new instance of SchemaValidator.
16 17 18 |
# File 'lib/lcp_ruby/metadata/schema_validator.rb', line 16 def initialize @schemas = SCHEMA_TYPES.to_h { |name| [ name, self.class.schema_for(name) ] } end |
Class Method Details
.schema_for(type) ⇒ Object
Returns the cached JSONSchemer instance for ‘type` (`:permission`, `:model`, …). Used by `SchemaValidator#initialize` to populate its per-instance `@schemas`, and by test code that wants to validate raw hashes against a specific schema without going through a full Loader. Safe to call concurrently — the underlying JSONSchemer instances are immutable after construction.
26 27 28 29 30 31 32 33 |
# File 'lib/lcp_ruby/metadata/schema_validator.rb', line 26 def self.schema_for(type) name = type.to_s raise ArgumentError, "Unknown schema type: #{type}" unless SCHEMA_TYPES.include?(name) @schema_cache[name] ||= JSONSchemer.schema( JSON.parse(File.read(File.join(SCHEMAS_DIR, "#{name}.json"))) ) end |
Instance Method Details
#validate_auth_hash(hash) ⇒ Object
92 93 94 95 96 |
# File 'lib/lcp_ruby/metadata/schema_validator.rb', line 92 def validate_auth_hash(hash) return [] unless hash validate(:auth, hash, context_name: "Auth configuration") end |
#validate_menu(menu_definition) ⇒ Object
63 64 65 66 67 68 |
# File 'lib/lcp_ruby/metadata/schema_validator.rb', line 63 def () raw = .raw_hash return [] unless raw validate(:menu, raw, context_name: "Menu") end |
#validate_model(model_definition) ⇒ Object
35 36 37 38 39 40 |
# File 'lib/lcp_ruby/metadata/schema_validator.rb', line 35 def validate_model(model_definition) raw = model_definition.raw_hash return [] unless raw validate(:model, raw, context_name: "Model '#{model_definition.name}'") end |
#validate_page(page_definition) ⇒ Object
77 78 79 80 81 82 83 84 |
# File 'lib/lcp_ruby/metadata/schema_validator.rb', line 77 def validate_page(page_definition) raw = page_definition.raw_hash return [] unless raw validate(:page, raw, context_name: "Page '#{page_definition.name}'", source_path: page_definition.source_path) end |
#validate_permission(permission_definition) ⇒ Object
49 50 51 52 53 54 |
# File 'lib/lcp_ruby/metadata/schema_validator.rb', line 49 def () raw = .raw_hash return [] unless raw validate(:permission, raw, context_name: "Permission '#{.model}'") end |
#validate_presenter(presenter_definition) ⇒ Object
42 43 44 45 46 47 |
# File 'lib/lcp_ruby/metadata/schema_validator.rb', line 42 def validate_presenter(presenter_definition) raw = presenter_definition.raw_hash return [] unless raw validate(:presenter, raw, context_name: "Presenter '#{presenter_definition.name}'") end |
#validate_theme_hash(hash) ⇒ Object
86 87 88 89 90 |
# File 'lib/lcp_ruby/metadata/schema_validator.rb', line 86 def validate_theme_hash(hash) return [] unless hash validate(:theme, hash, context_name: "Theme") end |
#validate_type_hash(hash, name: nil) ⇒ Object
70 71 72 73 74 75 |
# File 'lib/lcp_ruby/metadata/schema_validator.rb', line 70 def validate_type_hash(hash, name: nil) return [] unless hash context = name ? "Type '#{name}'" : "Type" validate(:type, hash, context_name: context) end |
#validate_view_group(view_group_definition) ⇒ Object
56 57 58 59 60 61 |
# File 'lib/lcp_ruby/metadata/schema_validator.rb', line 56 def validate_view_group(view_group_definition) raw = view_group_definition.raw_hash return [] unless raw validate(:view_group, raw, context_name: "View group '#{view_group_definition.name}'") end |