Module: Halbuilder::KeyFormat

Defined in:
lib/halbuilder/key_format.rb

Class Method Summary collapse

Class Method Details

.setupObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/halbuilder/key_format.rb', line 5

def setup
  ::Jbuilder.deep_format_keys(true)

  # TODO: no good way to ignore in attributes, but keep in zoomed-embeds
  # ::Jbuilder.ignore_nil(true)

  ::Jbuilder.key_format ->(key) do
    key_format = Halbuilder.configuration.key_format
    link_format = Halbuilder.configuration.link_format
    link_key = Halbuilder.configuration.link_key
    embed_key = Halbuilder.configuration.embed_key

    ns = Halbuilder.configuration.link_namespace
    ns_start = "#{ns}_" if ns.present?
    ns_length = ns_start.length if ns.present?

    if key == link_key || key == embed_key
      key
    elsif ns_start && key.start_with?(ns_start)
      format_key("#{ns}:#{key[ns_length..]}", link_format)
    else
      format_key(key, key_format)
    end
  end
end