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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -2
  3. data/lib/class/enum.rb +34 -2
  4. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e435a5446138814a1233b79b3ab4274983358e5e
4
- data.tar.gz: e06a6fa83ce1c54f5f8cd42ae0ad9f8e679fc3b5
3
+ metadata.gz: cdb8fd745483798f66562f2d2931a26624b735b1
4
+ data.tar.gz: 13bd9e407a28f0392f1a4ab2972418647d01c42c
5
5
  SHA512:
6
- metadata.gz: 07890f28d6bcc883775e66d801ca54f8ceb7a5526e79fabee7a6a58f3405487e9b35def7f5e1a3422ddef8401d69b7b312e9b6f30dda0bc0c9ba05d2596a4365
7
- data.tar.gz: d432e0f6924edf5dc9c6aec1fd209b59d9cf98dcf41236d07e83020fe91d0223ab2f63710ac03a2ead33da221ab84921d00c2210e2c34934042266d8dad55109
6
+ metadata.gz: de608713ec947456f98518daf7b26733d7b5bc77740454444badc7b30105ad56de3ae1e4013308f4758a2493f678bbe7a43b82094905f13c40e64a753790f3ef
7
+ data.tar.gz: 7b787b6bc3b6622baed7de810f7b9507f624a300772af7bbe171bb262a5b5f3bc20d6c133a40957fd410cca25995dc62e28235f3943f34a04c4fd6b2f0b1f6c4
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Class::Enum
2
2
 
3
- java-like class enum for Ruby
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 (Ruby 1.9+?)
37
+ - No
36
38
 
37
39
  ## Usage
38
40
  See [documentation](http://www.rubydoc.info/gems/class-enum)
@@ -1,7 +1,7 @@
1
1
  class Class
2
- # Utility for defining java-like enum type
2
+ # Utility for defining 'classial' enum type
3
3
  module Enum
4
- VERSION = '0.0.1'.freeze
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.1
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-09-10 00:00:00.000000000 Z
11
+ date: 2016-10-04 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: java-like class enum for Ruby
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: java-like class enum for Ruby
45
+ summary: "'classial' enum for Ruby"
46
46
  test_files: []
47
47
  has_rdoc: