class-enum 0.0.1 → 0.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 +4 -2
- data/lib/class/enum.rb +34 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cdb8fd745483798f66562f2d2931a26624b735b1
|
4
|
+
data.tar.gz: 13bd9e407a28f0392f1a4ab2972418647d01c42c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de608713ec947456f98518daf7b26733d7b5bc77740454444badc7b30105ad56de3ae1e4013308f4758a2493f678bbe7a43b82094905f13c40e64a753790f3ef
|
7
|
+
data.tar.gz: 7b787b6bc3b6622baed7de810f7b9507f624a300772af7bbe171bb262a5b5f3bc20d6c133a40957fd410cca25995dc62e28235f3943f34a04c4fd6b2f0b1f6c4
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# Class::Enum
|
2
2
|
|
3
|
-
|
3
|
+
[](https://badge.fury.io/rb/class-enum)
|
4
|
+
|
5
|
+
'Classial' class enum for Ruby
|
4
6
|
|
5
7
|
```ruby
|
6
8
|
class Animal
|
@@ -32,7 +34,7 @@ Animal::CAT.class # => Animal
|
|
32
34
|
```
|
33
35
|
|
34
36
|
## Requirements
|
35
|
-
- No
|
37
|
+
- No
|
36
38
|
|
37
39
|
## Usage
|
38
40
|
See [documentation](http://www.rubydoc.info/gems/class-enum)
|
data/lib/class/enum.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
class Class
|
2
|
-
# Utility for defining
|
2
|
+
# Utility for defining 'classial' enum type
|
3
3
|
module Enum
|
4
|
-
VERSION = '0.0.
|
4
|
+
VERSION = '0.0.2'.freeze
|
5
5
|
|
6
6
|
def self.included(base)
|
7
7
|
base.send :extend, ClassMethods
|
@@ -98,6 +98,38 @@ class Class
|
|
98
98
|
def to_h
|
99
99
|
@enum_fields.dup
|
100
100
|
end
|
101
|
+
|
102
|
+
# @overload fetch(name)
|
103
|
+
# Returns a enum field for the given name.
|
104
|
+
# If the name can't be found, it will raise an {KeyError} exception
|
105
|
+
# @param [#to_sym] name
|
106
|
+
# @raise [KeyError] If the name can't be found
|
107
|
+
# @overload fetch(name, default)
|
108
|
+
# Returns a enum field for the given name.
|
109
|
+
# If the name can't be found, the given *default* will be returned
|
110
|
+
# @param [#to_sym] name
|
111
|
+
# @param default
|
112
|
+
def fetch(*args)
|
113
|
+
case args.length
|
114
|
+
when 1
|
115
|
+
name = args[0]
|
116
|
+
if key?(name)
|
117
|
+
value(name)
|
118
|
+
else
|
119
|
+
raise KeyError, "key not found: #{name.inspect}"
|
120
|
+
end
|
121
|
+
when 2
|
122
|
+
name = args[0]
|
123
|
+
default = args[1]
|
124
|
+
if key?(name)
|
125
|
+
value(name)
|
126
|
+
else
|
127
|
+
default
|
128
|
+
end
|
129
|
+
else
|
130
|
+
raise ArgumentError, "Invalid arguments length"
|
131
|
+
end
|
132
|
+
end
|
101
133
|
end
|
102
134
|
end
|
103
135
|
end
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: class-enum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sputnik Gugja
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-04 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description:
|
13
|
+
description: "'classial' enum for Ruby"
|
14
14
|
email:
|
15
15
|
- sputnikgugja@gmail.com
|
16
16
|
executables: []
|
@@ -42,6 +42,6 @@ rubyforge_project:
|
|
42
42
|
rubygems_version: 2.6.3
|
43
43
|
signing_key:
|
44
44
|
specification_version: 4
|
45
|
-
summary:
|
45
|
+
summary: "'classial' enum for Ruby"
|
46
46
|
test_files: []
|
47
47
|
has_rdoc:
|