Class: Hanami::Helpers::HtmlHelper::HtmlNode Private

Inherits:
EmptyHtmlNode show all
Defined in:
lib/hanami/helpers/html_helper/html_node.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

HTML node

See Also:

Since:

  • 0.1.0

Direct Known Subclasses

FormHelper::HtmlNode

Constant Summary

Constants inherited from EmptyHtmlNode

EmptyHtmlNode::ATTRIBUTES_SEPARATOR, EmptyHtmlNode::BOOLEAN_ATTRIBUTES

Instance Method Summary collapse

Methods inherited from EmptyHtmlNode

#attribute, #attributes, #boolean_attribute, #boolean_attribute?

Constructor Details

#initialize(name, content, attributes, _options = {}) ⇒ Hanami::Helpers::HtmlHelper::HtmlNode

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Initialize a new HTML node

Parameters:

  • name (Symbol, String)

    the name of the tag

  • content (String, Proc, Hanami::Helpers::HtmlHelper::HtmlBuilder, NilClass)

    the optional content

  • attributes (Hash, NilClass)

    the optional tag attributes

  • _options (Hash) (defaults to: {})

    a optional set of data

Since:

  • 0.1.0


22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/hanami/helpers/html_helper/html_node.rb', line 22

def initialize(name, content, attributes, _options = {})
  @builder = HtmlBuilder.new
  @name    = name
  @content = case content
             when Hash
               @attributes = content
               nil
             else
               @attributes = attributes.to_h if attributes.respond_to?(:to_h)
               content
             end
end

Instance Method Details

#contentString (private)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Resolve the (nested) content

Returns:

  • (String)

    the content

Since:

  • 0.1.0


55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/hanami/helpers/html_helper/html_node.rb', line 55

def content # rubocop:disable Metrics/MethodLength
  case @content
  when Proc
    result = @builder.resolve(&@content)

    if @builder.nested?
      "\n#{@builder}\n"
    else
      "\n#{Utils::Escape.html(result)}\n"
    end
  else
    Utils::Escape.html(@content)
  end
end

#to_sString

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Resolve and return the output

Returns:

  • (String)

    the output

See Also:

Since:

  • 0.1.0


43
44
45
# File 'lib/hanami/helpers/html_helper/html_node.rb', line 43

def to_s
  %(#{super}#{content}</#{@name}>)
end