renum 1.3.1 → 1.4.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.
- data/.travis.yml +12 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +30 -0
- data/README.textile +55 -21
- data/Rakefile +17 -22
- data/VERSION +1 -1
- data/lib/renum.rb +11 -5
- data/lib/renum/enumerated_value.rb +14 -3
- data/lib/renum/index_serializer.rb +15 -0
- data/lib/renum/name_serializer.rb +19 -0
- data/renum.gemspec +31 -23
- data/spec/renum_spec.rb +29 -4
- data/spec/spec_helper.rb +1 -11
- metadata +61 -45
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
diff-lcs (1.1.3)
|
5
|
+
git (1.2.5)
|
6
|
+
jeweler (1.8.4)
|
7
|
+
bundler (~> 1.0)
|
8
|
+
git (>= 1.2.5)
|
9
|
+
rake
|
10
|
+
rdoc
|
11
|
+
json (1.7.5)
|
12
|
+
rake (0.9.2.2)
|
13
|
+
rdoc (3.12)
|
14
|
+
json (~> 1.4)
|
15
|
+
rspec (2.11.0)
|
16
|
+
rspec-core (~> 2.11.0)
|
17
|
+
rspec-expectations (~> 2.11.0)
|
18
|
+
rspec-mocks (~> 2.11.0)
|
19
|
+
rspec-core (2.11.1)
|
20
|
+
rspec-expectations (2.11.3)
|
21
|
+
diff-lcs (~> 1.1.3)
|
22
|
+
rspec-mocks (2.11.3)
|
23
|
+
|
24
|
+
PLATFORMS
|
25
|
+
ruby
|
26
|
+
|
27
|
+
DEPENDENCIES
|
28
|
+
jeweler
|
29
|
+
rake
|
30
|
+
rspec
|
data/README.textile
CHANGED
@@ -1,12 +1,10 @@
|
|
1
1
|
h1. renum
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
h2. Installing
|
3
|
+
!https://secure.travis-ci.org/duelinmarkers/renum.png(Build Status)!:http://travis-ci.org/duelinmarkers/renum
|
6
4
|
|
7
|
-
|
5
|
+
Renum provides a readable but terse enum facility for Ruby. Enums are sometimes called object constants and are analogous to the type-safe enum pattern in Java, though obviously Ruby's flexibility means there's no such thing as type-safety.
|
8
6
|
|
9
|
-
h2.
|
7
|
+
h2. Usage
|
10
8
|
|
11
9
|
Renum allows you to do things like this:
|
12
10
|
|
@@ -31,15 +29,15 @@ end</pre>
|
|
31
29
|
Giving you something that satisfies this spec, plus a bit more:
|
32
30
|
|
33
31
|
<pre syntax="ruby">describe "enum" do
|
34
|
-
|
32
|
+
|
35
33
|
it "creates a class for the value type" do
|
36
34
|
Status.class.should == Class
|
37
35
|
end
|
38
|
-
|
36
|
+
|
39
37
|
it "makes each value an instance of the value type" do
|
40
38
|
Status::NOT_STARTED.class.should == Status
|
41
39
|
end
|
42
|
-
|
40
|
+
|
43
41
|
it "exposes array of values" do
|
44
42
|
Status.values.should == [Status::NOT_STARTED, Status::IN_PROGRESS, Status::COMPLETE]
|
45
43
|
end
|
@@ -47,54 +45,90 @@ Giving you something that satisfies this spec, plus a bit more:
|
|
47
45
|
it "provides an alternative means of declaring values where extra information can be provided for initialization" do
|
48
46
|
Size::Small.description.should == "Really really tiny"
|
49
47
|
end
|
50
|
-
|
48
|
+
|
51
49
|
it "enumerates over values" do
|
52
50
|
Status.map {|s| s.name}.should == %w[NOT_STARTED IN_PROGRESS COMPLETE]
|
53
51
|
end
|
54
|
-
|
52
|
+
|
55
53
|
it "indexes values" do
|
56
54
|
Status[2].should == Status::COMPLETE
|
57
55
|
end
|
58
|
-
|
56
|
+
|
59
57
|
it "provides index lookup on values" do
|
60
58
|
Status::IN_PROGRESS.index.should == 1
|
61
59
|
end
|
62
|
-
|
60
|
+
|
63
61
|
it "provides a reasonable to_s for values" do
|
64
62
|
Status::NOT_STARTED.to_s.should == "Status::NOT_STARTED"
|
65
63
|
end
|
66
|
-
|
64
|
+
|
67
65
|
it "makes values comparable" do
|
68
66
|
Status::NOT_STARTED.should < Status::COMPLETE
|
69
67
|
end
|
70
|
-
|
68
|
+
|
71
69
|
it "allows enums to be nested in other modules or classes" do
|
72
70
|
MyNamespace::FooValue::Bar.class.should == MyNamespace::FooValue
|
73
71
|
end
|
74
|
-
|
72
|
+
|
75
73
|
end</pre>
|
76
74
|
|
77
75
|
h2. "Rails":http://www.rubyonrails.com/ Integration
|
78
76
|
|
79
|
-
|
77
|
+
[This feature is brand new and should be considered beta-quality.]
|
78
|
+
|
79
|
+
Use Renum::NameSerializer with ActiveRecord's "`serialize`":http://api.rubyonrails.org/classes/ActiveRecord/AttributeMethods/Serialization/ClassMethods.html#method-i-serialize method to store enum values as strings.
|
80
80
|
|
81
81
|
<pre syntax="ruby">class Vehicle < ActiveRecord::Base
|
82
82
|
enum :Status do
|
83
83
|
New()
|
84
84
|
Used()
|
85
85
|
Salvage(true)
|
86
|
-
|
86
|
+
|
87
87
|
def init(warn = false)
|
88
88
|
@warn = warn
|
89
89
|
end
|
90
|
-
|
90
|
+
|
91
91
|
def requires_warning_buyer?
|
92
92
|
@warn
|
93
93
|
end
|
94
94
|
end
|
95
|
-
|
95
|
+
|
96
|
+
serialize :status, Renum::NameSerializer.new(Status)
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
v = Vehicle.create! :status => Vehicle::Status::New
|
101
|
+
# Now the database has the string "New",
|
102
|
+
# but your record object exposes the Status object:
|
103
|
+
v.status.requires_warning_buyer? # => false
|
104
|
+
|
105
|
+
v.update_attribute :status, Vehicle::Status::Salvage
|
106
|
+
# Now the database has the string "Salvage".
|
107
|
+
v.status.requires_warning_buyer? # => true
|
108
|
+
|
109
|
+
# Note that if you assign a String, the value will remain a String until you save.
|
110
|
+
v.status = "Used"
|
111
|
+
v.status.requires_warning_buyer? # => raises NoMethodError</pre>
|
112
|
+
|
113
|
+
Before ActiveRecord had such flexible serialization support, I wrote a Rails plugin called "constantize_attribute":https://github.com/duelinmarkers/constantize_attribute/tree that would store the fully qualified name of your value in a string column. It hasn't been tested against a recent version of Rails, but it should still work. It's not packaged as a gem, so if you want to use it, I'd recommend you just grab the code. (It's quite tiny.)
|
114
|
+
|
115
|
+
<pre syntax="ruby">class Vehicle < ActiveRecord::Base
|
116
|
+
enum :Status do
|
117
|
+
New()
|
118
|
+
Used()
|
119
|
+
Salvage(true)
|
120
|
+
|
121
|
+
def init(warn = false)
|
122
|
+
@warn = warn
|
123
|
+
end
|
124
|
+
|
125
|
+
def requires_warning_buyer?
|
126
|
+
@warn
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
96
130
|
constantize_attribute :status
|
97
|
-
|
131
|
+
|
98
132
|
end
|
99
133
|
|
100
134
|
v = Vehicle.create! :status => Vehicle::Status::New
|
@@ -113,7 +147,7 @@ v.status.requires_warning_buyer? # => false</pre>
|
|
113
147
|
|
114
148
|
h2. License
|
115
149
|
|
116
|
-
This code is free to use under the terms of the MIT license.
|
150
|
+
This code is free to use under the terms of the MIT license.
|
117
151
|
|
118
152
|
Permission is hereby granted, free of charge, to any person obtaining
|
119
153
|
a copy of this software and associated documentation files (the
|
data/Rakefile
CHANGED
@@ -1,22 +1,17 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require '
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
end
|
19
|
-
Jeweler::GemcutterTasks.new
|
20
|
-
rescue LoadError
|
21
|
-
puts "Jeweler or a dependency not available. To install: sudo gem install jeweler"
|
22
|
-
end
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rspec/core/rake_task'
|
3
|
+
|
4
|
+
RSpec::Core::RakeTask.new
|
5
|
+
|
6
|
+
task :default => :spec
|
7
|
+
|
8
|
+
require 'jeweler'
|
9
|
+
Jeweler::Tasks.new do |s|
|
10
|
+
s.name = "renum"
|
11
|
+
s.summary = "provides a readable but terse enum facility for Ruby"
|
12
|
+
s.email = "duelin.markers@gmail.com"
|
13
|
+
s.homepage = "http://github.com/duelinmarkers/renum"
|
14
|
+
s.description = "provides a readable but terse enum facility for Ruby"
|
15
|
+
s.authors = ["John Hume"]
|
16
|
+
end
|
17
|
+
Jeweler::RubygemsDotOrgTasks.new
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.4.0
|
data/lib/renum.rb
CHANGED
@@ -1,13 +1,19 @@
|
|
1
1
|
require 'renum/enumerated_value_type_factory'
|
2
|
+
require 'renum/name_serializer'
|
3
|
+
require 'renum/index_serializer'
|
2
4
|
|
3
|
-
# Requiring 'renum' mixes the Renum module into both the main Object and
|
4
|
-
# Module, so it can be called from anywhere that you might reasonably
|
5
|
+
# Requiring 'renum' mixes the Renum module into both the main Object and
|
6
|
+
# Module, so it can be called from anywhere that you might reasonably
|
5
7
|
# define an enumeration with an implicit receiver.
|
6
8
|
module Renum
|
7
9
|
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
10
|
+
# Declares an enumerated type. If called inside a module, the enumerated type class will
|
11
|
+
# be nested inside that module.
|
12
|
+
#
|
13
|
+
# @param [Symbol] type_name The name of the EnumeratedType class to create
|
14
|
+
# @param [optional, Array<Symbol, String>] values
|
15
|
+
# the names of the values in order, can be omitted if you'll specify them via method calls in a block
|
16
|
+
# @param block can be used to specify values with method calls, instance methods
|
11
17
|
def enum type_name, values = :defined_in_block, &block
|
12
18
|
nest = self.is_a?(Module) ? self : Object
|
13
19
|
EnumeratedValueTypeFactory.create(nest, type_name, values, &block)
|
@@ -2,7 +2,8 @@ require 'forwardable'
|
|
2
2
|
|
3
3
|
module Renum
|
4
4
|
|
5
|
-
# This is the superclass of
|
5
|
+
# This is the superclass of your enumeration classes.
|
6
|
+
# The class methods defined here are intended to be called on your enumerated value classes.
|
6
7
|
# An enumeration class is Enumerable over its values and exposes them by numeric index via [].
|
7
8
|
# Values are also comparable, sorting into the order in which they're declared.
|
8
9
|
class EnumeratedValue
|
@@ -13,15 +14,19 @@ module Renum
|
|
13
14
|
|
14
15
|
def_delegators :values, :each, :[]
|
15
16
|
|
16
|
-
#
|
17
|
+
# @return [Array] values of this type in the order they're declared.
|
17
18
|
def values
|
18
19
|
@values ||= []
|
19
20
|
end
|
20
21
|
|
22
|
+
# Lookup by name.
|
23
|
+
# @param [String] name of the value you want
|
24
|
+
# @return [EnumeratedValue, nil] the value with `name` or nil if there is no value by that name
|
21
25
|
def with_name name
|
22
26
|
values_by_name[name]
|
23
27
|
end
|
24
28
|
|
29
|
+
# @return [{String => EnumeratedType}] values keyed by name.
|
25
30
|
def values_by_name
|
26
31
|
@values_by_name ||= values.inject({}) do |memo, value|
|
27
32
|
memo[value.name] = value
|
@@ -35,6 +40,9 @@ module Renum
|
|
35
40
|
|
36
41
|
attr_reader :name, :index
|
37
42
|
|
43
|
+
# You should never directly new-up an EnumeratedValue, so this is basically internal.
|
44
|
+
# It sets up the value with its class, so if you override, be sure to call super!
|
45
|
+
# Better yet define init as shown in the README.
|
38
46
|
def initialize name
|
39
47
|
@name = name.to_s.freeze
|
40
48
|
@index = self.class.values.size
|
@@ -42,7 +50,7 @@ module Renum
|
|
42
50
|
end
|
43
51
|
|
44
52
|
# Returns the fully qualified name of the constant referring to this value.
|
45
|
-
# Don't override this if you're using Renum with the constantize_attribute
|
53
|
+
# Don't override this if you're using Renum with the constantize_attribute
|
46
54
|
# plugin, which relies on this behavior.
|
47
55
|
def to_s
|
48
56
|
"#{self.class}::#{name}"
|
@@ -53,5 +61,8 @@ module Renum
|
|
53
61
|
index <=> other.index
|
54
62
|
end
|
55
63
|
|
64
|
+
def == other
|
65
|
+
equal? other
|
66
|
+
end
|
56
67
|
end
|
57
68
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Renum
|
2
|
+
class NameSerializer
|
3
|
+
def initialize enum_class
|
4
|
+
@enum_class = enum_class
|
5
|
+
end
|
6
|
+
|
7
|
+
def dump v
|
8
|
+
v && if v.is_a?(String)
|
9
|
+
v
|
10
|
+
else
|
11
|
+
v.name
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def load s
|
16
|
+
s && @enum_class.with_name(s)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/renum.gemspec
CHANGED
@@ -1,49 +1,57 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "1.
|
7
|
+
s.name = "renum"
|
8
|
+
s.version = "1.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["John Hume"]
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
12
|
+
s.date = "2013-03-16"
|
13
|
+
s.description = "provides a readable but terse enum facility for Ruby"
|
14
|
+
s.email = "duelin.markers@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"README.textile"
|
17
17
|
]
|
18
18
|
s.files = [
|
19
|
+
".travis.yml",
|
20
|
+
"Gemfile",
|
21
|
+
"Gemfile.lock",
|
19
22
|
"README.textile",
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
]
|
29
|
-
s.homepage = %q{http://github.com/duelinmarkers/renum}
|
30
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
31
|
-
s.require_paths = ["lib"]
|
32
|
-
s.rubygems_version = %q{1.3.7}
|
33
|
-
s.summary = %q{provides a readable but terse enum facility for Ruby}
|
34
|
-
s.test_files = [
|
23
|
+
"Rakefile",
|
24
|
+
"VERSION",
|
25
|
+
"lib/renum.rb",
|
26
|
+
"lib/renum/enumerated_value.rb",
|
27
|
+
"lib/renum/enumerated_value_type_factory.rb",
|
28
|
+
"lib/renum/index_serializer.rb",
|
29
|
+
"lib/renum/name_serializer.rb",
|
30
|
+
"renum.gemspec",
|
35
31
|
"spec/renum_spec.rb",
|
36
|
-
|
32
|
+
"spec/spec_helper.rb"
|
37
33
|
]
|
34
|
+
s.homepage = "http://github.com/duelinmarkers/renum"
|
35
|
+
s.require_paths = ["lib"]
|
36
|
+
s.rubygems_version = "1.8.15"
|
37
|
+
s.summary = "provides a readable but terse enum facility for Ruby"
|
38
38
|
|
39
39
|
if s.respond_to? :specification_version then
|
40
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
41
40
|
s.specification_version = 3
|
42
41
|
|
43
42
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
43
|
+
s.add_development_dependency(%q<rake>, [">= 0"])
|
44
|
+
s.add_development_dependency(%q<rspec>, [">= 0"])
|
45
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
44
46
|
else
|
47
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
48
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
49
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
45
50
|
end
|
46
51
|
else
|
52
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
53
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
54
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
47
55
|
end
|
48
56
|
end
|
49
57
|
|
data/spec/renum_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
enum :Status, [ :NOT_STARTED, :IN_PROGRESS, :COMPLETE ]
|
4
4
|
|
@@ -43,6 +43,10 @@ describe "basic enum" do
|
|
43
43
|
it "makes values comparable" do
|
44
44
|
Color::RED.should < Color::GREEN
|
45
45
|
end
|
46
|
+
|
47
|
+
it "doesn't let Comparable's == confuse things" do
|
48
|
+
Color[0].should_not == Status[0]
|
49
|
+
end
|
46
50
|
end
|
47
51
|
|
48
52
|
module MyNamespace
|
@@ -158,14 +162,35 @@ end
|
|
158
162
|
|
159
163
|
describe "prevention of subtle and annoying bugs" do
|
160
164
|
it "prevents you modifying the values array" do
|
161
|
-
|
165
|
+
expect { Color.values << 'some crazy value' }.to raise_error(/modify frozen/)
|
162
166
|
end
|
163
167
|
|
164
168
|
it "prevents you modifying the name hash" do
|
165
|
-
|
169
|
+
expect { Color.values_by_name['MAGENTA'] = 'some crazy value' }.to raise_error(/modify frozen/)
|
166
170
|
end
|
167
171
|
|
168
172
|
it "prevents you modifying the name of a value" do
|
169
|
-
|
173
|
+
expect { Color::RED.name << 'dish-Brown' }.to raise_error(/modify frozen/)
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
describe "serialization (for ActiveRecord or what-have-you)" do
|
178
|
+
it "can serialize to and deserialize from its name string" do
|
179
|
+
serializer = Renum::NameSerializer.new Color
|
180
|
+
serializer.dump(Color::RED).should == "RED"
|
181
|
+
serializer.dump("RED").should == "RED" # for convenient param assignment
|
182
|
+
serializer.load("RED").should == Color::RED
|
183
|
+
|
184
|
+
serializer.dump(nil).should == nil
|
185
|
+
serializer.load(nil).should == nil
|
186
|
+
end
|
187
|
+
|
188
|
+
it "can serialize to and deserialize from its positional index" do
|
189
|
+
serializer = Renum::IndexSerializer.new Color
|
190
|
+
serializer.dump(Color::RED).should == 0
|
191
|
+
serializer.load(0).should == Color::RED
|
192
|
+
|
193
|
+
serializer.dump(nil).should == nil
|
194
|
+
serializer.load(nil).should == nil
|
170
195
|
end
|
171
196
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,76 +1,92 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: renum
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 3
|
9
|
-
- 1
|
10
|
-
version: 1.3.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.4.0
|
5
|
+
prerelease:
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- John Hume
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
12
|
+
date: 2013-03-16 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: &19725600 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *19725600
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
requirement: &19725120 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *19725120
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: jeweler
|
38
|
+
requirement: &19724600 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *19724600
|
22
47
|
description: provides a readable but terse enum facility for Ruby
|
23
48
|
email: duelin.markers@gmail.com
|
24
49
|
executables: []
|
25
|
-
|
26
50
|
extensions: []
|
27
|
-
|
28
|
-
extra_rdoc_files:
|
51
|
+
extra_rdoc_files:
|
29
52
|
- README.textile
|
30
|
-
files:
|
53
|
+
files:
|
54
|
+
- .travis.yml
|
55
|
+
- Gemfile
|
56
|
+
- Gemfile.lock
|
31
57
|
- README.textile
|
32
58
|
- Rakefile
|
33
59
|
- VERSION
|
34
60
|
- lib/renum.rb
|
35
61
|
- lib/renum/enumerated_value.rb
|
36
62
|
- lib/renum/enumerated_value_type_factory.rb
|
63
|
+
- lib/renum/index_serializer.rb
|
64
|
+
- lib/renum/name_serializer.rb
|
37
65
|
- renum.gemspec
|
38
66
|
- spec/renum_spec.rb
|
39
67
|
- spec/spec_helper.rb
|
40
|
-
has_rdoc: true
|
41
68
|
homepage: http://github.com/duelinmarkers/renum
|
42
69
|
licenses: []
|
43
|
-
|
44
70
|
post_install_message:
|
45
|
-
rdoc_options:
|
46
|
-
|
47
|
-
require_paths:
|
71
|
+
rdoc_options: []
|
72
|
+
require_paths:
|
48
73
|
- lib
|
49
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
74
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
75
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
|
55
|
-
|
56
|
-
- 0
|
57
|
-
version: "0"
|
58
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ! '>='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
81
|
none: false
|
60
|
-
requirements:
|
61
|
-
- -
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
|
64
|
-
segments:
|
65
|
-
- 0
|
66
|
-
version: "0"
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
67
86
|
requirements: []
|
68
|
-
|
69
87
|
rubyforge_project:
|
70
|
-
rubygems_version: 1.
|
88
|
+
rubygems_version: 1.8.15
|
71
89
|
signing_key:
|
72
90
|
specification_version: 3
|
73
91
|
summary: provides a readable but terse enum facility for Ruby
|
74
|
-
test_files:
|
75
|
-
- spec/renum_spec.rb
|
76
|
-
- spec/spec_helper.rb
|
92
|
+
test_files: []
|