ar-enums 1.0.0 → 2.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: 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