ar-enums 1.0.0 → 2.0.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: c34a6a56500c6697165a3252f1509a54cbfee915
4
+ data.tar.gz: 88e8e2f99106d56c1c596cf758d7f80398bac27d
5
+ SHA512:
6
+ metadata.gz: f9bc984e495b93905ca602534a0248f405ec336db1d08318fef5ecb25111432e8a5c6430b4d39d5c9d68fdf201cd4dcbc8fde72f0b4cab051c8aee4411182250
7
+ data.tar.gz: 09f67c296f366917fcdecc0b5d2f99405517431e10ed815aa601c5a64564d2f7e208fdd0ca3fd7eb7386715d8b901173c00e8d8c09f5c72182df554ba3ef447a
data/.rbenv-version ADDED
@@ -0,0 +1 @@
1
+ 2.1.0
data/Gemfile.lock CHANGED
@@ -1,30 +1,40 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ar-enums (1.0.0)
4
+ ar-enums (2.0.0)
5
5
  activerecord (>= 3.1.0)
6
6
  rake
7
7
 
8
8
  GEM
9
9
  remote: http://rubygems.org/
10
10
  specs:
11
- activemodel (3.1.1)
12
- activesupport (= 3.1.1)
13
- builder (~> 3.0.0)
14
- i18n (~> 0.6)
15
- activerecord (3.1.1)
16
- activemodel (= 3.1.1)
17
- activesupport (= 3.1.1)
18
- arel (~> 2.2.1)
19
- tzinfo (~> 0.3.29)
20
- activesupport (3.1.1)
21
- multi_json (~> 1.0)
22
- arel (2.2.1)
23
- builder (3.0.0)
11
+ activemodel (4.1.4)
12
+ activesupport (= 4.1.4)
13
+ builder (~> 3.1)
14
+ activerecord (4.1.4)
15
+ activemodel (= 4.1.4)
16
+ activesupport (= 4.1.4)
17
+ arel (~> 5.0.0)
18
+ activesupport (4.1.4)
19
+ i18n (~> 0.6, >= 0.6.9)
20
+ json (~> 1.7, >= 1.7.7)
21
+ minitest (~> 5.1)
22
+ thread_safe (~> 0.1)
23
+ tzinfo (~> 1.1)
24
+ arel (5.0.1.20140414130214)
25
+ builder (3.2.2)
24
26
  diff-lcs (1.1.2)
25
- i18n (0.6.0)
26
- multi_json (1.0.3)
27
- rake (0.9.2.2)
27
+ guard (1.4.0)
28
+ listen (>= 0.4.2)
29
+ thor (>= 0.14.6)
30
+ guard-rspec (0.4.5)
31
+ guard (>= 0.4.0)
32
+ i18n (0.6.11)
33
+ json (1.8.1)
34
+ listen (0.5.3)
35
+ minitest (5.4.0)
36
+ rake (10.3.2)
37
+ rb-fsevent (0.9.3)
28
38
  rspec (2.4.0)
29
39
  rspec-core (~> 2.4.0)
30
40
  rspec-expectations (~> 2.4.0)
@@ -34,12 +44,17 @@ GEM
34
44
  diff-lcs (~> 1.1.2)
35
45
  rspec-mocks (2.4.0)
36
46
  sqlite3 (1.3.4)
37
- tzinfo (0.3.31)
47
+ thor (0.19.1)
48
+ thread_safe (0.3.4)
49
+ tzinfo (1.2.1)
50
+ thread_safe (~> 0.1)
38
51
 
39
52
  PLATFORMS
40
53
  ruby
41
54
 
42
55
  DEPENDENCIES
43
56
  ar-enums!
57
+ guard-rspec
58
+ rb-fsevent
44
59
  rspec
45
60
  sqlite3 (>= 1.3.4)
data/Guardfile ADDED
@@ -0,0 +1,21 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard 'rspec', :version => 2 do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+
9
+ # Rails example
10
+ watch(%r{^spec/.+_spec\.rb$})
11
+ watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
12
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
13
+ watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
14
+ watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
15
+ watch('spec/spec_helper.rb') { "spec" }
16
+ watch('config/routes.rb') { "spec/routing" }
17
+ watch('app/controllers/application_controller.rb') { "spec/controllers" }
18
+ # Capybara request specs
19
+ watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/requests/#{m[1]}_spec.rb" }
20
+ end
21
+
data/README.rdoc CHANGED
@@ -27,7 +27,7 @@ This is the simplest and probably the most frecuent case:
27
27
  tl.state_id # => 2
