inum 1.3.0 → 1.3.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0a45543edcaeff37b2532ff978a90bd3eb773bc2
4
- data.tar.gz: 357be60fffc7baec45c791aebd39c9da9990a2cb
3
+ metadata.gz: d3475adce821be0a84959f8a664c1a430ffa070a
4
+ data.tar.gz: 968e8893be8c4ad5253501e2579361a748e7f7db
5
5
  SHA512:
6
- metadata.gz: 82e42a428ed15ef2f98b434c72fcaf56fe6a5431d23faa81e0f16632e39792ae26e029ce3d67ec9f381624b887f56f44f3067d5d39ceec6f915d3c6ef7721c58
7
- data.tar.gz: 7e7301e5e39d9032efe85e7fd49e817d10ccea32ae2b8ff890aa366c8502ec809c36bf481c8fa81b2159fdc5e56bf3a59ea5a8abc94b6d2b568e6eba51742515
6
+ metadata.gz: 0c297c68abe3578abac17207713cb412c4a13d24b6e8779e77f0da20562e6284b7e0c8c0fc73a562d9b74db1e22b90edf2202496dba133daae1aaea8fdf05a44
7
+ data.tar.gz: 013f475f2cf4a22fc645370fad72ec2bd37dc791864a504458371bba44acc8cbe019a5862792286ee766ae984c8b914716ac0ed89c6b867b9ab163c490dde0d9
data/README.md CHANGED
@@ -59,6 +59,7 @@ p AnimeType::NYARUKO - 1 # => HARUHI
59
59
  AnimeType::each {|enum| p enum }
60
60
 
61
61
  ```
62
+
62
63
  can use Enumerable and Comparable.
63
64
 
64
65
  - more detail is [Class::Base](http://rubydoc.info/github/alfa-jpn/inum/Inum/Base)
@@ -97,6 +98,7 @@ p anime.haruhi? # => true
97
98
  to_t methods localize enum by i18n.
98
99
  default i18n key is name_space.class_name.enum_member_label.
99
100
  If change default, Override i18n_key class method.
101
+
100
102
  ``` ruby
101
103
  # default i18n_key.
102
104
  def self.i18n_key(label)
data/lib/inum/base.rb CHANGED
@@ -8,7 +8,7 @@ module Inum
8
8
  # @example
9
9
  # class FruitType < Inum::Base
10
10
  # define_enum :APPLE, 0
11
- # define_enum :BANANA, 1
11
+ # define_enum :BANANA, 1
12
12
  # define_enum :ORANGE, 2
13
13
  # end
14
14
  class Base
@@ -26,7 +26,8 @@ module Inum
26
26
  @label = label
27
27
  @value = value
28
28
 
29
- @localized_enum = I18n.t(self.class.i18n_key(label))
29
+ @localized_enum = I18n.t(self.class.i18n_key(label))
30
+ @underscore_label = Inum::Utils::underscore(label)
30
31
  end
31
32
 
32
33
  # Compare object.
@@ -44,7 +45,7 @@ module Inum
44
45
  def + (value)
45
46
  self.class.parse(@value + value.to_i)
46
47
  end
47
-
48
+
48
49
  # minus object.
49
50
  #
50
51
  # @param value [Integer] plus value.(call to_i in this method.)
@@ -60,9 +61,9 @@ module Inum
60
61
  def eql?(object)
61
62
  self.equal?(self.class.parse(object))
62
63
  end
63
-
64
+
64
65
  # Enum to Integer.
65
- #
66
+ #
66
67
  # @return [Integer] integer value of Enum.
67
68
  def to_i
68
69
  @value
@@ -83,6 +84,13 @@ module Inum
83
84
  @localized_enum
84
85
  end
85
86
 
87
+ # Enum label to underscore string.
88
+ #
89
+ # @return [String] under_score string value(label) of Enum.
90
+ def to_u
91
+ @underscore_label
92
+ end
93
+
86
94
  # Execute the yield(block) with each member of enum.
87
95
  #
88
96
  # @yield [enum] instance of enum.
@@ -96,28 +104,28 @@ module Inum
96
104
  def self.labels
97
105
  defined_enums.keys
98
106
  end
99
-
107
+
100
108
  # get Enum length.
101
109
  #
102
110
  # @return [Integer] count of Enums.
103
111
  def self.length
104
112
  defined_enums.length
105
113
  end
106
-
114
+
107
115
  # return array of Enums.
108
116
  #
109
117
  # @return [Array<Array<Symbol, Integer>>] sorted array of Enums.
110
118
  def self.to_a
111
119
  defined_enums.flatten(0).sort{|a,b| a[1] <=> b[1] }
112
120
  end
113
-
121
+
114
122
  # return hash of Enums.
115
123
  #
116
124
  # @return [Hash<Symbol, Integer>] hash of Enums.
117
125
  def self.to_h
118
126
  defined_enums.dup
119
127
  end
120
-
128
+
121
129
  # Parse Object to Enum.
122
130
  #
123
131
  # @param object [Object] string or symbol or integer or Inum::Base.
