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

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