28
28
  tl.state.green? # => true
29
29
 
30
- As you can see each enum value is an instance of a dinamically generated class (which inherits from ActiveRecord::Enum) and has an ordinal value, id, autogenerated staring on 1.
30
+ As you can see each enum value is an instance of a dinamically generated class (which inherits from ArEnums::Base) and has an ordinal value, id, autogenerated staring on 1.
31
31
 
32
32
  The enumerations array is accessed with a class method:
33
33
 
@@ -69,7 +69,7 @@ the enumeration can be on it's own class, as the State enum in the following exa
69
69
  enum :state
70
70
  end
71
71
 
72
- class State < ActiveRecord::Enum
72
+ class State < ArEnums::Base
73
73
  enumeration do
74
74
  red :stop_traffic => true, :rgb => 0xF00, :desc => 'Rojo'
75
75
  green :stop_traffic => false, :rgb => 0x0F0, :desc => 'Verde'
data/ar_enums.gemspec CHANGED
@@ -18,6 +18,8 @@ Gem::Specification.new do |s|
18
18
  s.require_paths = ["lib"]
19
19
 
20
20
  s.add_development_dependency "rspec"
21
+ s.add_development_dependency "guard-rspec"
22
+ s.add_development_dependency "rb-fsevent"
21
23
  # s.add_development_dependency "ruby-debug19"
22
24
  s.add_development_dependency "sqlite3", ">= 1.3.4"
23
25
  s.add_dependency "activerecord", ">= 3.1.0"
data/lib/ar-enums.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  require 'active_record'
2
- %w[metaprogramming_extensions options_helper enum enum_block enum_field factory enum_definition].each do |f|
2
+ %w[metaprogramming_extensions options_helper base enum_block enum_field factory enum_definition].each do |f|
3
3
  require "ar_enums/#{f}"
4
4
  end
@@ -1,6 +1,6 @@
1
- module ActiveRecord
2
- class Enum
3
- extend ActiveRecord::Enumerations::OptionsHelper
1
+ module ArEnums
2
+ class Base
3
+ extend OptionsHelper
4
4
 
5
5
  attr_reader :id, :name, :extra_columns
6
6
  class_attribute :label_method
@@ -14,7 +14,7 @@ module ActiveRecord
14
14
  def self.create_from value, values, options
15
15
  required_attrs = case value
16
16
  when String, Symbol
17
- { :name => value }
17
+ { name: value }
18
18
  else
19
19
  value
20
20
  end
@@ -23,7 +23,7 @@ module ActiveRecord
23
23
  end
24
24
 
25
25
  def == other
26
- return id == other.id if other.is_a?(Enum)
26
+ return id == other.id if other.is_a?(Base)
27
27
  [id.to_s, name].include?(other.to_s)
28
28
  end
29
29
  alias_method :eql?, :==
@@ -41,8 +41,8 @@ module ActiveRecord
41
41
  end
42
42
 
43
43
  def self.enumeration *config, &block
44
- add_option config, :class_name => self
45
- define_enums_getter ActiveRecord::Enumerations::Factory.make_enums(*config, &block)
44
+ add_option config, class_name: self
45
+ define_enums_getter ArEnums::Factory.make_enums(*config, &block)
46
46
  end
47
47
 
48
48
  def self.[] name_or_id
@@ -1,18 +1,16 @@
1
- module ActiveRecord
2
- module Enumerations
3
- class EnumBlock
4
- def initialize enum_class, options = {}
5
- @enums = []
6
- @last_id = 0
7
- @enum_class = enum_class
8
- @options = options
9
- end
10
-
11
- def method_missing method, args = {}
12
- attrs = @options.merge(args).merge(:name => method)
13
- attrs[:id] ||= @last_id += 1
14
- @enums << @enum_class.new(attrs)
15
- end
1
+ module ArEnums
2
+ class EnumBlock
3
+ def initialize enum_class, options = {}
4
+ @enums = []
5
+ @last_id = 0
6
+ @enum_class = enum_class
7
+ @options = options
8
+ end
9
+
10
+ def method_missing method, args = {}
11
+ attrs = @options.merge(args).merge(:name => method)
12
+ attrs[:id] ||= @last_id += 1
13
+ @enums << @enum_class.new(attrs)
16
14
  end