@@ -136,7 +144,7 @@ module Inum
136
144
  raise ArgumentError, "#{object} is nani?"
137
145
  end
138
146
  end
139
-
147
+
140
148
  # get all values of Enum.
141
149
  #
142
150
  # @return [Array<Integer>] all values of Enum.
@@ -151,13 +159,13 @@ module Inum
151
159
  # @param value [Integer] value of Enum.(default:autoincrement for 0.)
152
160
  def self.define_enum(label, value = defined_enums.size)
153
161
  value = value.to_i
154
-
162
+
155
163
  validate_enum_args!(label, value)
156
164
 
157
165
  defined_enums[label] = value
158
166
  self.const_set(label, new(label, value))
159
167
  end
160
-
168
+
161
169
  # get hash of :DEFINED_ENUMS.
162
170
  def self.defined_enums
163
171
  self.const_get(:DEFINED_ENUMS)
@@ -178,16 +186,16 @@ module Inum
178
186
  def self.inherited(child)
179
187
  child.const_set(:DEFINED_ENUMS, Hash.new)
180
188
  end
181
-
189
+
182
190
  # Validate enum args, and raise exception.
183
- #
191
+ #
184
192
  # @param label [Object] label of Enum.
185
193
  # @param value [Integer] value of Enum.
186
194
  def self.validate_enum_args!(label, value)
187
195
  unless label.instance_of?(Symbol)
188
196
  raise ArgumentError, "The label(#{label}!) isn't instance of Symbol."
189
197
  end
190
-
198
+
191
199
  if label == :DEFINED_ENUMS
192
200
  raise ArgumentError, "The label(#{label}!) is keyword."
193
201
  end
@@ -195,7 +203,7 @@ module Inum
195
203
  if defined_enums.has_key?(label)
196
204
  raise ArgumentError, "The label(#{label}!) already exists!!"
197
205
  end
198
-
206
+
199
207
  if defined_enums.has_value?(value)
200
208
  raise ArgumentError, "The value(#{value}!) already exists!!"
201
209
  end
@@ -5,13 +5,13 @@ module Inum
5
5
  # class Fruit
6
6
  # extend Inum::DefineCheckMethod
7
7
  # define_check_method :type, FruitType
8
- #
8
+ #
9
9
  # attr_accessor :type
10
10
  # end
11
11
  #
12
12
  module DefineCheckMethod
13
13
  require 'inum/utils'
14
-
14
+
15
15
  # Define compare method in class.
16
16
  #
17
17
  # @param variable_name [String] name of variable.
data/lib/inum/utils.rb CHANGED
@@ -1,23 +1,23 @@
1
1
  module Inum
2
2
  # Utils of Inum.
3
3
  class Utils
4
-
4
+
5
5
  # convert a camel cased word to a underscore word.
6
6
  #
7
- # @param camel_cased_word [String] camel cased word.
8
- # @return [String, Symbol] underscore word.
7
+ # @param camel_cased_word [String, Symbol] camel cased word.
8
+ # @return [String] underscore word.
9
9
  def self.underscore(camel_cased_word)
10
10
  word = camel_cased_word.to_s.dup
11
-
11
+
12
12
  word.gsub!('::', '.')
13
13
  word.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
14
14
  word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
15
15
  word.tr!('-', '_')
16
-
16
+
17
17
  word.downcase!
18
-
18
+
19
19
  word
20
20
  end
21
-
21
+
22
22
  end
23
23
  end
data/lib/inum/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Inum
2
- VERSION = "1.3.0"
2
+ VERSION = "1.3.5"
3
3
  end
@@ -6,37 +6,37 @@ describe Inum::Base do
6
6
  it 'define_enum validate correct' do
7
7
  # correct.
