ruby-enum 0.2.1 → 0.3.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1e0ced60d6ed9e9fb379e0804f7483d97f8469b2
4
+ data.tar.gz: 8a67751a1fd7777b39e5c1be070ab498875872a7
5
+ SHA512:
6
+ metadata.gz: f4978a831b5fe81cf79abb6c1568b681e4750a8f6b50a904c32f5d5e9fe2dd7116e6935046f30956d241a93f53e462e20bf66be4fdb72f77ffe47d2773bf41c5
7
+ data.tar.gz: 8f76f84efced4d354aa73bef8d3da875d2543cc4683bfe5db44adf23c1e748d62e5f5bdcfd0792e1e0b218f7f9c91a676782e9ff35dbb8b719c38df40c51d68c
data/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
- ### 0.3.0 (Next Release)
1
+ ### 0.3.0 (5/19/2014)
2
2
 
3
- * Your contribution here.
3
+ * Added `Ruby::Enum#map` - [@ArnaudRinquin](https://github.com/ArnaudRinquin).
4
4
 
5
5
  ### 0.2.1 (5/15/2013)
6
6
 
data/Gemfile CHANGED
@@ -4,3 +4,4 @@ gemspec
4
4
 
5
5
  gem "rspec"
6
6
  gem "rake"
7
+ gem "rubocop", "0.21.0"
data/Gemfile.lock CHANGED
@@ -1,23 +1,38 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby-enum (0.2.1)
4
+ ruby-enum (0.3.0)
5
5
  i18n
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
- diff-lcs (1.2.4)
11
- i18n (0.6.4)
12
- rake (10.0.4)
13
- rspec (2.13.0)
14
- rspec-core (~> 2.13.0)
15
- rspec-expectations (~> 2.13.0)
16
- rspec-mocks (~> 2.13.0)
17
- rspec-core (2.13.1)
18
- rspec-expectations (2.13.0)
10
+ ast (2.0.0)
11
+ diff-lcs (1.2.5)
12
+ i18n (0.6.9)
13
+ json (1.8.1)
14
+ parser (2.1.9)
15
+ ast (>= 1.1, < 3.0)
16
+ slop (~> 3.4, >= 3.4.5)
17
+ powerpack (0.0.9)
18
+ rainbow (2.0.0)
19
+ rake (10.3.1)
20
+ rspec (2.14.1)
21
+ rspec-core (~> 2.14.0)
22
+ rspec-expectations (~> 2.14.0)
23
+ rspec-mocks (~> 2.14.0)
24
+ rspec-core (2.14.8)
25
+ rspec-expectations (2.14.5)
19
26
  diff-lcs (>= 1.1.3, < 2.0)
20
- rspec-mocks (2.13.1)
27
+ rspec-mocks (2.14.6)
28
+ rubocop (0.21.0)
29
+ json (>= 1.7.7, < 2)
30
+ parser (~> 2.1.9)
31
+ powerpack (~> 0.0.6)
32
+ rainbow (>= 1.99.1, < 3.0)
33
+ ruby-progressbar (~> 1.4)
34
+ ruby-progressbar (1.5.1)
35
+ slop (3.5.0)
21
36
 
22
37
  PLATFORMS
23
38
  ruby
@@ -25,4 +40,5 @@ PLATFORMS
25
40
  DEPENDENCIES
26
41
  rake
27
42
  rspec
43
+ rubocop (= 0.21.0)
28
44
  ruby-enum!
data/README.md CHANGED
@@ -36,6 +36,18 @@ Colors.each do |key, enum|
36
36
  end
37
37
  ```
38
38
 
39
+ ### Mapping
40
+
41
+ ``` ruby
42
+ Colors.map do |key, enum|
43
+ # key and enum.key is :RED, :GREEN
44
+ # enum.value is "red", "green"
45
+ [enum.value, key]
46
+ end
47
+
48
+ # => [ ['red', :RED], ['green', :GREEN] ]
49
+ ```
50
+
39
51
  ## Contributing
40
52
 
41
53
  You're encouraged to contribute to this gem.
data/Rakefile CHANGED
@@ -7,7 +7,10 @@ require 'rspec/core'
7
7
  require 'rspec/core/rake_task'
8
8
 
9
9
  RSpec::Core::RakeTask.new(:spec) do |spec|
10
- spec.pattern = FileList["spec/**/*_spec.rb"]
10
+ spec.pattern = FileList['spec/**/*_spec.rb']
11
11
  end
12
12
 
13
- task :default => :spec
13
+ require 'rubocop/rake_task'
14
+ Rubocop::RakeTask.new(:rubocop)
15
+
16
+ task default: [:rubocop, :spec]
data/lib/ruby-enum.rb CHANGED
@@ -7,4 +7,3 @@ I18n.load_path << File.join(File.dirname(__FILE__), 'config', 'locales', 'en.yml
7
7
 
8
8
  require 'ruby-enum/errors/base'
9
9
  require 'ruby-enum/errors/uninitialized_constant_error'
10
-
@@ -1,6 +1,5 @@
1
1
  module Ruby
2
2
  module Enum
3
-
4
3
  attr_reader :key, :value
5
4
 
6
5
  def initialize(key, value)
@@ -13,7 +12,6 @@ module Ruby
13
12
  end
14
13
 
15
14
  module ClassMethods
16
-
17
15
  # Define an enumerated value.
18
16
  #
19
17
  # === Parameters
@@ -21,25 +19,33 @@ module Ruby
21
19
  # [value] Enumerator value.
22
20
  def define(key, value)
23
21
  @_enum_hash ||= {}
24
- @_enum_hash[key] = self.new(key, value)
22
+ @_enum_hash[key] = new(key, value)
25
23
  end
26
24
 
27
25
  def const_missing(key)
28
26
  if @_enum_hash[key]
29
27
  @_enum_hash[key].value
30
28
  else
31
- raise Ruby::Enum::Errors::UninitializedConstantError.new({ :name => name, :key => key })
29
+ fail Ruby::Enum::Errors::UninitializedConstantError.new(name: name, key: key)
32
30
  end
33
31
  end
34
32
 
35
33
  # Iterate over all enumerated values.
36
34
  # Yields a key and an enumerated instance.
37
- def each(&block)
35
+ def each(&_block)
38
36
  @_enum_hash.each do |key, value|
39
37
  yield key, value
40
38
  end
41
39
  end
42
40
 
41
+ # Map all enumerated values.
42
+ # Yields a key and an enumerated instance.
43
+ def map(&_block)
44
+ @_enum_hash.map do |key, value|
45
+ yield key, value
46
+ end
47
+ end
48
+
43
49
  # Attempt to parse an enumerated value.
44
50
  #
45
51
  # === Parameters
@@ -49,9 +55,7 @@ module Ruby
49
55
  def parse(s)
50
56
  s = s.to_s.upcase
51
57
  each do |key, enum|
52
- if key.to_s.upcase == s
53
- return enum.value
54
- end
58
+ return enum.value if key.to_s.upcase == s
55
59
  end
56
60
  nil
57
61
  end
@@ -68,11 +72,9 @@ module Ruby
68
72
 
69
73
  def to_h
70
74
  Hash[@_enum_hash.map do |key, enum|
71
- [ key, enum.value ]
75
+ [key, enum.value]
72
76
  end]
73
77
  end
74
-
75
78
  end
76
-
77
79
  end
78
80
  end
@@ -2,7 +2,6 @@ module Ruby
2
2
  module Enum
3
3
  module Errors
4
4
  class Base < StandardError
5
-
6
5
  # Problem occurred.
7
6
  attr_reader :problem
8
7
 
@@ -21,14 +20,13 @@ module Ruby
21
20
  @summary = create_summary(key, attributes)
22
21
  @resolution = create_resolution(key, attributes)
23
22
 
24
- "\nProblem:\n #{@problem}"+
25
- "\nSummary:\n #{@summary}"+
26
- "\nResolution:\n #{@resolution}"
23
+ "\nProblem:\n #{@problem}"\
24
+ "\nSummary:\n #{@summary}" + "\nResolution:\n #{@resolution}"
27
25
  end
28
26
 
29
27
  private
30
28
 
31
- BASE_KEY = "ruby.enum.errors.messages" #:nodoc:
29
+ BASE_KEY = 'ruby.enum.errors.messages' #:nodoc:
32
30
 
33
31
  # Given the key of the specific error and the options hash, translate the
34
32
  # message.
@@ -38,9 +36,9 @@ module Ruby
38
36
  # [options] The objects to pass to create the message.
39
37
  #
40
38
  # Returns a localized error message string.
41
- def translate(key, options)
42
- ::I18n.translate("#{BASE_KEY}.#{key}", { :locale => :en }.merge(options)).strip
43
- end
39
+ def translate(key, options)
40
+ ::I18n.translate("#{BASE_KEY}.#{key}", { locale: :en }.merge(options)).strip
41
+ end
44
42
 
45
43
  # Create the problem.
46
44
  #
@@ -49,9 +47,9 @@ module Ruby
49
47
  # [attributes] The attributes to interpolate.
50
48
  #
51
49
  # Returns the problem.
52
- def create_problem(key, attributes)
53
- translate("#{key}.message", attributes)
54
- end
50
+ def create_problem(key, attributes)
51
+ translate("#{key}.message", attributes)
52
+ end
55
53
 
56
54
  # Create the summary.
57
55
  #
@@ -60,9 +58,9 @@ module Ruby
60
58
  # [attributes] The attributes to interpolate.
61
59
  #
62
60
  # Returns the summary.
63
- def create_summary(key, attributes)
64
- translate("#{key}.summary", attributes)
65
- end
61
+ def create_summary(key, attributes)
62
+ translate("#{key}.summary", attributes)
63
+ end
66
64
 
67
65
  # Create the resolution.
68
66
  #
@@ -71,11 +69,10 @@ module Ruby
71
69
  # [attributes] The attributes to interpolate.
72
70
  #
73
71
  # Returns the resolution.
74
- def create_resolution(key, attributes)
75
- translate("#{key}.resolution", attributes)
76
- end
77
-
72
+ def create_resolution(key, attributes)
73
+ translate("#{key}.resolution", attributes)
74
+ end
78
75
  end
79
76
  end
80
77
  end
81
- end
78
+ end
@@ -3,9 +3,9 @@ module Ruby
3
3
  module Errors
4
4
  class UninitializedConstantError < Base
5
5
  def initialize(attrs)
6
- super(compose_message("uninitialized_constant", attrs))
6
+ super(compose_message('uninitialized_constant', attrs))
7
7
  end
8
8
  end
9
9
  end
10
10
  end
11
- end
11
+ end
@@ -1,5 +1,5 @@
1
1
  module Ruby
2
2
  module Enum
3
- VERSION = '0.2.1'
3
+ VERSION = '0.3.0'
4
4
  end
5
5
  end
data/ruby-enum.gemspec CHANGED
@@ -1,17 +1,17 @@
1
- $:.push File.expand_path("../lib", __FILE__)
1
+ $LOAD_PATH.push File.expand_path('../lib', __FILE__)
2
2
  require 'ruby-enum/version'
3
3
 
4
4
  Gem::Specification.new do |s|
5
- s.name = "ruby-enum"
5
+ s.name = 'ruby-enum'
6
6
  s.version = Ruby::Enum::VERSION
7
- s.authors = [ "Daniel Doubrovkine" ]
8
- s.email = "dblock@dblock.org"
7
+ s.authors = ['Daniel Doubrovkine']
8
+ s.email = 'dblock@dblock.org'
9
9
  s.platform = Gem::Platform::RUBY
10
10
  s.required_rubygems_version = '>= 1.3.6'
11
11
  s.files = Dir['**/*']
12
- s.require_paths = [ "lib" ]
13
- s.homepage = "http://github.com/dblock/ruby-enum"
14
- s.licenses = [ "MIT" ]
15
- s.summary = "Enum-like behavior for Ruby."
16
- s.add_dependency "i18n"
12
+ s.require_paths = ['lib']
13
+ s.homepage = 'http://github.com/dblock/ruby-enum'
14
+ s.licenses = ['MIT']
15
+ s.summary = 'Enum-like behavior for Ruby.'
16
+ s.add_dependency 'i18n'
17
17
  end
@@ -3,20 +3,20 @@ require 'spec_helper'
3
3
  class Colors
4
4
  include Ruby::Enum
5
5
 
6
- define :RED, "red"
7
- define :GREEN, "green"
6
+ define :RED, 'red'
7
+ define :GREEN, 'green'
8
8
  end
9
9
 
10
10
  describe Ruby::Enum do
11
- it "returns an enum value" do
12
- Colors::RED.should eq "red"
13
- Colors::GREEN.should eq "green"
11
+ it 'returns an enum value' do
12
+ Colors::RED.should eq 'red'
13
+ Colors::GREEN.should eq 'green'
14
14
  end
15
- it "raises UninitializedConstantError on an invalid constant" do
15
+ it 'raises UninitializedConstantError on an invalid constant' do
16
16
  expect { Colors::ANYTHING }.to raise_error Ruby::Enum::Errors::UninitializedConstantError
17
17
  end
18
- context "#each" do
19
- it "iterates over constants" do
18
+ context '#each' do
19
+ it 'iterates over constants' do
20
20
  keys = []
21
21
  enum_keys = []
22
22
  enum_values = []
@@ -25,38 +25,48 @@ describe Ruby::Enum do
25
25
  enum_keys << enum.key
26
26
  enum_values << enum.value
27
27
  end
28
- keys.should == [ :RED, :GREEN ]
29
- enum_keys.should == [ :RED, :GREEN ]
30
- enum_values.should == [ "red", "green" ]
28
+ keys.should eq [:RED, :GREEN]
29
+ enum_keys.should eq [:RED, :GREEN]
30
+ enum_values.should eq %w(red green)
31
31
  end
32
32
  end
33
- context "#parse" do
34
- it "parses exact value" do
35
- Colors.parse("red").should == Colors::RED
33
+ context '#map' do
34
+ it 'maps constants' do
35
+ key_key_values = Colors.map do |key, enum|
36
+ [key, enum.key, enum.value]
37
+ end
38
+ key_key_values.count.should eq 2
39
+ key_key_values[0].should eq [:RED, :RED, 'red']
40
+ key_key_values[1].should eq [:GREEN, :GREEN, 'green']
41
+ end
42
+ end
43
+ context '#parse' do
44
+ it 'parses exact value' do
45
+ Colors.parse('red').should == Colors::RED
36
46
  end
37
- it "is case-insensitive" do
38
- Colors.parse("ReD").should == Colors::RED
47
+ it 'is case-insensitive' do
48
+ Colors.parse('ReD').should == Colors::RED
39
49
  end
40
- it "returns nil for a null value" do
50
+ it 'returns nil for a null value' do
41
51
  Colors.parse(nil).should be_nil
42
52
  end
43
- it "returns nil for an invalid value" do
44
- Colors.parse("invalid").should be_nil
53
+ it 'returns nil for an invalid value' do
54
+ Colors.parse('invalid').should be_nil
45
55
  end
46
56
  end
47
- context "#keys" do
48
- it "returns keys" do
49
- Colors.keys.should == [ :RED, :GREEN ]
57
+ context '#keys' do
58
+ it 'returns keys' do
59
+ Colors.keys.should == [:RED, :GREEN]
50
60
  end
51
61
  end
52
- context "#values" do
53
- it "returns values" do
54
- Colors.values.should == [ "red", "green" ]
62
+ context '#values' do
63
+ it 'returns values' do
64
+ Colors.values.should == %w(red green)
55
65
  end
56
66
  end
57
- context "#to_h" do
58
- it "returns a hash of key:values" do
59
- Colors.to_h.should == { :RED => "red", :GREEN => "green" }
67
+ context '#to_h' do
68
+ it 'returns a hash of key:values' do
69
+ Colors.to_h.should == { RED: 'red', GREEN: 'green' }
60
70
  end
61
71
  end
62
72
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Ruby::Enum do
4
- it "has a version" do
4
+ it 'has a version' do
5
5
  Ruby::Enum::VERSION.should_not be_nil
6
6
  end
7
7
  end
data/spec/spec_helper.rb CHANGED
@@ -3,4 +3,3 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
3
  require 'rubygems'
4
4
  require 'rspec'
5
5
  require 'ruby-enum'
6
-
metadata CHANGED
@@ -1,30 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-enum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
5
- prerelease:
4
+ version: 0.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Daniel Doubrovkine
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-05-15 00:00:00.000000000 Z
11
+ date: 2014-05-19 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: i18n
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  description:
@@ -44,8 +41,6 @@ files:
44
41
  - lib/ruby-enum.rb
45
42
  - lib/ruby_enum.rb
46
43
  - LICENSE.md
47
- - pkg/ruby-enum-0.2.0.gem
48
- - pkg/ruby-enum-0.3.0.gem
49
44
  - Rakefile
50
45
  - README.md
51
46
  - ruby-enum.gemspec
@@ -55,29 +50,25 @@ files:
55
50
  homepage: http://github.com/dblock/ruby-enum
56
51
  licenses:
57
52
  - MIT
53
+ metadata: {}
58
54
  post_install_message:
59
55
  rdoc_options: []
60
56
  require_paths:
61
57
  - lib
62
58
  required_ruby_version: !ruby/object:Gem::Requirement
63
- none: false
64
59
  requirements:
65
- - - ! '>='
60
+ - - '>='
66
61
  - !ruby/object:Gem::Version
67
62
  version: '0'
68
- segments:
69
- - 0
70
- hash: 4593317306755494398
71
63
  required_rubygems_version: !ruby/object:Gem::Requirement
72
- none: false
73
64
  requirements:
74
- - - ! '>='
65
+ - - '>='
75
66
  - !ruby/object:Gem::Version
76
67
  version: 1.3.6
77
68
  requirements: []
78
69
  rubyforge_project:
79
- rubygems_version: 1.8.25
70
+ rubygems_version: 2.0.14
80
71
  signing_key:
81
- specification_version: 3
72
+ specification_version: 4
82
73
  summary: Enum-like behavior for Ruby.
83
74
  test_files: []
Binary file
Binary file