yinum 1.7.3 → 1.7.4

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: 2c63699e6b2f39a6fafb079fa52596f79bdbf58e
4
- data.tar.gz: 3693827578af653b27489c630592b995829f7e3e
3
+ metadata.gz: 9bfe06e2e4c74e29a8558790e3fd3cbb7e9c0d88
4
+ data.tar.gz: f056d6709135cb56989fe410604294e338501c61
5
5
  SHA512:
6
- metadata.gz: 40532b803d520af6ad8a9543ad15c76089a1ad32cfa627cdf9d143a3f6d44e59c2d3b12808d9068cea538d064c386c2ef1d510048193afe1d5bac3f13ca55073
7
- data.tar.gz: 561be7c18be076fd5ca2500b4fc76e57604ac36827d255afe1a7cbda267d0a8571a2df1fd58ed55031e6c76f18a0620905319e92bde1736cb798c5913376aed7
6
+ metadata.gz: c506d7599bc89186de7cd08a82b190cbd1c8ea15a50d2be068aa28301ad3454a2f0db3dc54de1189f705d005e45158091551760227574ed2e66a39353c5fbfe1
7
+ data.tar.gz: bfb8f3e6a05abb31a3c690da0fde44f42fcf84f5dabb58b72c2e2129ac8e4d4b080406857c557ee66738204a17bb15ba97feb2b7d2896e7c91891cc4ea7cdd25
data/CHANGELOG.md CHANGED
@@ -16,3 +16,7 @@
16
16
  **1.7.3**
17
17
  * `attr_enum`'s writer to accept empty string.
18
18
  * `attr_enum`'s qualifier option to use the object's `#send` rather than `#[]`.
19
+
20
+ **1.7.4**
21
+ * `attr_enum`'s reader allows super to hold the name etc.
22
+ * Add `#attr_enum` and `#enum` only to modules and classes (not any instance).
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- yinum (1.7.3)
4
+ yinum (1.7.4)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
@@ -19,12 +19,16 @@ module Enum::Helpers::EnumAttribute
19
19
  e = const_get(name_or_enum)
20
20
  end
21
21
  # attribute reader
22
- define_method(attr) { v = super(); (v.nil? or not e.values.include?(v)) ? Enum::EnumValue.new(e, v) : e[v] }
22
+ define_method(attr) do
23
+ v = super()
24
+ (ev = e.get(v)).nil? ? Enum::EnumValue.new(e, v) : ev
25
+ end
23
26
  # attribute writer
24
27
  define_method("#{attr}=") do |v|
25
- if v.enum_value?
28
+ case
29
+ when v.enum_value?
26
30
  super(v.value)
27
- elsif v.nil? or v == "" # might be received from forms
31
+ when v.nil?, v == "" # might be received from forms
28
32
  super(v)
29
33
  else
30
34
  super(e[v].value)
@@ -42,6 +46,7 @@ module Enum::Helpers::EnumAttribute
42
46
  end
43
47
  end
44
48
 
45
- class Object
46
- extend Enum::Helpers::EnumAttribute
49
+ # Every module or class shall have it
50
+ class Module
51
+ include Enum::Helpers::EnumAttribute
47
52
  end
@@ -6,6 +6,7 @@ module Enum::Helpers::EnumGenerator
6
6
  end
7
7
  end
8
8
 
9
- class Object
9
+ # Every module or class shall have it
10
+ class Module
10
11
  include Enum::Helpers::EnumGenerator
11
12
  end
data/lib/enum/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Enum
2
- VERSION = '1.7.3'
2
+ VERSION = '1.7.4'
3
3
  end
data/lib/enum.rb CHANGED
@@ -29,12 +29,17 @@ class Enum
29
29
  end
30
30
 
31
31
  def [](*name_or_values)
32
- return name_or_values.map { |name_or_value| self[name_or_value] } if name_or_values.length > 1
32
+ return name_or_values.map { |name_or_value| get(name_or_value) } if name_or_values.length > 1
33
33
 
34
34
  name_or_value = name_or_values.first
35
- ev = @by_name_s[name_or_value.to_s] || @by_value_s[name_or_value.to_s]
36
- raise "#{inspect} does not know #{name_or_value.inspect}" if ev.nil?
37
- ev
35
+ get(name_or_value) or raise "#{inspect} does not know #{name_or_value.inspect}"
36
+ end
37
+
38
+ def get(*name_or_values)
39
+ return name_or_values.map { |name_or_value| get(name_or_value) } if name_or_values.length > 1
40
+
41
+ name_or_value = name_or_values.first
42
+ @by_name_s[name_or_value.to_s] || @by_value_s[name_or_value.to_s]
38
43
  end
39
44
 
40
45
  def options
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yinum
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.3
4
+ version: 1.7.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oded Niv