class-enum 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Gem Version](https://badge.fury.io/rb/class-enum.svg)](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:
|