74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
# File 'lib/dtc/utils/text/html.rb', line 74
def self.tag sym, content = :open_close, attrs = {}
tag = sym.to_s.split(".")
nature = :open_close
content = content.join("") if content.is_a?(Array)
if content.is_a?(Symbol)
nature = content unless content == :full
elsif !content.nil? && content.strip != ""
nature = :full
else
nature = SHORTFORM_TAGS.index(tag.first.downcase) ? :short : :open_close
end
= tag_name = tag.first.to_s
unless (nature = nature.to_sym) == :close
if tag.count > 1
attrs ||= {}
classes = attrs[:class] || []
classes = classes.split(/\s+/) if classes.is_a?(String)
classes += tag.drop(1).to_a
attrs[:class] = classes.uniq
end
+= attributes(attrs) unless nature == :close
end
natures = ({:open => %w[< >], :close => ['</', '>'], :short => ['<', ' />'], :open_close => ['<', "></#{tag_name}>"]})
if nature == :full
natures[:open].join() + content + natures[:close].join(tag_name)
else
raise RuntimeError, "Unknown tag nature #{nature.inspect}, should be one of #{natures.keys.to_a.inspect}" unless natures[nature]
natures[nature].join()
end
end
|