inum 1.0.0 → 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.
- checksums.yaml +4 -4
- data/README.md +12 -1
- data/lib/inum/base.rb +25 -3
- data/lib/inum/version.rb +1 -1
- data/spec/inum/base_spec.rb +26 -0
- 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: 13fa0a53e7d738142a3ada77e6ae500e1be64b74
|
|
4
|
+
data.tar.gz: 0f69ba1695638ee4b501353e98da80bc8f48842c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b4c68d473c6edee840eb3e49e55e78c1e3cd8477f44fb8afec1afee047b4bf4c59cb881c834875701065cd04cdbecb4f29d7bb042a7f35fcdc383fc6904b4e92
|
|
7
|
+
data.tar.gz: 18298d6d00e8b4c06312dbc8c33e9eab8081c7c2b1a028f8babddbea6ad170892a1c3abc2ebc3dfc17210f740738fc840f806b5a4b542df032837a3dc2580857
|
data/README.md
CHANGED
|
@@ -30,6 +30,12 @@ class AnimeType < Inum::Base
|
|
|
30
30
|
end
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
+
If value(integer) is omitted, value(integer) is auto-incremented.
|
|
34
|
+
|
|
35
|
+
``` ruby
|
|
36
|
+
define_enum :EVANGELION # => value will auto-increment.
|
|
37
|
+
```
|
|
38
|
+
|
|
33
39
|
### Use Enum(Inum)
|
|
34
40
|
How to use Enum(Inum).
|
|
35
41
|
|
|
@@ -37,11 +43,16 @@ How to use Enum(Inum).
|
|
|
37
43
|
p AnimeType::EVANGELION # => EVANGELION
|
|
38
44
|
p AnimeType::EVANGELION.to_i # => 0
|
|
39
45
|
|
|
40
|
-
|
|
46
|
+
# parse object to instance of AnimeType.
|
|
47
|
+
# object can use class of Symbol or String or Integer or Self.
|
|
48
|
+
type = AnimeType::parse(0)
|
|
41
49
|
p type.equal?(AnimeType::EVANGELION) # => true (member of Enum is singleton.)
|
|
42
50
|
|
|
43
51
|
p AnimeType::HARUHI.eql?('HARUHI') # => true (eql? can compare all parsable object.)
|
|
44
52
|
|
|
53
|
+
p AnimeType::HARUHI + 1 # => NYARUKO
|
|
54
|
+
p AnimeType::NYARUKO - 1 # => HARUHI
|
|
55
|
+
|
|
45
56
|
```
|
|
46
57
|
|
|
47
58
|
- more detail is [Class::Base](http://rubydoc.info/github/alfa-jpn/inum/Inum/Base)
|
data/lib/inum/base.rb
CHANGED
|
@@ -23,6 +23,22 @@ module Inum
|
|
|
23
23
|
end
|
|
24
24
|
@value = value
|
|
25
25
|
end
|
|
26
|
+
|
|
27
|
+
# plus object.
|
|
28
|
+
#
|
|
29
|
+
# @param value [Integer] plus value.(call to_i in this method.)
|
|
30
|
+
# @return [Inum::Base] object after plus value.
|
|
31
|
+
def + (value)
|
|
32
|
+
self.class.parse(@value + value.to_i)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# minus object.
|
|
36
|
+
#
|
|
37
|
+
# @param value [Integer] plus value.(call to_i in this method.)
|
|
38
|
+
# @return [Inum::Base] object after plus value.
|
|
39
|
+
def - (value)
|
|
40
|
+
self.class.parse(@value - value.to_i)
|
|
41
|
+
end
|
|
26
42
|
|
|
27
43
|
# Compare object.
|
|
28
44
|
#
|
|
@@ -46,6 +62,13 @@ module Inum
|
|
|
46
62
|
self.class.defined_enums.key(@value).to_s
|
|
47
63
|
end
|
|
48
64
|
|
|
65
|
+
# get Enum length.
|
|
66
|
+
#
|
|
67
|
+
# @return [Integer] count of Enums.
|
|
68
|
+
def self.length
|
|
69
|
+
defined_enums.length
|
|
70
|
+
end
|
|
71
|
+
|
|
49
72
|
# return array of Enums.
|
|
50
73
|
#
|
|
51
74
|
# @return [Array<Array<String, Integer>>] sorted array of Enums.
|
|
@@ -83,9 +106,8 @@ module Inum
|
|
|
83
106
|
# Define Enum in called class.
|
|
84
107
|
#
|
|
85
108
|
# @param name [String, Symbol] name of Enum.
|
|
86
|
-
# @param value [Integer,Fixnum] value of Enum.
|
|
87
|
-
def self.define_enum(name, value)
|
|
88
|
-
|
|
109
|
+
# @param value [Integer,Fixnum] value of Enum.(default:autoincrement for 0.)
|
|
110
|
+
def self.define_enum(name, value = defined_enums.size)
|
|
89
111
|
validate_enum_args!(name, value)
|
|
90
112
|
|
|
91
113
|
defined_enums[name] = value
|
data/lib/inum/version.rb
CHANGED
data/spec/inum/base_spec.rb
CHANGED
|
@@ -42,6 +42,18 @@ describe Inum::Base do
|
|
|
42
42
|
}.to raise_error
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
+
it 'define_method called without value, value is autoincrement.' do
|
|
46
|
+
enum = Class.new(Inum::Base) do
|
|
47
|
+
define_enum :REDBULL
|
|
48
|
+
define_enum :MONSTER
|
|
49
|
+
define_enum :BURN
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
expect(enum::REDBULL.to_i).to eq(0)
|
|
53
|
+
expect(enum::MONSTER.to_i).to eq(1)
|
|
54
|
+
expect(enum::BURN.to_i).to eq(2)
|
|
55
|
+
end
|
|
56
|
+
|
|
45
57
|
context 'define class of extended Inum::Base,' do
|
|
46
58
|
before(:each) do
|
|
47
59
|
@enum = Class.new(Inum::Base) do
|
|
@@ -66,6 +78,16 @@ describe Inum::Base do
|
|
|
66
78
|
expect( @enum::BURN.equal?(@enum::BURN )).to be_true
|
|
67
79
|
end
|
|
68
80
|
|
|
81
|
+
it '+ return a correct Inum.' do
|
|
82
|
+
expect(@enum::REDBULL + 1).to eq(@enum::MONSTER)
|
|
83
|
+
expect(@enum::REDBULL + @enum::MONSTER).to eq(@enum::MONSTER)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it '- return a correct Inum.' do
|
|
87
|
+
expect(@enum::BURN - 1).to eq(@enum::MONSTER)
|
|
88
|
+
expect(@enum::BURN - @enum::MONSTER).to eq(@enum::MONSTER)
|
|
89
|
+
end
|
|
90
|
+
|
|
69
91
|
it 'eql? return a correct result.' do
|
|
70
92
|
expect( @enum::REDBULL.eql?(0) ).to be_true
|
|
71
93
|
expect( @enum::REDBULL.eql?(1) ).to be_false
|
|
@@ -79,6 +101,10 @@ describe Inum::Base do
|
|
|
79
101
|
expect( @enum::MONSTER.to_s ).to eq('MONSTER')
|
|
80
102
|
end
|
|
81
103
|
|
|
104
|
+
it 'length return count of enum.' do
|
|
105
|
+
expect(@enum::length).to eq(3)
|
|
106
|
+
end
|
|
107
|
+
|
|
82
108
|
it 'to_a return Array' do
|
|
83
109
|
expect(@enum::to_a.instance_of?(Array)).to be_true
|
|
84
110
|
expect(@enum::to_a.length).to eq(3)
|
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.
|
|
4
|
+
version: 1.1.0
|
|
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-
|
|
11
|
+
date: 2013-11-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|