enumerated_type 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,4 +1,2 @@
1
1
  source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in enumerated_type.gemspec
4
2
  gemspec
data/README.md CHANGED
@@ -6,7 +6,7 @@ Dead simple enumerated types for Ruby.
6
6
 
7
7
  This gem implements the familiar notion of enumerated types in Ruby.
8
8
 
9
- "But this is Ruby," you say, "where we haven't any use for such things." Yep. In Ruby, you can get a long way without any formalized concept of enumerated types by just using regular, boring old symbols. Let's take the fairly typical example of a "status" field on the `Job` class:
9
+ "But this is Ruby," you say, "where we haven't any use for such things." Yep. In Ruby, you can get a long way without any formalized concept of enumerated types by using symbols. Let's take the fairly typical example of a "status" field on the `Job` class:
10
10
 
11
11
  ```ruby
12
12
  class Job
@@ -27,7 +27,7 @@ class Job
27
27
  end
28
28
  ```
29
29
 
30
- At first pass this seems fine. Any code that needs to act based on a job's status has to have magic symbols (i.e. `job.status == :success`), but maybe that's ok for a little while. Later, though, we might want to add a little logic to the `Job`'s status, something like:
30
+ At first pass this seems fine. Any code that needs to act based on a job's status has to have magic symbols (i.e. `job.status == :success`), but maybe that's ok for a little while. Later, though, we might want to add a little logic around the `Job`'s status, something like:
31
31
 
32
32
  ```ruby
33
33
  # In a job notifier class or something
@@ -104,7 +104,7 @@ Get an instance of an enumerated type:
104
104
 
105
105
  # Or via symbol...
106
106
  @status = JobStatus[:pending]
107
- @status = JobStatus[:does_not_exist] #=> raises an ArgumentError
107
+ @status = JobStatus[:wrong] #=> raises an ArgumentError
108
108
  ```
109
109
 
110
110
  All instances have predicate methods defined automatically:
@@ -166,4 +166,4 @@ JobStatus::SUCCESS.message # => "Your job has completed"
166
166
 
167
167
  To run the tests (assuming you have already run `gem install bundler`):
168
168
 
169
- bundle install && rake test
169
+ bundle install && bundle exec rake
@@ -19,6 +19,6 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
23
- spec.add_development_dependency "minitest", "~> 5.0"
22
+ spec.add_development_dependency "minitest", "~> 5.1.0"
23
+ spec.add_development_dependency "rake", "~> 10.1.0"
24
24
  end
@@ -22,6 +22,10 @@ module EnumeratedType
22
22
  name.to_s
23
23
  end
24
24
 
25
+ def to_json
26
+ name.to_s
27
+ end
28
+
25
29
  private
26
30
 
27
31
  def initialize(name, properties)
@@ -64,6 +68,10 @@ module EnumeratedType
64
68
  end
65
69
 
66
70
  options.keys.each do |property|
71
+ if property.to_s == "name"
72
+ raise ArgumentError, "Property name 'name' is not allowed (conflicts with default EnumeratedType#name)"
73
+ end
74
+
67
75
  unless instance_methods.include?(:"#{property}")
68
76
  attr_reader(:"#{property}")
69
77
  end
@@ -1,3 +1,3 @@
1
1
  module EnumeratedType
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -1,6 +1,6 @@
1
1
  require "bundler/setup"
2
2
 
3
- require "minitest"
3
+ require "minitest/autorun"
4
4
  require "minitest/pride"
5
5
 
6
6
  require "enumerated_type"
@@ -87,6 +87,17 @@ describe EnumeratedType do
87
87
  it "does not expose public setters for properties" do
88
88
  Gender::MALE.respond_to?(:planet=).must_equal false
89
89
  end
90
+
91
+ it "does not allow the property name 'name'" do
92
+ name_property_definition = lambda do
93
+ Class.new do
94
+ include EnumeratedType
95
+ declare :test, :name => "test"
96
+ end
97
+ end
98
+
99
+ name_property_definition.must_raise(ArgumentError, "Property name 'name' is not allowed")
100
+ end
90
101
  end
91
102
 
92
103
  describe ".[]" do
@@ -121,4 +132,10 @@ describe EnumeratedType do
121
132
  Gender::MALE.to_s.must_equal "male"
122
133
  end
123
134
  end
135
+
136
+ describe "#to_json" do
137
+ it "is the name (as a string)" do
138
+ Gender::MALE.to_json.must_equal "male"
139
+ end
140
+ end
124
141
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: enumerated_type
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-12-06 00:00:00.000000000 Z
12
+ date: 2013-12-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -28,29 +28,29 @@ dependencies:
28
28
  - !ruby/object:Gem::Version
29
29
  version: '1.3'
30
30
  - !ruby/object:Gem::Dependency
31
- name: rake
31
+ name: minitest
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
- - - ! '>='
35
+ - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: '0'
37
+ version: 5.1.0
38
38
  type: :development
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - ! '>='
43
+ - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: '0'
45
+ version: 5.1.0
46
46
  - !ruby/object:Gem::Dependency
47
- name: minitest
47
+ name: rake
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: '5.0'
53
+ version: 10.1.0
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,7 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '5.0'
61
+ version: 10.1.0
62
62
  description: Simple enumerated types
63
63
  email:
64
64
  - rafer@ralua.com
@@ -90,7 +90,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
90
90
  version: '0'
91
91
  segments:
92
92
  - 0
93
- hash: -396384872220614621
93
+ hash: -1744150559039667923
94
94
  required_rubygems_version: !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
@@ -99,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  version: '0'
100
100
  segments:
101
101
  - 0
102
- hash: -396384872220614621
102
+ hash: -1744150559039667923
103
103
  requirements: []
104
104
  rubyforge_project:
105
105
  rubygems_version: 1.8.26