17
15
  end
18
16
  end
@@ -1,21 +1,22 @@
1
- module ActiveRecord
2
- module Enumerations
1
+ module ArEnums
2
+ module EnumDefinition
3
3
  def self.included(base)
4
4
  base.send :extend, ClassMethods
5
5
  end
6
6
 
7
7
  module ClassMethods
8
- include ActiveRecord::Enumerations::OptionsHelper
8
+ include ArEnums::OptionsHelper
9
9
 
10
10
  def enum field_name, *config, &block
11
11
  field = EnumField.new field_name
12
- add_option config, :field => field, :active_record => self
12
+ add_option config, field: field, active_record: self
13
13
  enums = Factory.make_enums *config, &block
14
14
  define_enums_getter field, enums
15
15
  define_enum_getter_and_setter field, enums
16
16
  end
17
17
 
18
18
  private
19
+
19
20
  def asume_external_style field
20
21
  lambda { |options| external_class(field, options).all }
21
22
  end
@@ -41,4 +42,4 @@ module ActiveRecord
41
42
  end
42
43
  end
43
44
 
44
- ActiveRecord::Base.send :include, ActiveRecord::Enumerations
45
+ ActiveRecord::Base.send :include, ArEnums::EnumDefinition
@@ -1,23 +1,21 @@
1
- module ActiveRecord
2
- module Enumerations
3
- class EnumField
4
- attr_reader :name
5
-
6
- def initialize name
7
- @name = name.to_s
8
- end
9
-
10
- def enums_getter
11
- name.pluralize
12
- end
13
-
14
- def enums_setter
15
- "#{enums_getter}="
16
- end
17
-
18
- def foreign_key
19
- "#{name}_id"
20
- end
1
+ module ArEnums
2
+ class EnumField
3
+ attr_reader :name
4
+
5
+ def initialize name
6
+ @name = name.to_s
21
7
  end
8
+
9
+ def enums_getter
10
+ name.pluralize
11
+ end
12
+
13
+ def enums_setter
14
+ "#{enums_getter}="
15
+ end
16
+
17
+ def foreign_key
18
+ "#{name}_id"
19
+ end
22
20
  end
23
21
  end
@@ -1,82 +1,80 @@
1
- module ActiveRecord
2
- module Enumerations
3
- class Factory
4
- extend OptionsHelper
5
-
6
- def self.make_enums *config, &block
7
- values, options = extract_values_and_options config
8
- new(values, options, &block).make_enums
9
- end
10
-
11
- def initialize values, options, &block
12
- @values, @options, @block = values, options, block
13
- @active_record = @options.delete :active_record
14
- @field = @options.delete :field
15
- @class_name = @options.delete(:class_name) || @field.name.camelize
16
- @label_method = @options.delete(:label) || :desc
17
- end
1
+ module ArEnums
2
+ class Factory
3
+ extend OptionsHelper
18
4
 
19
- def make_enums
20
- enum_class.label_method = @label_method
21
- create_enums.tap do |enums|
22
- define_question_methods enums
23
- define_extra_columns_methods enums
24
- end
25
- end
26
-
27
- def enum_class
28
- @enum_class ||= eval_external_class || create_inner_enum_class
29
- end
5
+ def self.make_enums *config, &block
6
+ values, options = extract_values_and_options config
7
+ new(values, options, &block).make_enums
8
+ end
30
9
 