8
8
  expect{
9
- Class.new(Inum::Base) { define_enum :REDBULL, 0 }
9
+ Class.new(Inum::Base) { define_enum :REDBULL, 0 }
10
10
  Class.new(Inum::Base) { define_enum :REDBULL, 0.to_i }
11
- Class.new(Inum::Base) {
12
- define_enum :REDBULL, 0
13
- define_enum :MONSTER, 1
11
+ Class.new(Inum::Base) {
12
+ define_enum :REDBULL, 0
13
+ define_enum :MONSTER, 1
14
14
  }
15
15
  }.not_to raise_error
16
-
16
+
17
17
  # wrong name.
18
18
  expect{
19
- Class.new(Inum::Base) { define_enum 1111, 0 }
19
+ Class.new(Inum::Base) { define_enum 1111, 0 }
20
20
  }.to raise_error
21
-
21
+
22
22
  # wrong value.
23
23
  expect{
24
- Class.new(Inum::Base) { define_enum :REDBULL, :no_int }
24
+ Class.new(Inum::Base) { define_enum :REDBULL, :no_int }
25
25
  }.to raise_error
26
-
26
+
27
27
  # dup name.
28
28
  expect{
29
- Class.new(Inum::Base) {
30
- define_enum :REDBULL, 0
31
- define_enum :REDBULL, 1
29
+ Class.new(Inum::Base) {
30
+ define_enum :REDBULL, 0
31
+ define_enum :REDBULL, 1
32
32
  }
33
33
  }.to raise_error
34
-
34
+
35
35
  # dup value.
36
36
  expect{
37
- Class.new(Inum::Base) {
38
- define_enum :REDBULL, 0
39
- define_enum :REDBULL2, 0
37
+ Class.new(Inum::Base) {
38
+ define_enum :REDBULL, 0
39
+ define_enum :REDBULL2, 0
40
40
  }
41
41
  }.to raise_error
42
42
  end
@@ -47,7 +47,7 @@ describe Inum::Base do
47
47
  define_enum :MONSTER
48
48
  define_enum :BURN
49
49
  end
50
-
50
+
51
51
  expect(enum::REDBULL.to_i).to eq(0)
52
52
  expect(enum::MONSTER.to_i).to eq(1)
53
53
  expect(enum::BURN.to_i).to eq(2)
@@ -123,6 +123,10 @@ describe Inum::Base do
123
123
  expect( @enum::REDBULL.to_t ).to eq('Good drink!')
124
124
  end
125
125
 
126
+ it 'to_u return underscore string.' do
127
+ expect( @enum::REDBULL.to_u ).to eq('redbull')
128
+ end
129
+
126
130
  it 'each can execute block with enum' do
127
131
  count = 0
128
132
  expect{
@@ -139,26 +143,26 @@ describe Inum::Base do
139
143
  end
140
144
 
141
145
  it 'labels return Array<Symbol>.' do
142
- expect(@enum::labels.length).to eq(3)
146
+ expect(@enum::labels.length).to eq(3)
143
147
  expect(@enum::labels.instance_of?(Array)).to be_true
144
- expect(@enum::labels[0].instance_of?(Symbol)).to be_true
148
+ expect(@enum::labels[0].instance_of?(Symbol)).to be_true
145
149
  end
146
-
150
+
147
151
  it 'length return count of enum.' do
148
152
  expect(@enum::length).to eq(3)
149
153
  end
150
-
154
+
151
155
  it 'to_a return Array<Array<Symbol,Integer>>.' do
152
156
  expect(@enum::to_a.length).to eq(3)
153
157
  expect(@enum::to_a.instance_of?(Array)).to be_true
154
158
  expect(@enum::to_a[0].instance_of?(Array)).to be_true
155
159
  expect(@enum::to_a[0][0].instance_of?(Symbol)).to be_true
156
160
  expect(@enum::to_a[0][1].integer?).to be_true
157
-
161
+
158
162
  expect(@enum::to_a[0][0]).to eq(:REDBULL)
159
163
  (0..2).each{|i| expect(@enum::to_a[i][1]).to eq(i) }
160
164
  end
161
-
165
+
162
166
  it 'to_h return Hash' do
163
167
  expect(@enum::to_h.instance_of?(Hash)).to be_true
164
168
  expect(@enum::to_h.eql?(@enum::DEFINED_ENUMS)).to be_true
@@ -180,11 +184,11 @@ describe Inum::Base do
180
184
  it 'parse return instance from self instance.' do
181
185
  expect( @enum::parse(@enum::REDBULL) ).to eq( @enum::REDBULL )
182
186
  end
183
-
187
+
184
188
  it 'values return Array<Integer>.' do
185
- expect(@enum::values.length).to eq(3)
189
+ expect(@enum::values.length).to eq(3)
186
190
  expect(@enum::values.instance_of?(Array)).to be_true
187
- expect(@enum::values[0].integer?).to be_true
191
+ expect(@enum::values[0].integer?).to be_true
188
192
  end
189
193
  end
190
194
  end
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
 
4
4
  describe Inum::DefineCheckMethod do
5
5
 
6
- context 'create class of called define_check_method,' do
6
+ context 'create class of called define_check_method' do
7
7
  before(:each) do
8
8
  enum = @enum = Class.new(Inum::Base) do
9
9
  define_enum :REDBULL, 0
@@ -7,7 +7,7 @@ describe Inum::Utils do
7
7
  expect(Inum::Utils::underscore('camelcase')).to eq('camelcase')
8
8
  expect(Inum::Utils::underscore('CamelCase')).to eq('camel_case')
9
9
  expect(Inum::Utils::underscore('CamelCaseWord')).to eq('camel_case_word')
10
-
10
+
11
11
  expect(Inum::Utils::underscore('Came1Case')).to eq('came1_case')
12
12
 
13
13
  expect(Inum::Utils::underscore('UNDER_SCORE')).to eq('under_score')
@@ -16,7 +16,7 @@ describe Inum::Utils do
16
16
  expect(Inum::Utils::underscore('name::space')).to eq('name.space')
17
17
  expect(Inum::Utils::underscore('Name::Space')).to eq('name.space')
18
18
  end
19
-
19
+
20
20
  it 'underscore can convert Symbol to underscore_word.' do
21
21
  expect(Inum::Utils::underscore(:CamelCase)).to eq('camel_case')
22
22
  end
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: 1.3.0
4
+ version: 1.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - alfa-jpn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-28 00:00:00.000000000 Z
11
+ date: 2013-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler