Skip to content

Instantly share code, notes, and snippets.

@roryokane
Forked from jcasimir/gist:3247167
Created August 3, 2012 17:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save roryokane/3250004 to your computer and use it in GitHub Desktop.
Save roryokane/3250004 to your computer and use it in GitHub Desktop.
test harness for posted code wanting refactoring
class LocaleChooser
LOOKUP_CHAIN = [:params, :user, :session, :http, :default]
def self.set_by(inputs)
locale = nil
LOOKUP_CHAIN.each do |lookup|
locale = send("by_#{lookup}", inputs[lookup])
break if locale
end
return locale
end
# define self.by_params(input), self.by_user(input), etc.
class << self
returning_lookups = [:user, :http] # edit me for testing
LOOKUP_CHAIN.each do |lookup|
define_method("by_#{lookup}") do |input|
puts "evaluated by_#{lookup}"
if returning_lookups.include?(lookup)
return [lookup, input]
else
return nil
end
end
end
end
end
p LocaleChooser.set_by({})
puts '---'
p LocaleChooser.set_by(:user => :custom_user)
puts '---'
p LocaleChooser.set_by(:default => :custom_default)
puts '---'
p LocaleChooser.set_by(:params => :custom_params)
evaluated by_params
evaluated by_user
[:user, nil]
---
evaluated by_params
evaluated by_user
[:user, :custom_user]
---
evaluated by_params
evaluated by_user
[:user, nil]
---
evaluated by_params
evaluated by_user
[:user, nil]
@roryokane
Copy link
Author

This comment of mine on the Gist I forked this from explains the origin of this code and how to use it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment