Module: JsonSchema::Attributes
- Included in:
- Schema
- Defined in:
- lib/json_schema/attributes.rb
Overview
Attributes mixes in some useful attribute-related methods for use in defining schema classes in a spirit similar to Ruby’s attr_accessor and friends.
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
-
#[](name) ⇒ Object
Allows the values of schema attributes to be accessed with a symbol or a string.
- #copy_from(schema) ⇒ Object
- #initialize_attrs ⇒ Object
Class Method Details
.included(klass) ⇒ Object
83 84 85 86 |
# File 'lib/json_schema/attributes.rb', line 83 def self.included(klass) klass.extend(ClassMethods) klass.send(:initialize_attrs) end |
Instance Method Details
#[](name) ⇒ Object
Allows the values of schema attributes to be accessed with a symbol or a string. So for example, the value of ‘schema.additional_items` could be procured with `schema`. This only works for attributes that are part of the JSON schema specification; other methods on the class are not available (e.g. `expanded`.)
This is implemented so that ‘JsonPointer::Evaluator` can evaluate a reference on an sintance of this class (as well as plain JSON data).
96 97 98 99 100 101 102 103 |
# File 'lib/json_schema/attributes.rb', line 96 def [](name) name = name.to_sym if self.class.schema_attrs.key?(name) send(self.class.schema_attrs[name]) else raise NoMethodError, "Schema does not respond to ##{name}" end end |
#copy_from(schema) ⇒ Object
105 106 107 108 109 |
# File 'lib/json_schema/attributes.rb', line 105 def copy_from(schema) self.class.copyable_attrs.each do |copyable, _| instance_variable_set(copyable, schema.instance_variable_get(copyable)) end end |
#initialize_attrs ⇒ Object
111 112 113 114 115 |
# File 'lib/json_schema/attributes.rb', line 111 def initialize_attrs self.class.copyable_attrs.each do |attr, _| instance_variable_set(attr, nil) end end |