yinum 2.1.0 → 2.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8c450598a4dcf89038e0691a37b91587dc5fe9cf
4
- data.tar.gz: 6fff7a2b55d125bd61fa1bae626fb58f9792edaf
3
+ metadata.gz: c5f981118e63240ce752016306f552b599ed1c75
4
+ data.tar.gz: 5d3452a2d2417ab36550d5bc624410c690da840c
5
5
  SHA512:
6
- metadata.gz: 0dd0e387e139a4a0b14ad32ac2fe60a171620ff7a56c0e2c65bdd8a5a5b11586dfa691c4cfda9c2cc020360e9c7ea5034cb57a1ad193e5a07739b144ac10659a
7
- data.tar.gz: 8066897d9d060b68c3b10ab3e9b4a52f9965b5a8e5c954cbacae5828fbede143aca8c7eb3465d7dc8c15eb9d81781ed5ae27e2cdee9f7ab94ab42b0c64bbc4c9
6
+ metadata.gz: 836af7a5e9d795160e14bb0b312e6335f241d2568f35cf64165abc566b6635467f289b3578b720684cb704fce8bd9c17a46f60f2914017d2632369ba88e01ef5
7
+ data.tar.gz: 6b52268a70a4c68a3a8cb4d1c14ddf194aee6d0bbcb1b0c56caa1d368f17bfa0b62ff3882df4add8ee53bc2e1ddf64b7f2617586d52529dde7d505b9438cf46c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ **2.2.0**
2
+ * `EnumValue` compares to strings.
3
+
1
4
  **2.1.0**
2
5
  * Use generate_method in attr_enum. This is backward incompatible for using
3
6
  attr_enum on accessors defined on the class level. Use modules.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- yinum (2.1.0)
4
+ yinum (2.2.0)
5
5
  generate_method (~> 1.0)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -274,7 +274,12 @@ Car.where(:color => Car::COLORS.red) # good
274
274
  ```
275
275
 
276
276
  You may use the EnumValue object for anything, but don't get smart using the key.
277
- If the EnumValue doesn't work in a spot, use #name (in `options_for_select`) or #value (in `update_all`).
277
+
278
+ If the EnumValue proxy doesn't work in a specific situation (when the gem is not following the [duck typing](http://en.wikipedia.org/wiki/Duck_typing) rules), you can use `#value` (in `update_all` or `validates_uniqueness_of`):
279
+
280
+ ```ruby
281
+ Car.update_all(:color => Car::COLORS.red.value)
282
+ ```
278
283
 
279
284
  ## Also
280
285
 
@@ -9,6 +9,8 @@ class Enum::EnumValue < BasicObject
9
9
 
10
10
  def initialize(enum, name = nil, value)
11
11
  @enum, @name, @value = enum, name, value
12
+ @name_s = @name.to_s if @name
13
+ @value_s = @value.to_s
12
14
  end
13
15
 
14
16
  def enum_value?
@@ -18,26 +20,26 @@ class Enum::EnumValue < BasicObject
18
20
  def inspect
19
21
  return @value.inspect if @name.nil?
20
22
 
21
- "#{@enum.to_s}.#{@name}"
23
+ "#{@enum.to_s}.#{@name_s}"
22
24
  end
23
25
 
24
26
  def ==(other)
25
- return @value == other if @name.nil?
27
+ return true if @value == other or @value_s == other
26
28
 
27
- @name == other or @value == other
29
+ not @name.nil? and (@name == other or @name_s == other)
28
30
  end
29
31
 
30
32
  def ===(other)
31
- return @value === other if @name.nil?
33
+ return true if @value === other or @value_s === other
32
34
 
33
- @name === other or @value === other
35
+ not @name.nil? and (@name === other or @name_s === other)
34
36
  end
35
37
 
36
38
  def t(options = {})
37
39
  return @value.t(options) if @name.nil?
38
40
  if not defined?(::I18n)
39
- if @name.to_s.respond_to?(:titleize)
40
- return @name.to_s.titleize
41
+ if @name_s.respond_to?(:titleize)
42
+ return @name_s.titleize
41
43
  else
42
44
  raise NotImplementedError, "I18n and String#titleize are not available"
43
45
  end
@@ -57,7 +59,7 @@ class Enum::EnumValue < BasicObject
57
59
  # but if not, use without
58
60
  { scope: scope_without_klass,
59
61
  # but! if not, return titleize or scope with klass error
60
- default: @name.to_s.respond_to?(:titleize) ? @name.to_s.titleize : ::I18n.t(
62
+ default: @name_s.respond_to?(:titleize) ? @name_s.titleize : ::I18n.t(
61
63
  @name,
62
64
  { scope: scope_with_klass
63
65
  }.merge(options)
@@ -70,7 +72,7 @@ class Enum::EnumValue < BasicObject
70
72
  ::I18n.t(
71
73
  @name,
72
74
  { scope: scope_without_klass,
73
- default: (@name.to_s.titleize if @name.to_s.respond_to?(:titleize))
75
+ default: (@name_s.titleize if @name_s.respond_to?(:titleize))
74
76
  }.merge(options)
75
77
  )
76
78
  end
data/lib/enum/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Enum
2
- VERSION = '2.1.0'
2
+ VERSION = '2.2.0'
3
3
  end
@@ -25,13 +25,21 @@ describe Enum::EnumValue do
25
25
  subject(:enum) { Enum.new(:MY_COLORS, :red => 1, :blue => 2) }
26
26
 
27
27
  its(:red) { should == 1 }
28
+ its(:red) { should == '1' }
28
29
  its(:blue) { should_not == 1 }
30
+ its(:blue) { should_not == '1' }
29
31
  its(:red) { should == :red }
32
+ its(:red) { should == 'red' }
30
33
  its(:blue) { should_not == :red }
34
+ its(:blue) { should_not == 'red' }
31
35
  its(:red) { should === 1 }
36
+ its(:red) { should === '1' }
32
37
  its(:blue) { should_not === 1 }
38
+ its(:blue) { should_not === '1' }
33
39
  its(:red) { should === :red }
40
+ its(:red) { should === 'red' }
34
41
  its(:blue) { should_not === :red }
42
+ its(:blue) { should_not === 'red' }
35
43
  its(:red) { should be_red }
36
44
  its(:blue) { should_not be_red }
37
45
  specify { enum.red.object_id.should == enum[:red].object_id }
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yinum
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oded Niv
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-20 00:00:00.000000000 Z
11
+ date: 2015-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: generate_method
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.0'
20
20
  type: :runtime
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.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '2.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: '2.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: nil_or
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '2.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: '2.0'
55
55
  description: Yummy implementation of enum that gives integer values with a special
@@ -60,8 +60,8 @@ executables: []
60
60
  extensions: []
61
61
  extra_rdoc_files: []
62
62
  files:
63
- - .gitignore
64
- - .rspec
63
+ - ".gitignore"
64
+ - ".rspec"
65
65
  - CHANGELOG.md
66
66
  - Gemfile
67
67
  - Gemfile.lock
@@ -94,12 +94,12 @@ require_paths:
94
94
  - lib
95
95
  required_ruby_version: !ruby/object:Gem::Requirement
96
96
  requirements:
97
- - - '>='
97
+ - - ">="
98
98
  - !ruby/object:Gem::Version
99
99
  version: '0'
100
100
  required_rubygems_version: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - '>='
102
+ - - ">="
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
105
  requirements: []