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.
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: