ruby_enum 0.4.1 → 0.5.0.beta
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 +4 -4
- data/.travis.yml +1 -0
- data/Gemfile.lock +1 -4
- data/README.md +2 -1
- data/lib/ruby_enum/active_record.rb +59 -0
- data/lib/ruby_enum.rb +4 -1
- data/ruby_enum.gemspec +1 -1
- metadata +15 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9202f89c3a1394405533b0a03771a2685a13f27c
|
4
|
+
data.tar.gz: 61b6948b459cb6999acea46ff25efd9049fd43d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 05b762d7975153b1b600e0520652c18d0d794bea9c483eafac229467a2adcd3860dfa1b0eb484aa18ff009d3a1c4dd4e9bb6a8149d26e050ab74b608ee0bcfda
|
7
|
+
data.tar.gz: ec58e6946584ef393cacf9a1a9dbf02e63511cb601e7d51dc3fee80f74dedd3f33170428a1dc51bac3b2d3a4e0ae58334d1e78ece2aec529c1366ffddd2cc730
|
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
[](https://badge.fury.io/rb/ruby_enum)
|
2
|
+
Version](https://badge.fury.io/rb/ruby_enum.svg)](https://badge.fury.io/rb/ruby_enum) [](https://travis-ci.org/laskaridis/ruby_enum) [](https://codeclimate.com/github/laskaridis/ruby_enum)
|
3
4
|
|
4
5
|
# RubyEnum
|
5
6
|
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
|
3
|
+
module RubyEnum
|
4
|
+
module ActiveRecord
|
5
|
+
module AttrEnum
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
module ClassMethods
|
9
|
+
|
10
|
+
def attr_enum(name, opts = {})
|
11
|
+
_create_attr_descriptor_for(name, opts)
|
12
|
+
_define_attr_getter_for name
|
13
|
+
_define_attr_setter_for name
|
14
|
+
end
|
15
|
+
|
16
|
+
def attr_enums
|
17
|
+
@_attr_enums ||= {}
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def _create_attr_descriptor_for(name, opts)
|
23
|
+
if attr_enums[name].present?
|
24
|
+
raise ArgumentError, "#{self} already has an enum attr named `#{name}`"
|
25
|
+
end
|
26
|
+
|
27
|
+
# set a default enumeration class name if none provided
|
28
|
+
if opts[:class_name].nil?
|
29
|
+
opts[:class_name] = _enum_class_name_for name
|
30
|
+
end
|
31
|
+
|
32
|
+
attr_enums[name] = opts
|
33
|
+
end
|
34
|
+
|
35
|
+
def _enum_class_name_for(name)
|
36
|
+
name.to_s.capitalize
|
37
|
+
end
|
38
|
+
|
39
|
+
def _define_attr_getter_for(name)
|
40
|
+
define_method name do
|
41
|
+
enum = self.class.attr_enums[name]
|
42
|
+
enum_class = Object.const_get enum[:class_name]
|
43
|
+
enum_class.find_by_value super()
|
44
|
+
end
|
45
|
+
|
46
|
+
def _define_attr_setter_for(name)
|
47
|
+
define_method "#{name}=" do |new_value|
|
48
|
+
if new_value.present?
|
49
|
+
super(new_value.value)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
::ActiveRecord::Base.send :include, RubyEnum::ActiveRecord::AttrEnum
|
data/lib/ruby_enum.rb
CHANGED
@@ -3,7 +3,6 @@ require "ruby_enum/version"
|
|
3
3
|
module RubyEnum
|
4
4
|
|
5
5
|
def self.included(base)
|
6
|
-
p base
|
7
6
|
# enmeration instances are singleton values
|
8
7
|
base.private_class_method(:new, :allocate)
|
9
8
|
base.send :extend, ClassMethods
|
@@ -130,3 +129,7 @@ module RubyEnum
|
|
130
129
|
end
|
131
130
|
end
|
132
131
|
end
|
132
|
+
|
133
|
+
if defined? Rails
|
134
|
+
require 'ruby_enum/active_record'
|
135
|
+
end
|
data/ruby_enum.gemspec
CHANGED
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_enum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0.beta
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lefteris Laskaridis
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.8'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.8'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '10.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 3.3.0
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 3.3.0
|
55
55
|
description: Implementation of a simple enumeration type for ruby
|
@@ -59,8 +59,8 @@ executables: []
|
|
59
59
|
extensions: []
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
|
-
- .gitignore
|
63
|
-
- .travis.yml
|
62
|
+
- ".gitignore"
|
63
|
+
- ".travis.yml"
|
64
64
|
- Gemfile
|
65
65
|
- Gemfile.lock
|
66
66
|
- LICENSE.txt
|
@@ -69,6 +69,7 @@ files:
|
|
69
69
|
- bin/console
|
70
70
|
- bin/setup
|
71
71
|
- lib/ruby_enum.rb
|
72
|
+
- lib/ruby_enum/active_record.rb
|
72
73
|
- lib/ruby_enum/rspec.rb
|
73
74
|
- lib/ruby_enum/version.rb
|
74
75
|
- ruby_enum.gemspec
|
@@ -82,17 +83,17 @@ require_paths:
|
|
82
83
|
- lib
|
83
84
|
required_ruby_version: !ruby/object:Gem::Requirement
|
84
85
|
requirements:
|
85
|
-
- -
|
86
|
+
- - ">="
|
86
87
|
- !ruby/object:Gem::Version
|
87
88
|
version: '0'
|
88
89
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
90
|
requirements:
|
90
|
-
- -
|
91
|
+
- - ">"
|
91
92
|
- !ruby/object:Gem::Version
|
92
|
-
version:
|
93
|
+
version: 1.3.1
|
93
94
|
requirements: []
|
94
95
|
rubyforge_project:
|
95
|
-
rubygems_version: 2.4.
|
96
|
+
rubygems_version: 2.4.6
|
96
97
|
signing_key:
|
97
98
|
specification_version: 4
|
98
99
|
summary: Simple enumeration type for ruby
|