lib/hexp/builder.rb
def <<(*args)
      args.each do |arg|
        if arg.respond_to?(:to_hexp)
          @stack.last[2] << arg
          self
        else
          ::Kernel.raise ::Hexp::FormatError, "Inserting literal HTML into a builder with << is deliberately not supported by Hexp"
        end
      end
    end
def <<(*args)
      args.each do |arg|
        if arg.respond_to?(:to_hexp)
          @stack.last[2] << arg
          self
        else
          ::Kernel.raise ::Hexp::FormatError, "Inserting literal HTML into a builder with << is deliberately not supported by Hexp"
        end
      end
    end
Add Hexp objects to the current tag

 Any Hexp::Node or other object implementing to_hexp can be added with
 this operator. Multiple objects can be specified in one call.

 Nokogiri and Builder allow inserting of strings containing HTML through
 this operator. Since this would violate the core philosophy of Hexp, and
 open the door for XSS vulnerabilities, we do not support that usage.

 If you really want to insert HTML that is already in serialized form,
 consider parsing it to Hexps first

 @example
   widget = H[:button, "click me!"]
   node = Hexp.build :div do |h|
     h << widget
   end
   node.to_html #=> <div><button>click me!</button></div>

 @param [Array<#to_hexp>] args
   Hexpable objects to add to the current tag

 @return [Hexp::Builder]

 @api public