super_list 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +10 -8
- data/VERSION +1 -1
- data/lib/super_list.rb +20 -6
- data/test/dummy/config/initializers/super_list.rb +1 -1
- data/test/super_list_test.rb +8 -5
- metadata +12 -12
data/README.rdoc
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
= Super List - https://github.com/jinzhu/super_list
|
2
2
|
|
3
3
|
## in config/initializers/super_list.rb
|
4
|
-
SuperList.new("Gender", {"M" => "Man", "F" => "Female"
|
4
|
+
SuperList.new("Gender", {"M" => {:default => "Man", :amos => "M1"}, "F" => {:default => "Female", :amos => "M2"}}, :allow_blank => true)
|
5
|
+
SuperList.new("Gender2", {"M" => "Man", "F" => "Female"}, :allow_blank => true, :use_i18n => false)
|
5
6
|
|
6
7
|
## in app/models/user.rb
|
7
8
|
class User < ActiveRecord::Base
|
@@ -9,14 +10,15 @@
|
|
9
10
|
super_list :gender2, 'Gender', :use_i18n => true
|
10
11
|
end
|
11
12
|
|
12
|
-
User.new(:gender => 'NF').valid?
|
13
|
-
User.new(:gender => 'M').valid?
|
14
|
-
User.new(:gender => 'F').gender
|
15
|
-
User.new(:gender => 'F').
|
13
|
+
User.new(:gender => 'NF').valid? => false
|
14
|
+
User.new(:gender => 'M').valid? => true
|
15
|
+
User.new(:gender => 'F').gender.to_s => 'Female'
|
16
|
+
User.new(:gender => 'F').gender.to_s(:amos) => 'M2'
|
17
|
+
User.new(:gender => 'F').original_gender => 'F'
|
16
18
|
|
17
|
-
user = User.new(:gender => 'F', :gender2
|
18
|
-
user.gender2
|
19
|
-
user.gender2(:locale => "api")
|
19
|
+
user = User.new(:gender => 'F', :gender2 => 'M')
|
20
|
+
user.gender2.to_s => "translation missing: en.Gender.Man"
|
21
|
+
user.gender2(:locale => "api").to_s => "translation missing: api.Gender.Man"
|
20
22
|
|
21
23
|
SuperList["Gender"].options => {:use_i18n=>false, :i18n_scope=>"Gender", :allow_blank=>true}
|
22
24
|
SuperList["Gender"].keys => ["M", "F"]
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0
|
1
|
+
1.1.0
|
data/lib/super_list.rb
CHANGED
@@ -19,6 +19,20 @@ class SuperList
|
|
19
19
|
@@data[name]
|
20
20
|
end
|
21
21
|
|
22
|
+
class List
|
23
|
+
def initialize(data, options)
|
24
|
+
@data, @options = data, options
|
25
|
+
end
|
26
|
+
|
27
|
+
def to_s(type=:default, options={})
|
28
|
+
options = options.merge(@options)
|
29
|
+
key = @data[type] || @data[:default]
|
30
|
+
|
31
|
+
return I18n.t(key, :scope => options[:i18n_scope], :default => options[:i18n_default], :locale => options[:locale]) if options[:use_i18n]
|
32
|
+
key
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
22
36
|
## Data Store
|
23
37
|
class Data
|
24
38
|
def initialize(values, options)
|
@@ -29,16 +43,16 @@ class SuperList
|
|
29
43
|
@values.keys
|
30
44
|
end
|
31
45
|
|
32
|
-
def values(options={})
|
33
|
-
|
46
|
+
def values(type=:default, options={})
|
47
|
+
options, type = type, :default if type.is_a?(Hash)
|
48
|
+
keys.map {|x| get_value(x, options).to_s(type) }
|
34
49
|
end
|
35
50
|
|
36
51
|
def get_value(key,options={})
|
37
52
|
options = @options.merge(options)
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
key
|
53
|
+
value = @values[key]
|
54
|
+
value = value.is_a?(Hash) ? value : {:default => value}
|
55
|
+
List.new(value, options)
|
42
56
|
end
|
43
57
|
|
44
58
|
def get_key(value,options={})
|
@@ -1,2 +1,2 @@
|
|
1
|
-
SuperList.new("Gender", {"M" => "Man", "F" => "Female"}, :allow_blank => true)
|
1
|
+
SuperList.new("Gender", {"M" => {:default => "Man", :amos => "M1"}, "F" => {:default => "Female", :amos => "M2"}}, :allow_blank => true)
|
2
2
|
SuperList.new("Gender1", {"M" => "Man", "F" => "Female"}, :use_i18n => true, :allow_blank => true)
|
data/test/super_list_test.rb
CHANGED
@@ -7,7 +7,7 @@ class SuperListTest < ActiveSupport::TestCase
|
|
7
7
|
assert_equal SuperList["Gender1"].values(:locale => 'zh'),
|
8
8
|
["translation missing: zh.Gender1.Man", "translation missing: zh.Gender1.Female"]
|
9
9
|
|
10
|
-
assert_equal SuperList["Gender"].get_value("M"), "Man"
|
10
|
+
assert_equal SuperList["Gender"].get_value("M").to_s, "Man"
|
11
11
|
assert_equal SuperList["Gender"].get_key("Man"), "M"
|
12
12
|
assert_equal SuperList["Gender1"].get_key("translation missing: en.Gender1.Female"), "F"
|
13
13
|
end
|
@@ -27,17 +27,20 @@ class SuperListTest < ActiveSupport::TestCase
|
|
27
27
|
|
28
28
|
test "SuperList gender (don't use i18n)" do
|
29
29
|
u = Factory(:user, :gender => 'F')
|
30
|
-
assert_equal u.gender, 'Female'
|
30
|
+
assert_equal u.gender.to_s, 'Female'
|
31
|
+
assert_equal u.gender.to_s(:amos), 'M2'
|
31
32
|
end
|
32
33
|
|
33
34
|
test "SuperList gender (use i18n, no default translation)" do
|
34
35
|
u = Factory(:user, :gender1 => 'F')
|
35
|
-
assert_equal u.gender1, "translation missing: en.Gender.Female"
|
36
|
-
assert_equal u.gender1(:locale => 'new_locale'), "translation missing: new_locale.Gender.Female"
|
36
|
+
assert_equal u.gender1.to_s, "translation missing: en.Gender.Female"
|
37
|
+
assert_equal u.gender1(:locale => 'new_locale').to_s, "translation missing: new_locale.Gender.Female"
|
38
|
+
assert_equal u.gender1(:locale => 'new_locale').to_s(:amos), "translation missing: new_locale.Gender.M2"
|
37
39
|
end
|
38
40
|
|
39
41
|
test "SuperList gender (use i18n wtih default translation)" do
|
40
42
|
u = Factory(:user, :gender2 => 'F')
|
41
|
-
assert_equal u.gender2, "未知"
|
43
|
+
assert_equal u.gender2.to_s, "未知"
|
44
|
+
assert_equal u.gender2.to_s(:nokey), "未知"
|
42
45
|
end
|
43
46
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: super_list
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
- 0
|
9
8
|
- 1
|
10
|
-
|
9
|
+
- 0
|
10
|
+
version: 1.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jinzhu
|
@@ -15,10 +15,11 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-03-04 00:00:00 +08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
+
type: :development
|
22
23
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
23
24
|
none: false
|
24
25
|
requirements:
|
@@ -33,8 +34,8 @@ dependencies:
|
|
33
34
|
requirement: *id001
|
34
35
|
prerelease: false
|
35
36
|
name: bundler
|
36
|
-
type: :development
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
|
+
type: :development
|
38
39
|
version_requirements: &id002 !ruby/object:Gem::Requirement
|
39
40
|
none: false
|
40
41
|
requirements:
|
@@ -49,8 +50,8 @@ dependencies:
|
|
49
50
|
requirement: *id002
|
50
51
|
prerelease: false
|
51
52
|
name: jeweler
|
52
|
-
type: :development
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
|
+
type: :development
|
54
55
|
version_requirements: &id003 !ruby/object:Gem::Requirement
|
55
56
|
none: false
|
56
57
|
requirements:
|
@@ -63,8 +64,8 @@ dependencies:
|
|
63
64
|
requirement: *id003
|
64
65
|
prerelease: false
|
65
66
|
name: rcov
|
66
|
-
type: :development
|
67
67
|
- !ruby/object:Gem::Dependency
|
68
|
+
type: :development
|
68
69
|
version_requirements: &id004 !ruby/object:Gem::Requirement
|
69
70
|
none: false
|
70
71
|
requirements:
|
@@ -77,8 +78,8 @@ dependencies:
|
|
77
78
|
requirement: *id004
|
78
79
|
prerelease: false
|
79
80
|
name: sqlite3-ruby
|
80
|
-
type: :development
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
|
+
type: :development
|
82
83
|
version_requirements: &id005 !ruby/object:Gem::Requirement
|
83
84
|
none: false
|
84
85
|
requirements:
|
@@ -93,8 +94,8 @@ dependencies:
|
|
93
94
|
requirement: *id005
|
94
95
|
prerelease: false
|
95
96
|
name: rails
|
96
|
-
type: :development
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
+
type: :development
|
98
99
|
version_requirements: &id006 !ruby/object:Gem::Requirement
|
99
100
|
none: false
|
100
101
|
requirements:
|
@@ -109,8 +110,8 @@ dependencies:
|
|
109
110
|
requirement: *id006
|
110
111
|
prerelease: false
|
111
112
|
name: capybara
|
112
|
-
type: :development
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
|
+
type: :development
|
114
115
|
version_requirements: &id007 !ruby/object:Gem::Requirement
|
115
116
|
none: false
|
116
117
|
requirements:
|
@@ -123,7 +124,6 @@ dependencies:
|
|
123
124
|
requirement: *id007
|
124
125
|
prerelease: false
|
125
126
|
name: factory_girl
|
126
|
-
type: :development
|
127
127
|
description: super list
|
128
128
|
email: wosmvp@gmail.com
|
129
129
|
executables: []
|
@@ -214,7 +214,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
214
214
|
requirements: []
|
215
215
|
|
216
216
|
rubyforge_project:
|
217
|
-
rubygems_version: 1.4.
|
217
|
+
rubygems_version: 1.4.2
|
218
218
|
signing_key:
|
219
219
|
specification_version: 3
|
220
220
|
summary: super list
|