Module: Deas::ErbTags::Utils

Defined in:
lib/deas-erbtags/utils.rb

Constant Summary collapse

ESCAPE_ATTRS =
{
  "&" => "&",
  "<" => "&lt;",
  '"' => "&quot;"
}
ESCAPE_ATTRS_PATTERN =
Regexp.union(*ESCAPE_ATTRS.keys)

Class Method Summary collapse

Class Method Details

.escape_attr_value(value) ⇒ Object



14
15
16
# File 'lib/deas-erbtags/utils.rb', line 14

def self.escape_attr_value(value)
  value.to_s.gsub(ESCAPE_ATTRS_PATTERN){|c| ESCAPE_ATTRS[c] }
end

.html_attrs(attrs = "", ns = nil) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/deas-erbtags/utils.rb', line 18

def self.html_attrs(attrs="", ns=nil)
  return attrs.to_s if !attrs.kind_of?(::Hash)

  attrs.collect do |k_v|
    [ns ? "#{ns}_#{k_v.first}" : k_v.first.to_s, k_v.last]
  end.sort.collect do |k_v|
    if k_v.last.kind_of?(::Hash)
      html_attrs(k_v.last, k_v.first)
    elsif k_v.last.kind_of?(::Array)
      " #{k_v.first}=\"#{escape_attr_value(k_v.last.join(' '))}\""
    else
      " #{k_v.first}=\"#{escape_attr_value(k_v.last)}\""
    end
  end.join
end

.insert_html_class(current, *to_insert) ⇒ Object



34
35
36
# File 'lib/deas-erbtags/utils.rb', line 34

def self.insert_html_class(current, *to_insert)
  (Set.new((current || '').split(' ')) + Set.new(to_insert)).sort.join(' ')
end