31
- private
32
- def eval_external_class
33
- @class_name.is_a?(String) || @class_name.is_a?(Symbol) ? @active_record.send(:compute_type, @class_name) : @class_name
34
- rescue NameError
35
- nil
36
- end
37
-
38
- def create_inner_enum_class
39
- @active_record.const_set @class_name, Class.new(Enum)
40
- end
41
-
42
- def create_enums
43
- if @block
44
- block_style
45
- elsif @values.any?
46
- array_of_values_or_hashes_style
47
- else
48
- enum_class.all
49
- end
10
+ def initialize values, options, &block
11
+ @values, @options, @block = values, options, block
12
+ @active_record = @options.delete :active_record
13
+ @field = @options.delete :field
14
+ @class_name = @options.delete(:class_name) || @field.name.camelize
15
+ @label_method = @options.delete(:label) || :desc
16
+ end
17
+
18
+ def make_enums
19
+ enum_class.label_method = @label_method
20
+ create_enums.tap do |enums|
21
+ define_question_methods enums
22
+ define_extra_columns_methods enums
50
23
  end
24
+ end
51
25
 
52
- def block_style
53
- EnumBlock.new(enum_class, @options).instance_eval(&@block)
54
- end
26
+ def enum_class
27
+ @enum_class ||= eval_external_class || create_inner_enum_class
28
+ end
29
+
30
+ private
31
+ def eval_external_class
32
+ @class_name.is_a?(String) || @class_name.is_a?(Symbol) ? @active_record.send(:compute_type, @class_name) : @class_name
33
+ rescue NameError
34
+ nil
35
+ end
55
36
 
56
- def array_of_values_or_hashes_style
57
- @values.map { |value| enum_class.create_from(value, @values, @options) }
37
+ def create_inner_enum_class
38
+ @active_record.const_set @class_name, Class.new(Base)
39
+ end
40
+
41
+ def create_enums
42
+ if @block
43
+ block_style
44
+ elsif @values.any?
45
+ array_of_values_or_hashes_style
46
+ else
47
+ enum_class.all
58
48
  end
59
-
60
- def define_question_methods enums
61
- enums.each do |e|
62
- enum_class.class_eval %Q{
63
- def #{e.name}?
64
- self == :#{e.name}
65
- end
66
- }
67
- end
49
+ end
50
+
51
+ def block_style
52
+ EnumBlock.new(enum_class, @options).instance_eval(&@block)
53
+ end
54
+
55
+ def array_of_values_or_hashes_style
56
+ @values.map { |value| enum_class.create_from(value, @values, @options) }
57
+ end
58
+
59
+ def define_question_methods enums
60
+ enums.each do |e|
61
+ enum_class.class_eval %Q{
62
+ def #{e.name}?
63
+ self == :#{e.name}
64
+ end
65
+ }
68
66
  end
