diff --git a/lib/widgets/highlightable.rb b/lib/widgets/highlightable.rb
index 5cb4dc3..950cef9 100644
--- a/lib/widgets/highlightable.rb
+++ b/lib/widgets/highlightable.rb
@@ -1,80 +1,81 @@
-module Widgets
- module Highlightable
- def self.included(base)
- # base.extend(ClassMethods)
- base.class_eval do
- include InstanceMethods
- attr_writer :highlights
- end
- end
-
- module InstanceMethods
- def highlights
- @highlights ||= []
- @highlights
- end
-
- # a rule can be:
- # * a parameter hash eg: {:controller => 'main', :action => 'welcome'}
- # * a string containing an URL eg: 'http://blog.seesaw.it'
- def highlights_on rule
- highlights << rule
- end
-
- # force the tab as highlighted
- def highlight!
- highlights_on proc { true }
- end
-
- # takes in input a Hash (usually params)
- # or a string/Proc that evaluates to true/false
- # it does ignore some params like 'only_path' etc..
- # we have to do this in orderr to support restful routes
- def highlighted? options={}
- option = clean_unwanted_keys(options)
- #puts "### '#{name}'.highlighted? #{options.inspect}"
- result = false
-
- highlights.each do |highlight| # for every highlight(proc or hash)
- highlighted = true
- if highlight.kind_of? String # do not highlight @TODO: should we evaluate the request URI for this?
- highlighted &= false
- elsif highlight.kind_of? Proc # evaluate the proc
- h = highlight.call
- if (h.is_a?(TrueClass) || h.is_a?(FalseClass))
- highlighted &= h
- else
- raise 'proc highlighting rules must evaluate to TrueClass or FalseClass'
- end
- elsif highlight.kind_of? Hash # evaluate the hash
- h = clean_unwanted_keys(highlight)
- h.each_key do |key| # for each key
- # remove first slash from :controller key otherwise highlighted? could fail with urls such as {:controller => "/base"
- h_key = h[key].to_param.dup
- h_key.gsub!(/^\//,"") if key == :controller
- highlighted &= h_key==options[key].to_s
- end
- else # highlighting rule not supported
- raise 'highlighting rules should be String, Proc or Hash'
- end
- result |= highlighted
- end
- return result
- end
-
- private
-
- # removes unwanted keys from a Hash
- # and returns a new hash
- def clean_unwanted_keys(hash)
- ignored_keys = [:only_path, :use_route]
- hash.dup.delete_if{|key,value| ignored_keys.include?(key)}
- end
-
- def check_hash(param, param_name)
- raise "param '#{param_name}' should be a Hash but is #{param.inspect}" unless param.kind_of?(Hash)
- param
- end
- end
- end
-end
+module Widgets
+ module Highlightable
+ def self.included(base)
+ # base.extend(ClassMethods)
+ base.class_eval do
+ include InstanceMethods
+ attr_writer :highlights
+ end
+ end
+
+ module InstanceMethods
+ def highlights
+ @highlights ||= []
+ @highlights
+ end
+
+ # a rule can be:
+ # * a parameter hash eg: {:controller => 'main', :action => 'welcome'}
+ # * a string containing an URL eg: 'http://blog.seesaw.it'
+ def highlights_on rule
+ highlights << rule
+ end
+
+ # force the tab as highlighted
+ def highlight!
+ highlights_on proc { true }
+ end
+
+ # takes in input a Hash (usually params)
+ # or a string/Proc that evaluates to true/false
+ # it does ignore some params like 'only_path' etc..
+ # we have to do this in orderr to support restful routes
+ def highlighted? options={}
+ option = clean_unwanted_keys(options)
+ #puts "### '#{name}'.highlighted? #{options.inspect}"
+ result = false
+
+ highlights.each do |highlight| # for every highlight(proc or hash)
+ highlighted = true
+ if highlight.kind_of? String # do not highlight @TODO: should we evaluate the request URI for this?
+ highlighted &= false
+ elsif highlight.kind_of? Proc # evaluate the proc
+ h = highlight.call
+ if (h.is_a?(TrueClass) || h.is_a?(FalseClass))
+ highlighted &= h
+ else
+ raise 'proc highlighting rules must evaluate to TrueClass or FalseClass'
+ end
+ elsif highlight.kind_of? Hash # evaluate the hash
+ h = clean_unwanted_keys(highlight)
+ h.each_key do |key| # for each key
+ next if h[key].nil?
+ # remove first slash from :controller key otherwise highlighted? could fail with urls such as {:controller => "/base"
+ h_key = h[key].to_param.dup
+ h_key.gsub!(/^\//,"") if key == :controller
+ highlighted &= h_key==options[key].to_s
+ end
+ else # highlighting rule not supported
+ raise 'highlighting rules should be String, Proc or Hash'
+ end
+ result |= highlighted
+ end
+ return result
+ end
+
+ private
+
+ # removes unwanted keys from a Hash
+ # and returns a new hash
+ def clean_unwanted_keys(hash)
+ ignored_keys = [:only_path, :use_route]
+ hash.dup.delete_if{|key,value| ignored_keys.include?(key)}
+ end
+
+ def check_hash(param, param_name)
+ raise "param '#{param_name}' should be a Hash but is #{param.inspect}" unless param.kind_of?(Hash)
+ param
+ end
+ end
+ end
+end