Module: JSONAPI::Deserializable::Resource::DSL
- Included in:
- JSONAPI::Deserializable::Resource
- Defined in:
- lib/jsonapi/deserializable/resource/dsl.rb
Constant Summary collapse
- DEFAULT_TYPE_BLOCK =
proc { |t| { type: t } }
- DEFAULT_ID_BLOCK =
proc { |i| { id: i } }
- DEFAULT_ATTR_BLOCK =
proc { |v, k| { k.to_sym => v } }
- DEFAULT_HAS_ONE_BLOCK =
proc do |_, i, t, k| { "#{k}_id".to_sym => i, "#{k}_type".to_sym => t } end
- DEFAULT_HAS_MANY_BLOCK =
proc do |_, i, t, k| { "#{k}_ids".to_sym => i, "#{k}_types".to_sym => t } end
Instance Method Summary collapse
- #attribute(key, &block) ⇒ Object
- #attributes(*keys, &block) ⇒ Object
- #has_many(key = nil, &block) ⇒ Object
- #has_one(key = nil, &block) ⇒ Object
- #id(&block) ⇒ Object
- #key_format(callable = nil, &block) ⇒ Object
- #type(&block) ⇒ Object
Instance Method Details
#attribute(key, &block) ⇒ Object
23 24 25 |
# File 'lib/jsonapi/deserializable/resource/dsl.rb', line 23 def attribute(key, &block) attr_blocks[key.to_s] = block || DEFAULT_ATTR_BLOCK end |
#attributes(*keys, &block) ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/jsonapi/deserializable/resource/dsl.rb', line 27 def attributes(*keys, &block) if keys.empty? self.default_attr_block = block || DEFAULT_ATTR_BLOCK else keys.each { |k| attribute(k, &block) } end end |
#has_many(key = nil, &block) ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/jsonapi/deserializable/resource/dsl.rb', line 43 def has_many(key = nil, &block) if key has_many_rel_blocks[key.to_s] = block || DEFAULT_HAS_MANY_BLOCK else self.default_has_many_rel_block = block || DEFAULT_HAS_MANY_BLOCK end end |
#has_one(key = nil, &block) ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/jsonapi/deserializable/resource/dsl.rb', line 35 def has_one(key = nil, &block) if key has_one_rel_blocks[key.to_s] = block || DEFAULT_HAS_ONE_BLOCK else self.default_has_one_rel_block = block || DEFAULT_HAS_ONE_BLOCK end end |
#id(&block) ⇒ Object
19 20 21 |
# File 'lib/jsonapi/deserializable/resource/dsl.rb', line 19 def id(&block) self.id_block = block || DEFAULT_ID_BLOCK end |
#key_format(callable = nil, &block) ⇒ Object
51 52 53 |
# File 'lib/jsonapi/deserializable/resource/dsl.rb', line 51 def key_format(callable = nil, &block) self.key_formatter = callable || block end |
#type(&block) ⇒ Object
15 16 17 |
# File 'lib/jsonapi/deserializable/resource/dsl.rb', line 15 def type(&block) self.type_block = block || DEFAULT_TYPE_BLOCK end |