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.
@@ -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"}, :allow_blank => true, :use_i18n => false)
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? => false
13
- User.new(:gender => 'M').valid? => true
14
- User.new(:gender => 'F').gender => 'Female'
15
- User.new(:gender => 'F').original_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 => 'M')
18
- user.gender2 => "translation missing: en.Gender.Man"
19
- user.gender2(:locale => "api") => "translation missing: api.Gender.Man"
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.1.0
@@ -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
- keys.map {|x| get_value(x, options) }
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
- key = @values[key]
39
-
40
- return I18n.t(key, :scope => options[:i18n_scope], :default => options[:i18n_default], :locale => options[:locale]) if options[:use_i18n]
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)
@@ -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: 21
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 0
9
8
  - 1
10
- version: 1.0.1
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-02-28 00:00:00 +08:00
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.1
217
+ rubygems_version: 1.4.2
218
218
  signing_key:
219
219
  specification_version: 3
220
220
  summary: super list