mirror of
https://github.com/github/rails.git
synced 2026-01-26 14:58:11 -05:00
Added method access to OrdredOptions
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2422 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
@@ -15,6 +15,14 @@ class OrderedOptions < Array
|
||||
pair ? pair.last : nil
|
||||
end
|
||||
|
||||
def method_missing(name, *args)
|
||||
if name.to_s =~ /(.*)=$/
|
||||
self[$1.to_sym] = args.first
|
||||
else
|
||||
self[name]
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def find_pair(key)
|
||||
self.each { |i| return i if i.first == key }
|
||||
|
||||
@@ -34,4 +34,22 @@ class OrderedOptionsTest < Test::Unit::TestCase
|
||||
assert_equal test[index].last, value
|
||||
end
|
||||
end
|
||||
|
||||
def test_method_access
|
||||
a = OrderedOptions.new
|
||||
|
||||
assert_nil a.not_set
|
||||
|
||||
a.allow_concurreny = true
|
||||
assert_equal 1, a.size
|
||||
assert a.allow_concurreny
|
||||
|
||||
a.allow_concurreny = false
|
||||
assert_equal 1, a.size
|
||||
assert !a.allow_concurreny
|
||||
|
||||
a.else_where = 56
|
||||
assert_equal 2, a.size
|
||||
assert_equal 56, a.else_where
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user