Sha256: 5275bb62d7e3d766d03811c464ed453013f7c8f2f7b46d643810f34f05089e17
Contents?: true
Size: 1.33 KB
Versions: 4
Compression:
Stored size: 1.33 KB
Contents
# frozen_string_literal: true module Navigator # Renders a HTML tag. class Tag attr_reader :name, :content def self.names_without_suffix %w[img input] end # rubocop:disable Metrics/ParameterLists def initialize name, content = nil, attributes: {}, activator: Navigator::TagActivator.new @name = String(name) @content = content @attributes = attributes.with_indifferent_access @activator = activator end def prefix ["<#{name}", format_attributes, ">"].compact * "" end def computed_content self.class.names_without_suffix.include?(name) ? nil : content end def suffix self.class.names_without_suffix.include?(name) ? nil : "</#{name}>" end def render [prefix, computed_content, suffix].compact * "" end private attr_reader :attributes, :activator def expand_data_attributes! attrs return unless attrs.key? :data attrs.delete(:data).each { |key, value| attrs["data-#{key}"] = value } end def concatenate_attributes attrs activator.activate(attrs).map { |key, value| %(#{key}="#{value}") } * " " end def format_attributes attrs = attributes.clone expand_data_attributes! attrs attrs = concatenate_attributes attrs attrs.empty? ? nil : " #{attrs}" end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
navigator-2.4.1 | lib/navigator/tag.rb |
navigator-2.4.0 | lib/navigator/tag.rb |
navigator-2.3.0 | lib/navigator/tag.rb |
navigator-2.2.0 | lib/navigator/tag.rb |