e_pluribus_enum 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f83d5120f74fb0018f3f01cf14cb87714774e958
4
+ data.tar.gz: 40b0fd82cce13042712335f444845812db8d1574
5
+ SHA512:
6
+ metadata.gz: 6d979e2623acaca3f13a98e2784c9671edd6050d8148b44d20e3e9fffd4f12427661b226e15d889c6de2ca2edb4d9804df3017bbd300c48e1d236e0c0c13de2e
7
+ data.tar.gz: cd0b6f621d3313797b7087ea74ab097f9290aaa68b93dd67b66e6a2b4e36f1c64a2c3cbefa1a2240bad7f441709810a44172f6c6cbd35c87eaa93465a892ee93
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 Nicholas W. Watson
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
data/README.md ADDED
@@ -0,0 +1,2 @@
1
+ # e_pluribus_enum
2
+ I like symbols in my code, and integers in my database. E pluribus enum, a play on E pluribus unum.
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'Resurrection'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.rdoc')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,40 @@
1
+ module EPluribusEnum
2
+ class Enumeration
3
+ def Enumeration.add_item(key,value)
4
+ @hash ||= {}
5
+ @hash[key]=value
6
+ end
7
+
8
+ def Enumeration.const_missing(key)
9
+ @hash[key]
10
+ end
11
+
12
+ def Enumeration.each
13
+ @hash.each {|key,value| yield(key,value)}
14
+ end
15
+
16
+ def Enumeration.values
17
+ @hash.values || []
18
+ end
19
+
20
+ def Enumeration.keys
21
+ @hash.keys || []
22
+ end
23
+
24
+ def Enumeration.[](key)
25
+ @hash[key]
26
+ end
27
+
28
+ def Enumeration.value_for_key(key)
29
+ @hash[key]
30
+ end
31
+
32
+ def Enumeration.key_for_value(value)
33
+ @hash.invert[value]
34
+ end
35
+
36
+ def Enumeration.for_queries(arr)
37
+ ret = arr.collect{ |x| @hash[x.to_s.to_sym] }
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,21 @@
1
+ module EPluribusEnum
2
+ module RepresentsEnumeration
3
+ def self.included(base)
4
+ base.extend ClassMethods
5
+ end
6
+
7
+ module ClassMethods
8
+ # you need the field as an integer in the database, but it doesn't need to be attr_accessible
9
+ def represents_enumeration(field, enum)
10
+ self.class_eval <<-METHOD, __FILE__, __LINE__ + 1
11
+ def #{field}
12
+ #{enum.name}.key_for_value read_attribute(:#{field})
13
+ end
14
+ def #{field}=(value)
15
+ write_attribute :#{field}, #{enum.name}[value.to_s.to_sym]
16
+ end
17
+ METHOD
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,3 @@
1
+ module EPluribusEnum
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,3 @@
1
+ require 'e_pluribus_enum/version'
2
+ require 'e_pluribus_enum/enumeration'
3
+ require 'e_pluribus_enum/represents_enumeration'
metadata ADDED
@@ -0,0 +1,168 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: e_pluribus_enum
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Nicholas Watson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-07-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "<"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "<"
25
+ - !ruby/object:Gem::Version
26
+ version: '5.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec-rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.2'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 3.2.0
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '3.2'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 3.2.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec-its
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.1'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 1.1.0
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '1.1'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 1.1.0
67
+ - !ruby/object:Gem::Dependency
68
+ name: shoulda-matchers
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '2.8'
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: 2.8.0
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '2.8'
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: 2.8.0
87
+ - !ruby/object:Gem::Dependency
88
+ name: database_cleaner
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: '1.4'
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: 1.4.0
97
+ type: :development
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.4'
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: 1.4.0
107
+ - !ruby/object:Gem::Dependency
108
+ name: guard-rspec
109
+ requirement: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - "~>"
112
+ - !ruby/object:Gem::Version
113
+ version: '4.5'
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 4.5.0
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '4.5'
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: 4.5.0
127
+ description: I like symbols in my code, and integers in my database. I also like to
128
+ control the symbol's value. E Pluribus Enum, its like E pluribus unum, but for
129
+ code
130
+ email:
131
+ - nicholas.w.watson@icloud.com
132
+ executables: []
133
+ extensions: []
134
+ extra_rdoc_files: []
135
+ files:
136
+ - LICENSE
137
+ - README.md
138
+ - Rakefile
139
+ - lib/e_pluribus_enum.rb
140
+ - lib/e_pluribus_enum/enumeration.rb
141
+ - lib/e_pluribus_enum/represents_enumeration.rb
142
+ - lib/e_pluribus_enum/version.rb
143
+ homepage: https://github.com/nwwatson/e_pluribus_enum
144
+ licenses:
145
+ - MIT
146
+ metadata: {}
147
+ post_install_message:
148
+ rdoc_options: []
149
+ require_paths:
150
+ - lib
151
+ required_ruby_version: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
156
+ required_rubygems_version: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ requirements: []
162
+ rubyforge_project:
163
+ rubygems_version: 2.5.1
164
+ signing_key:
165
+ specification_version: 4
166
+ summary: Ever had a model that stores symbos in field and wish they were integers.
167
+ Wish no more.
168
+ test_files: []