Module: Halogen::Embeds::InstanceMethods

Defined in:
lib/halogen/embeds.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#child_embed_opts(key) ⇒ Hash

Parameters:

  • key (String)

Returns:

  • (Hash)


58
59
60
61
62
63
64
65
# File 'lib/halogen/embeds.rb', line 58

def child_embed_opts(key)
  opts = embed_options.fetch(key, {})

  # Turn { :report => 1 } into { :report => {} } for child
  opts = {} unless opts.is_a?(Hash)

  opts
end

#embed_optionsHash

Returns hash of options with top level string keys.

Returns:

  • (Hash)

    hash of options with top level string keys



85
86
87
88
89
# File 'lib/halogen/embeds.rb', line 85

def embed_options
  @_embed_options ||= options.fetch(:embed, {}).tap do |result|
    Halogen::HashUtil.stringify_keys!(result)
  end
end

#embeddedHash

Returns hash of rendered resources to embed.

Returns:

  • (Hash)

    hash of rendered resources to embed



29
30
31
32
33
34
35
36
37
# File 'lib/halogen/embeds.rb', line 29

def embedded
  render_definitions(Definition.name) do |definition, result|
    value = instance_eval(&definition.procedure)

    child = embedded_child(definition.name.to_s, value)

    result[definition.name] = child if child
  end
end

#embedded_child(key, value) ⇒ nil, ...

Returns either a single rendered child representer or an array of them.

Returns:

  • (nil, Hash, Array<Hash>)

    either a single rendered child representer or an array of them



42
43
44
45
46
47
48
49
50
51
52
# File 'lib/halogen/embeds.rb', line 42

def embedded_child(key, value)
  return unless value

  opts = child_embed_opts(key)

  if value.is_a?(Array)
    value.map { |item| render_child(item, opts) }.compact
  else
    render_child(value, opts)
  end
end

#renderHash

Returns the rendered hash with embedded resources, if any.

Returns:

  • (Hash)

    the rendered hash with embedded resources, if any



23
24
25
# File 'lib/halogen/embeds.rb', line 23

def render
  decorate_render :embedded, super
end

#render_child(repr, opts) ⇒ nil, Hash

Returns the rendered child.

Parameters:

  • repr (Object)

    the child representer

  • opts (Hash)

    the embed options to assign to the child

Returns:

  • (nil, Hash)

    the rendered child



72
73
74
75
76
77
78
79
80
81
# File 'lib/halogen/embeds.rb', line 72

def render_child(repr, opts)
  return unless repr.class.included_modules.include?(Halogen)

  repr.options[:embed] ||= {}
  repr.options[:embed].merge!(opts)

  repr.options[:parent] = self

  repr.render
end