69
-
70
- def define_extra_columns_methods enums
71
- extra_columns_names = enums.map(&:extra_columns).map(&:keys).flatten.uniq
72
- extra_columns_names.each do |ecn|
73
- enum_class.class_eval %Q{
74
- def #{ecn}
75
- extra_columns[:#{ecn}]
76
- end
77
- }
78
- end
67
+ end
68
+
69
+ def define_extra_columns_methods enums
70
+ extra_columns_names = enums.map(&:extra_columns).map(&:keys).flatten.uniq
71
+ extra_columns_names.each do |ecn|
72
+ enum_class.class_eval %Q{
73
+ def #{ecn}
74
+ extra_columns[:#{ecn}]
75
+ end
76
+ }
79
77
  end
80
78
  end
81
79
  end
82
- end
80
+ end
@@ -1,22 +1,20 @@
1
- module ActiveRecord
2
- module Enumerations
3
- module OptionsHelper
4
- def add_option config, option
5
- new_config = if config.first.is_a?(Array)
6
- [config[0], (config[1] || {}).merge(option)]
7
- else
8
- [(config[0] || {}).merge(option)]
9
- end
10
- config.replace new_config
1
+ module ArEnums
2
+ module OptionsHelper
3
+ def add_option config, option
4
+ new_config = if config.first.is_a?(Array)
5
+ [config[0], (config[1] || {}).merge(option)]
6
+ else
7
+ [(config[0] || {}).merge(option)]
11
8
  end
12
- alias_method :add_options, :add_option
13
-
14
- def extract_values_and_options config
15
- if config.first.is_a?(Array)
16
- [config[0], config[1] || {}]
17
- else
18
- [[], config[0] || {}]
19
- end
9
+ config.replace new_config
10
+ end
11
+ alias_method :add_options, :add_option
12
+
13
+ def extract_values_and_options config
14
+ if config.first.is_a?(Array)
15
+ [config[0], config[1] || {}]
16
+ else
17
+ [[], config[0] || {}]
20
18
  end
21
19
  end
22
20
  end
@@ -1,3 +1,3 @@
1
1
  module ArEnums
2
- VERSION = "1.0.0"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -2,42 +2,42 @@ require File.expand_path('../spec_helper', File.dirname(__FILE__))
2
2
 
3
3
  describe "Enum" do
4
4
  it "should provide :to_sym method returning name as symbols" do
5
- ActiveRecord::Enum.new(:name => :green).to_sym.should == :green
5
+ ArEnums::Base.new(name: :green).to_sym.should == :green
6
6
  end
7
7
 
8
8
  it "should store extra columns as a hash without the :enum_class that is passed from other classes" do
9
- ActiveRecord::Enum.new(:name => :green, :factor => 1.5, :enum_class => Class.new).extra_columns.should == { :factor => 1.5 }
9
+ ArEnums::Base.new(name: :green, factor: 1.5, enum_class: Class.new).extra_columns.should == { factor: 1.5 }
10
10
  end
11
11
 
12
12
  context "External enums" do
13
13
  before do
14
- define_model_class 'Color', 'ActiveRecord::Enum' do
14
+ define_model_class 'Color', 'ArEnums::Base' do
15
15
  enumeration do
16
- red :rgb => 0xF00
17
- green :rgb => 0x0F0
18
- blue :rgb => 0x00F
16
+ red rgb: 0xF00
17
+ green rgb: 0x0F0
18
+ blue rgb: 0x00F
19
19
  end
20
20
  end
21
21
 
22
- define_model_class 'State', 'ActiveRecord::Enum' do
22
+ define_model_class 'State', 'ArEnums::Base' do
23
23
  enumeration do
24
- on :id => 80
25
- off :id => 90
24
+ on id: 80
25
+ off id: 90
26
26
  end
27
27
  end
28
28
  end
29
29
 
30
30
  it "should provide :all method to access the enums" do
31
- Color.all[0].should be_enum_with(:name => 'red', :rgb => 0xF00)
32
- Color.all[1].should be_enum_with(:name => 'green', :rgb => 0x0F0)
33
- State.all[0].should be_enum_with(:name => 'on', :id => 80)
34
- State.all[1].should be_enum_with(:name => 'off', :id => 90)
31
+ Color.all[0].should be_enum_with(name: 'red', rgb: 0xF00)
32
+ Color.all[1].should be_enum_with(name: 'green', rgb: 0x0F0)
33
+ State.all[0].should be_enum_with(name: 'on', id: 80)
34
+ State.all[1].should be_enum_with(name: 'off', id: 90)
35
35
  end
36
36
 
37
37
  it "should provide [] method to access the enums" do
38
- Color[:red].should be_enum_with(:name => 'red')
39
- Color['green'].should be_enum_with(:name => 'green')
40
- Color[2].should be_enum_with(:name => 'green')
38
+ Color[:red].should be_enum_with(name: 'red')
39
+ Color['green'].should be_enum_with(name: 'green')
40
+ Color[2].should be_enum_with(name: 'green')
41
41
  end
42
42
  end
43
43
 
@@ -50,11 +50,11 @@ describe "Enum" do
50
50
  end
51
51
 
52
52
  it "in? should check if == to any" do
53
- define_model_class 'Color', 'ActiveRecord::Enum' do
53
+ define_model_class 'Color', 'ArEnums::Base' do
54
54
  enumeration do
55
- red :rgb => 0xF00
56
- green :rgb => 0x0F0
57
- blue :rgb => 0x00F
55
+ red rgb: 0xF00
56
+ green rgb: 0x0F0
57
+ blue rgb: 0x00F
58
58
  end
59
59
  end
60
60
 
@@ -83,7 +83,7 @@ end
83
83
 
84
84
  describe "External enumerations" do
85
85
  before do
86
- define_model_class 'State', 'ActiveRecord::Enum' do
86
+ define_model_class 'State', 'ArEnums::Base' do
87
87
  enumeration do
88
88
  ca
89
89
  tx
@@ -94,7 +94,7 @@ describe "External enumerations" do
94
94
  enum :state
95
95
  end
96
96
 
97
- define_model_class 'TrafficLightState', 'ActiveRecord::Enum' do
97
+ define_model_class 'TrafficLightState', 'ArEnums::Base' do
98
98
  enumeration do
99
99
  green :rgb => 0x0F0
100
100
  red :rgb => 0xF00
@@ -130,7 +130,7 @@ describe "External enumerations" do
130
130
  end
131
131
 
132
132
  it "should be posible to define new methods in Enum subclass" do
133
- define_model_class 'State', 'ActiveRecord::Enum' do
133
+ define_model_class 'State', 'ArEnums::Base' do
134
134
  enumeration do
135
135
  green :factor => 1
136
136
  red :factor => 2
@@ -1,19 +1,19 @@
1
1
  require File.expand_path('../spec_helper', File.dirname(__FILE__))
2
2
 
3
3
  describe "Enums creation styles" do
4
- include ActiveRecord::Enumerations::OptionsHelper
4
+ include ArEnums::OptionsHelper
5
5
 
6
6
  def make_enums *config, &block
7
- add_option config, :class_name => ActiveRecord::Enum
8
- ActiveRecord::Enumerations::Factory.make_enums *config, &block
7
+ add_option config, class_name: ArEnums::Base
8
+ ArEnums::Factory.make_enums *config, &block
9
9
  end
10
10
 
11
11
  context "array of values style" do
12
12
  it "should generate ids" do
13
13
  enums = make_enums %w[red green blue]
14
- enums[0].should be_enum_with(:id => 1, :name => 'red')
15
- enums[1].should be_enum_with(:id => 2, :name => 'green')
16
- enums[2].should be_enum_with(:id => 3, :name => 'blue')
14
+ enums[0].should be_enum_with(id: 1, name: 'red')
15
+ enums[1].should be_enum_with(id: 2, name: 'green')
16
+ enums[2].should be_enum_with(id: 3, name: 'blue')
17
17
  end
18
18
 
19
19
  it "default to_s should be name titleized" do
@@ -21,42 +21,42 @@ describe "Enums creation styles" do
21
21
  end
22
22
 
23
23
  it "should override default to_s" do
24
- make_enums(%w[green red], :label => :upcase).map(&:to_s).should == %w[GREEN RED]
24
+ make_enums(%w[green red], label: :upcase).map(&:to_s).should == %w[GREEN RED]
25
25
  end
26
26
  end
27
27
 
28
28
  context "array of hashes style" do
29
29
  it "should accept ids if provided" do
30
- enums = make_enums [{ :id => 20, :name => :red }, { :id => 10, :name => :green }]
31
- enums[0].should be_enum_with(:id => 20, :name => 'red')
32
- enums[1].should be_enum_with(:id => 10, :name => 'green')
30
+ enums = make_enums [{ id: 20, name: :red }, { id: 10, name: :green }]
31
+ enums[0].should be_enum_with(id: 20, name: 'red')
32
+ enums[1].should be_enum_with(id: 10, name: 'green')
33
33
  end
34
34
 
35
35
  it "should generate ids if not provided" do
36
- enums = make_enums [{ :name => :red }, { :name => :green }]
37
- enums[0].should be_enum_with(:id => 1, :name => 'red')
38
- enums[1].should be_enum_with(:id => 2, :name => 'green')
36
+ enums = make_enums [{ name: :red }, { name: :green }]
37
+ enums[0].should be_enum_with(id: 1, name: 'red')
38
+ enums[1].should be_enum_with(id: 2, name: 'green')
39
39
  end
40
40
 
41
41
  it "default to_s should be :desc column" do
42
- enums = make_enums [{ :name => :red, :desc => 'Rojo' }, { :name => :green, :desc => 'Verde' }]
42
+ enums = make_enums [{ name: :red, desc: 'Rojo' }, { name: :green, desc: 'Verde' }]
43
43
  enums.map(&:to_s).should == %w[Rojo Verde]
44
44
  end
45
45
 
46
46
  it ":label options can be a method to call on name" do
47
- enums = make_enums [{ :name => :red }, { :name => :green }], :label => :upcase
47
+ enums = make_enums [{ name: :red }, { name: :green }], label: :upcase
48
48
  enums.map(&:to_s).should == %w[RED GREEN]
49
49
  end
50
50
 
51
51
  it ":label option can be a enum column" do
52
- enums = make_enums [{ :name => :red, :title => 'Rojo' }, { :name => :green, :title => 'Verde' }], :label => :title
52
+ enums = make_enums [{ name: :red, title: 'Rojo' }, { name: :green, title: 'Verde' }], label: :title
53
53
  enums.map(&:to_s).should == %w[Rojo Verde]
54
54
  end
55
55
 
56
56
  it "should accept extra columns" do
57
57
  enums = make_enums [
58
- { :name => :red, :factor => 1.5, :stop_traffic => true },
59
- { :name => :green, :factor => 2.5, :stop_traffic => false }
58
+ { name: :red, factor: 1.5, stop_traffic: true },
59
+ { name: :green, factor: 2.5, stop_traffic: false }
60
60
  ]
61
61
  enums.map(&:factor).should == [1.5, 2.5]
62
62
  enums.map(&:stop_traffic).should == [true, false]
@@ -66,32 +66,32 @@ describe "Enums creation styles" do
66
66
  context "block style" do
67
67
  it "can be created with a block" do
68
68
  enums = make_enums do
69
- red :rgb => 0xF00
70
- green :rgb => 0x0F0
69
+ red rgb: 0xF00
70
+ green rgb: 0x0F0
71
71
  end
72
- enums[0].should be_enum_with(:id => 1, :name => 'red', :rgb => 0xF00)
73
- enums[1].should be_enum_with(:id => 2, :name => 'green', :rgb => 0x0F0)
72
+ enums[0].should be_enum_with(id: 1, name: 'red', rgb: 0xF00)
73
+ enums[1].should be_enum_with(id: 2, name: 'green', rgb: 0x0F0)
74
74
  end
75
75
 
76
76
  it "should accept :label option" do
77
- enums = make_enums :label => :title do
78
- red :title => 'Rojo'
79
- green :title => 'Verde'
77
+ enums = make_enums label: :title do
78
+ red title: 'Rojo'
79
+ green title: 'Verde'
80
80
  end
81
81
  enums.map(&:to_s).should == %w[Rojo Verde]
82
82
  end
83
83
 
84
84
  it "should accept extra columns" do
85
85
  enums = make_enums do
86
- red :factor => 1.5
87
- green :factor => 2.5
86
+ red factor: 1.5
87
+ green factor: 2.5
88
88
  end
89
89
  enums.map(&:factor).should == [1.5, 2.5]
90
90
  end
91
91
 
92
92
  it "when extra column is empty should return nil" do
93
93
  enums = make_enums do
94
- red :factor => 1.5
94
+ red factor: 1.5
95
95
  green
96
96
  end
97
97
  enums.map(&:factor).should == [1.5, nil]
data/spec/spec_helper.rb CHANGED
@@ -17,7 +17,7 @@ end
17
17
 
18
18
  RSpec::Matchers.define :be_enum_with do |expected_attrs|
19
19
  match do |enum|
20
- enum.should be_a(ActiveRecord::Enum)
20
+ enum.should be_a(ArEnums::Base)
21
21
  expected_attrs.each do |atrib, expected_value|
22
22
  enum.send(atrib).should == expected_value
23
23
  end
metadata CHANGED
@@ -1,60 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ar-enums
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
5
- prerelease:
4
+ version: 2.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Emmanuel Nicolau
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2011-11-09 00:00:00.000000000 Z
11
+ date: 2014-07-25 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rspec
16
- requirement: &70273332269460 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
- version_requirements: *70273332269460
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: guard-rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rb-fsevent
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
25
55
  - !ruby/object:Gem::Dependency
26
56
  name: sqlite3
27
- requirement: &70273332268960 !ruby/object:Gem::Requirement
28
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
29
58
  requirements:
30
- - - ! '>='
59
+ - - ">="
31
60
  - !ruby/object:Gem::Version
32
61
  version: 1.3.4
33
62
  type: :development
34
63
  prerelease: false
35
- version_requirements: *70273332268960
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 1.3.4
36
69
  - !ruby/object:Gem::Dependency
37
70
  name: activerecord
38
- requirement: &70273332268460 !ruby/object:Gem::Requirement
39
- none: false
71
+ requirement: !ruby/object:Gem::Requirement
40
72
  requirements:
41
- - - ! '>='
73
+ - - ">="
42
74
  - !ruby/object:Gem::Version
43
75
  version: 3.1.0
44
76
  type: :runtime
45
77
  prerelease: false
46
- version_requirements: *70273332268460
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 3.1.0
47
83
  - !ruby/object:Gem::Dependency
48
84
  name: rake
49
- requirement: &70273332268080 !ruby/object:Gem::Requirement
50
- none: false
85
+ requirement: !ruby/object:Gem::Requirement
51
86
  requirements:
52
- - - ! '>='
87
+ - - ">="
53
88
  - !ruby/object:Gem::Version
54
89
  version: '0'
55
90
  type: :runtime
56
91
  prerelease: false
57
- version_requirements: *70273332268080
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
58
97
  description:
59
98
  email:
60
99
  - emmanicolau@gmail.com
@@ -62,12 +101,13 @@ executables: []
62
101
  extensions: []
63
102
  extra_rdoc_files: []
64
103
  files:
65
- - .autotest
66
- - .gitignore
67
- - .rspec
68
- - .rvmrc
104
+ - ".autotest"
105
+ - ".gitignore"
106
+ - ".rbenv-version"
107
+ - ".rspec"
69
108
  - Gemfile
70
109
  - Gemfile.lock
110
+ - Guardfile
71
111
  - LICENSE
72
112
  - README.rdoc
73
113
  - Rakefile
@@ -75,7 +115,7 @@ files:
75
115
  - autotest/discover.rb
76
116
  - examples/internal_enums.rb
77
117
  - lib/ar-enums.rb
78
- - lib/ar_enums/enum.rb
118
+ - lib/ar_enums/base.rb
79
119
  - lib/ar_enums/enum_block.rb
80
120
  - lib/ar_enums/enum_definition.rb
81
121
  - lib/ar_enums/enum_field.rb
@@ -83,44 +123,37 @@ files:
83
123
  - lib/ar_enums/metaprogramming_extensions.rb
84
124
  - lib/ar_enums/options_helper.rb
85
125
  - lib/ar_enums/version.rb
126
+ - spec/ar_enums/base_spec.rb
86
127
  - spec/ar_enums/enum_definition_spec.rb
87
- - spec/ar_enums/enum_spec.rb
88
128
  - spec/ar_enums/factory_spec.rb
89
129
  - spec/schema.rb
90
130
  - spec/spec_helper.rb
91
131
  homepage:
92
132
  licenses: []
133
+ metadata: {}
93
134
  post_install_message:
94
135
  rdoc_options: []
95
136
  require_paths:
96
137
  - lib
97
138
  required_ruby_version: !ruby/object:Gem::Requirement
98
- none: false
99
139
  requirements:
100
- - - ! '>='
140
+ - - ">="
101
141
  - !ruby/object:Gem::Version
102
142
  version: '0'
103
- segments:
104
- - 0
105
- hash: -209326541352629550
106
143
  required_rubygems_version: !ruby/object:Gem::Requirement
107
- none: false
108
144
  requirements:
109
- - - ! '>='
145
+ - - ">="
110
146
  - !ruby/object:Gem::Version
111
147
  version: '0'
112
- segments:
113
- - 0
114
- hash: -209326541352629550
115
148
  requirements: []
116
149
  rubyforge_project: ar-enums
117
- rubygems_version: 1.8.10
150
+ rubygems_version: 2.4.1
118
151
  signing_key:
119
- specification_version: 3
152
+ specification_version: 4
120
153
  summary: Provides a simple way for defining enumerations in ActiveRecord models
121
154
  test_files:
155
+ - spec/ar_enums/base_spec.rb
122
156
  - spec/ar_enums/enum_definition_spec.rb
123
- - spec/ar_enums/enum_spec.rb
124
157
  - spec/ar_enums/factory_spec.rb
125
158
  - spec/schema.rb
126
159
  - spec/spec_helper.rb
data/.rvmrc DELETED
@@ -1 +0,0 @@
1
- rvm 1.9.3-p0