public
Description: Ruby on Rails
Homepage: http://rubyonrails.org
Clone URL: git://github.com/rails/rails.git
Search Repo:
Create a seperate file for ActiveSupport::OrderedHash.
josh (author)
Wed May 14 10:48:37 -0700 2008
commit  49846f85864f4b59d5593c30ee3c59b584d2975d
tree    7f746da60755000b4281ce2b2969508c116c7d3b
parent  7708650f73ddb4db300ea2059c60c1d907a4384e
...
39
40
41
 
42
43
44
...
39
40
41
42
43
44
45
0
@@ -39,6 +39,7 @@
0
 require 'active_support/dependencies'
0
 require 'active_support/deprecation'
0
 
0
+require 'active_support/ordered_hash'
0
 require 'active_support/ordered_options'
0
 require 'active_support/option_merger'
0
 
...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
0
@@ -1 +1,44 @@
0
+# OrderedHash is namespaced to prevent conflicts with other implementations
0
+module ActiveSupport
0
+ # Hash is ordered in Ruby 1.9!
0
+ if RUBY_VERSION >= '1.9'
0
+ OrderedHash = ::Hash
0
+ else
0
+ class OrderedHash < Array #:nodoc:
0
+ def []=(key, value)
0
+ if pair = assoc(key)
0
+ pair.pop
0
+ pair << value
0
+ else
0
+ self << [key, value]
0
+ end
0
+ end
0
+
0
+ def [](key)
0
+ pair = assoc(key)
0
+ pair ? pair.last : nil
0
+ end
0
+
0
+ def delete(key)
0
+ pair = assoc(key)
0
+ pair ? array_index = index(pair) : nil
0
+ array_index ? delete_at(array_index).last : nil
0
+ end
0
+
0
+ def keys
0
+ collect { |key, value| key }
0
+ end
0
+
0
+ def values
0
+ collect { |key, value| value }
0
+ end
0
+
0
+ def to_hash
0
+ returning({}) do |hash|
0
+ each { |array| hash[array[0]] = array[1] }
0
+ end
0
+ end
0
+ end
0
+ end
0
+end
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
0
@@ -1,47 +1,3 @@
0
-# OrderedHash is namespaced to prevent conflicts with other implementations
0
-module ActiveSupport
0
- # Hash is ordered in Ruby 1.9!
0
- if RUBY_VERSION >= '1.9'
0
- OrderedHash = ::Hash
0
- else
0
- class OrderedHash < Array #:nodoc:
0
- def []=(key, value)
0
- if pair = assoc(key)
0
- pair.pop
0
- pair << value
0
- else
0
- self << [key, value]
0
- end
0
- end
0
-
0
- def [](key)
0
- pair = assoc(key)
0
- pair ? pair.last : nil
0
- end
0
-
0
- def delete(key)
0
- pair = assoc(key)
0
- pair ? array_index = index(pair) : nil
0
- array_index ? delete_at(array_index).last : nil
0
- end
0
-
0
- def keys
0
- collect { |key, value| key }
0
- end
0
-
0
- def values
0
- collect { |key, value| value }
0
- end
0
-
0
- def to_hash
0
- returning({}) do |hash|
0
- each { |array| hash[array[0]] = array[1] }
0
- end
0
- end
0
- end
0
- end
0
-end
0
-
0
 class OrderedOptions < ActiveSupport::OrderedHash #:nodoc:
0
   def []=(key, value)
0
     super(key.to_sym, value)
...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
0
@@ -1 +1,46 @@
0
+require 'abstract_unit'
0
+
0
+class OrderedHashTest < Test::Unit::TestCase
0
+ def setup
0
+ @keys = %w( blue green red pink orange )
0
+ @values = %w( 000099 009900 aa0000 cc0066 cc6633 )
0
+ @ordered_hash = ActiveSupport::OrderedHash.new
0
+
0
+ @keys.each_with_index do |key, index|
0
+ @ordered_hash[key] = @values[index]
0
+ end
0
+ end
0
+
0
+ def test_order
0
+ assert_equal @keys, @ordered_hash.keys
0
+ assert_equal @values, @ordered_hash.values
0
+ end
0
+
0
+ def test_access
0
+ assert @keys.zip(@values).all? { |k, v| @ordered_hash[k] == v }
0
+ end
0
+
0
+ def test_assignment
0
+ key, value = 'purple', '5422a8'
0
+
0
+ @ordered_hash[key] = value
0
+ assert_equal @keys.length + 1, @ordered_hash.length
0
+ assert_equal key, @ordered_hash.keys.last
0
+ assert_equal value, @ordered_hash.values.last
0
+ assert_equal value, @ordered_hash[key]
0
+ end
0
+
0
+ def test_delete
0
+ key, value = 'white', 'ffffff'
0
+ bad_key = 'black'
0
+
0
+ @ordered_hash[key] = value
0
+ assert_equal @keys.length + 1, @ordered_hash.length
0
+
0
+ assert_equal value, @ordered_hash.delete(key)
0
+ assert_equal @keys.length, @ordered_hash.length
0
+
0
+ assert_nil @ordered_hash.delete(bad_key)
0
+ end
0
+end
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
...
1
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
4
5
0
@@ -1,49 +1,5 @@
0
 require 'abstract_unit'
0
 
0
-class OrderedHashTest < Test::Unit::TestCase
0
- def setup
0
- @keys = %w( blue green red pink orange )
0
- @values = %w( 000099 009900 aa0000 cc0066 cc6633 )
0
- @ordered_hash = ActiveSupport::OrderedHash.new
0
-
0
- @keys.each_with_index do |key, index|
0
- @ordered_hash[key] = @values[index]
0
- end
0
- end
0
-
0
- def test_order
0
- assert_equal @keys, @ordered_hash.keys
0
- assert_equal @values, @ordered_hash.values
0
- end
0
-
0
- def test_access
0
- assert @keys.zip(@values).all? { |k, v| @ordered_hash[k] == v }
0
- end
0
-
0
- def test_assignment
0
- key, value = 'purple', '5422a8'
0
-
0
- @ordered_hash[key] = value
0
- assert_equal @keys.length + 1, @ordered_hash.length
0
- assert_equal key, @ordered_hash.keys.last
0
- assert_equal value, @ordered_hash.values.last
0
- assert_equal value, @ordered_hash[key]
0
- end
0
-
0
- def test_delete
0
- key, value = 'white', 'ffffff'
0
- bad_key = 'black'
0
-
0
- @ordered_hash[key] = value
0
- assert_equal @keys.length + 1, @ordered_hash.length
0
-
0
- assert_equal value, @ordered_hash.delete(key)
0
- assert_equal @keys.length, @ordered_hash.length
0
-
0
- assert_nil @ordered_hash.delete(bad_key)
0
- end
0
-end
0
-
0
 class OrderedOptionsTest < Test::Unit::TestCase
0
   def test_usage
0
     a = OrderedOptions.new

Comments

    No one has commented yet.