module Rack::App::FrontEnd::Helpers::HtmlDsl::TagBuilder
Public Instance Methods
build(tag_name, *args, &block)
click to toggle source
# File lib/rack/app/front_end/helpers/html_dsl/tag_builder.rb, line 5 def build(tag_name, *args, &block) content = args.select { |a| a.is_a?(String) }.join html_properties = args.select { |a| a.is_a?(Hash) }.reduce({}) do |properties, hash| hash.each { |k, v| properties.merge!(k.to_s => v) } properties end html = '' html << "<#{tag_name}" unless html_properties.empty? html << ' ' html << html_properties.reduce([]) { |m, (k, v)| m << "#{k}=#{v.to_s.inspect}" }.join(' ') end if not content.empty? or not block.nil? html << ">" html << content html << Rack::App::FrontEnd::Helpers::HtmlDsl::Block.new(&block).to_s unless block.nil? html << "</#{tag_name}>" else html << "/>" end return html end