inum 4.0.1 → 4.0.2
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.
- checksums.yaml +4 -4
- data/README.md +21 -3
- data/lib/inum/active_record_mixin.rb +0 -4
- data/lib/inum/base.rb +20 -4
- data/lib/inum/version.rb +1 -1
- data/spec/inum/base_spec.rb +33 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dac28fd8851f430ad59c8b5e3ed56eae764d6bc0
|
4
|
+
data.tar.gz: 7d268a99e422a2462b97eb9d7cd40bebbd53de9a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c89392877b24e55fcd2b570a2f30388edc691d94eb81ce0113f572953b80b0bff8e93911441c29ef5f9d17f0d575f25e237dcbfa2f02197f5de225882c5ac91c
|
7
|
+
data.tar.gz: 0a9e2560a3af73975fb7b462d108db424687c7608f98e8a3c0e44d15779b201cd42fa33e589a9211ece1bc340b1a410a70a42c79ab9d04779c126c7b4fb8ca46
|
data/README.md
CHANGED
@@ -51,6 +51,21 @@ p AnimeTypes::HARUHI.eql?('HARUHI') # => true (This method can compare all par
|
|
51
51
|
|
52
52
|
# each method.
|
53
53
|
AnimeTypes.each {|enum| p enum}
|
54
|
+
|
55
|
+
# Get length
|
56
|
+
AnimeTypes.length # => 3
|
57
|
+
|
58
|
+
# Get labels and values
|
59
|
+
AnimeTypes.labels # => [:EVANGELION, :HARUHI, :NYARUKO]
|
60
|
+
AnimeTypes.values # => [0, 1, 2]
|
61
|
+
|
62
|
+
# Get collection array.
|
63
|
+
AnimeTypes.collection # => [["EVANGELION", 0], ["HARUHI", 1], ....]
|
64
|
+
|
65
|
+
# collection usually use with some rails view helpers.
|
66
|
+
# f.select :name, Enum.collection
|
67
|
+
# f.select :name, Enum.collection(except:[:EVANGELION])
|
68
|
+
# f.select :name, Enum.collection(only:[:EVANGELION])
|
54
69
|
```
|
55
70
|
|
56
71
|
can use Enumerable and Comparable.
|
@@ -75,6 +90,7 @@ p fav.anime.t # => '這いよれ!ニャル子さん' t is aliased translate.
|
|
75
90
|
|
76
91
|
# #setter can set parsable object.
|
77
92
|
anime.type = 1
|
93
|
+
anime.type = '1'
|
78
94
|
anime.type = 'NYARUKO'
|
79
95
|
|
80
96
|
# check methods.
|
@@ -93,11 +109,13 @@ ja:
|
|
93
109
|
nyaruko: '這いよれ!ニャル子さん'
|
94
110
|
```
|
95
111
|
|
96
|
-
If change
|
112
|
+
If you want to change key of i18n, Override i18n_key class method.
|
97
113
|
|
98
114
|
``` ruby
|
99
|
-
|
100
|
-
|
115
|
+
class AnimeTypes < Inum::Base
|
116
|
+
def self.i18n_key(underscore_class_path, underscore_label)
|
117
|
+
"inums.#{underscore_class_path}.#{label}"
|
118
|
+
end
|
101
119
|
end
|
102
120
|
```
|
103
121
|
|
data/lib/inum/base.rb
CHANGED
@@ -24,7 +24,9 @@ module Inum
|
|
24
24
|
@label = label
|
25
25
|
@label_string = label.to_s
|
26
26
|
@value = value
|
27
|
-
|
27
|
+
|
28
|
+
@underscore_class_path = self.class.name ? ActiveSupport::Inflector.underscore(self.class.name).gsub('/', '.') : ''
|
29
|
+
@underscore_label = ActiveSupport::Inflector.underscore(label).gsub('/', '.')
|
28
30
|
end
|
29
31
|
|
30
32
|
# Compare object.
|
@@ -82,7 +84,7 @@ module Inum
|
|
82
84
|
#
|
83
85
|
# @return [String] localized string of Enum.
|
84
86
|
def translate
|
85
|
-
I18n.t(@
|
87
|
+
I18n.t(self.class.i18n_key(@underscore_class_path, @underscore_label))
|
86
88
|
end
|
87
89
|
alias_method :t, :translate
|
88
90
|
|
@@ -121,6 +123,16 @@ module Inum
|
|
121
123
|
@enums.each(&block)
|
122
124
|
end
|
123
125
|
|
126
|
+
# Override the rule of i18n keys.
|
127
|
+
# @abstract if change the rule of i18n keys.
|
128
|
+
#
|
129
|
+
# @param underscore_class_path [String] underscore class name.
|
130
|
+
# @param underscore_label [String] underscore label.
|
131
|
+
# @return [String] i18n key.
|
132
|
+
def self.i18n_key(underscore_class_path, underscore_label)
|
133
|
+
"#{underscore_class_path}.#{underscore_label}"
|
134
|
+
end
|
135
|
+
|
124
136
|
# get all labels of Enum.
|
125
137
|
#
|
126
138
|
# @return [Array<Symbol>] all labels of Enum.
|
@@ -142,8 +154,12 @@ module Inum
|
|
142
154
|
def self.parse(object)
|
143
155
|
case object
|
144
156
|
when String
|
145
|
-
|
146
|
-
|
157
|
+
if /^\d+$/.match(object)
|
158
|
+
parse(object.to_i)
|
159
|
+
else
|
160
|
+
upcase = object.upcase
|
161
|
+
find {|e| e.to_s == upcase}
|
162
|
+
end
|
147
163
|
when Symbol
|
148
164
|
upcase = object.upcase
|
149
165
|
find {|e| e.label == upcase}
|
data/lib/inum/version.rb
CHANGED
data/spec/inum/base_spec.rb
CHANGED
@@ -77,7 +77,7 @@ describe Inum::Base do
|
|
77
77
|
end
|
78
78
|
|
79
79
|
describe 'Defined enum class' do
|
80
|
-
before :
|
80
|
+
before :each do
|
81
81
|
class Anime < Inum::Base
|
82
82
|
define :NYARUKO, 0
|
83
83
|
define :MUROMISAN, 1
|
@@ -86,7 +86,7 @@ describe Inum::Base do
|
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
89
|
-
after :
|
89
|
+
after :each do
|
90
90
|
Object.class_eval{ remove_const :Anime }
|
91
91
|
end
|
92
92
|
|
@@ -138,9 +138,27 @@ describe Inum::Base do
|
|
138
138
|
|
139
139
|
describe '#t' do
|
140
140
|
subject do
|
141
|
-
expect(I18n).to receive(:t).with(
|
141
|
+
expect(I18n).to receive(:t).with(key).once { 'ok' }
|
142
142
|
expect(Anime::KMB.t).to eq('ok')
|
143
143
|
end
|
144
|
+
|
145
|
+
let(:key) { 'anime.kmb' }
|
146
|
+
|
147
|
+
it 'behaviour is right.' do
|
148
|
+
subject
|
149
|
+
end
|
150
|
+
|
151
|
+
context 'override .i18n_key' do
|
152
|
+
before :each do
|
153
|
+
Anime.define_singleton_method(:i18n_key) {|path, label| "inum.#{path}.#{label}" }
|
154
|
+
end
|
155
|
+
|
156
|
+
let(:key) { 'inum.anime.kmb' }
|
157
|
+
|
158
|
+
it 'Use overridden key.' do
|
159
|
+
subject
|
160
|
+
end
|
161
|
+
end
|
144
162
|
end
|
145
163
|
|
146
164
|
describe '#to_i' do
|
@@ -157,9 +175,13 @@ describe Inum::Base do
|
|
157
175
|
|
158
176
|
describe '#translate' do
|
159
177
|
subject do
|
160
|
-
expect(I18n).to receive(:t).with('
|
178
|
+
expect(I18n).to receive(:t).with('anime.kmb') { 'ok' }
|
161
179
|
expect(Anime::KMB.translate).to eq('ok')
|
162
180
|
end
|
181
|
+
|
182
|
+
it 'behaviour is right.' do
|
183
|
+
subject
|
184
|
+
end
|
163
185
|
end
|
164
186
|
|
165
187
|
describe '#value' do
|
@@ -264,6 +286,13 @@ describe Inum::Base do
|
|
264
286
|
end
|
265
287
|
end
|
266
288
|
|
289
|
+
context 'source is integer of string' do
|
290
|
+
let(:source) { '3' }
|
291
|
+
it 'success.' do
|
292
|
+
subject
|
293
|
+
end
|
294
|
+
end
|
295
|
+
|
267
296
|
context 'source is enum' do
|
268
297
|
let(:source) { Anime::KMB }
|
269
298
|
it 'success.' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- alfa-jpn
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|