module Feather::Support

Public Instance Methods

cast_as_vars(object, stack) click to toggle source
# File lib/feather/support.rb, line 33
def cast_as_vars(object, stack)
  if (object.is_a?(Hash))
    stack.each do |parent|
      if (parent.is_a?(Hash))
        object = parent.merge(object)
      end
    end
  
    object
  else
    object.respond_to?(:each) ? object : [ object ]
  end
end
css_escape(object) click to toggle source
# File lib/feather/support.rb, line 19
def css_escape(object)
  [ object ].flatten.join(' ')
end
html_escape(object) click to toggle source
# File lib/feather/support.rb, line 11
def html_escape(object)
  CGI.escapeHTML(object.to_s)
end
iterate(object) { |i| ... } click to toggle source
# File lib/feather/support.rb, line 23
def iterate(object)
  if (object.respond_to?(:each))
    object.each do |i|
      yield(i)
    end
  elsif (object)
    yield(object)
  end
end
js_escape(object) click to toggle source
# File lib/feather/support.rb, line 15
def js_escape(object)
  object.inspect
end
uri_escape(object) click to toggle source

Module/Mixin Methods =================================================

# File lib/feather/support.rb, line 7
def uri_escape(object)
  Addressable::URI.normalize_component(object.to_s, /[^a-z0-9\-\.]/i)
end
variable_stack(variables, force_as_array = true) click to toggle source
# File lib/feather/support.rb, line 47
def variable_stack(variables, force_as_array = true)
  case (variables)
  when Hash
    remapped = Hash[
      variables.collect do |k, v|
        [ k ? k.to_sym : k, variable_stack(v, false) ]
      end
    ]
    
    if (default = variables.default)
      remapped.default = default
    end

    if (default_proc = variables.default_proc)
      remapped.default_proc = default_proc
    end
    
    remapped
  when Array
    variables.collect do |v|
      variable_stack(v, false)
    end
  else
    force_as_array ? [ variables ] : variables
  end
end