modalh 1.1.1 → 1.1.2

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.1
1
+ 1.1.2
@@ -9,36 +9,57 @@ module H
9
9
  module ActiveRecordExtensions
10
10
 
11
11
  # Generic H field declarator
12
- def _h(prefix, attr, *options)
12
+ def _h(prefix, attr, *args)
13
13
 
14
- instance_variable_set :"@#{attr}_h_options", options
14
+ options = args.extract_options!
15
+ actual_attr = options.delete(:attribute) || attr
16
+ args << options unless options.empty?
17
+
18
+ instance_variable_set :"@#{attr}_h_options", args
15
19
 
16
20
  class_eval do
17
21
 
18
- validates_each attr do |record, attr_name, value|
19
- record.errors.add attr_name.to_s if record.send(:"#{attr_name}_h_invalid?")
22
+ validates_each actual_attr do |record, attr_name, value|
23
+ if attr_name.to_s==actual_attr.to_s && record.send(:"#{attr}_h_invalid?")
24
+ record.errors.add attr_name.to_s
25
+ end
26
+ end
27
+
28
+ if attr != actual_attr
29
+ define_method :"#{attr}" do
30
+ self.send :"#{actual_attr}"
31
+ end
32
+ define_method :"#{attr}=" do |v|
33
+ self.send :"#{actual_attr}=", v
34
+ end
20
35
  end
21
36
 
22
- # attr=(v)
23
- define_method :"#{attr}=" do |v|
24
- write_attribute attr, v
25
- instance_variable_set "@#{attr}_h", nil
37
+ if method_defined?(:"#{actual_attr}=")
38
+ define_method :"#{actual_attr}_with_#{prefix}_h=" do |v|
39
+ send :"#{actual_attr}_without_#{prefix}_h=", v
40
+ instance_variable_set "@#{attr}_h", nil
41
+ end
42
+ alias_method_chain :"#{actual_attr}=", :"#{prefix}_h"
43
+ else
44
+ define_method :"#{actual_attr}=" do |v|
45
+ write_attribute actual_attr, v
46
+ instance_variable_set "@#{attr}_h", nil
47
+ end
26
48
  end
27
49
 
28
50
  # attr_h
29
51
  define_method :"#{attr}_h" do
30
- # don't cache it, because the locale may change
31
- # unless instance_variable_defined? "@#{attr}_h"
32
- instance_variable_set "@#{attr}_h", H.send(:"#{prefix}_to", send(attr), *self.class.instance_variable_get(:"@#{attr}_h_options"))
33
- # end
34
- instance_variable_get "@#{attr}_h"
52
+ unless (instance_variable_defined? "@#{attr}_h") && (h=instance_variable_get("@#{attr}_h")) && instance_variable_get("@#{attr}_h_locale")==I18n.locale
53
+ h = H.send(:"#{prefix}_to", send(attr), *self.class.instance_variable_get(:"@#{attr}_h_options"))
54
+ instance_variable_set "@#{attr}_h", h
55
+ instance_variable_set "@#{attr}_h_locale", I18n.locale
56
+ end
57
+ h
35
58
  end
36
59
 
37
60
  # attr_h=(txt)
38
61
  define_method :"#{attr}_h=" do |txt|
39
- instance_variable_set "@#{attr}_h", txt
40
62
  instance_variable_set "@#{attr}_h_invalid", false
41
- write_attribute attr, nil
42
63
  unless txt.blank?
43
64
  begin
44
65
  v = H.send(:"#{prefix}_from", txt, *self.class.instance_variable_get(:"@#{attr}_h_options"))
@@ -48,6 +69,8 @@ module H
48
69
  instance_variable_set "@#{attr}_h_invalid", true if v.nil?
49
70
  end
50
71
  send :"#{attr}=", v
72
+ instance_variable_set "@#{attr}_h", txt
73
+ instance_variable_set "@#{attr}_h_locale", I18n.locale
51
74
  end
52
75
 
53
76
  # attr_h? (returns true if it is valid and not blank)
data/modalh.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "modalh"
8
- s.version = "1.1.1"
8
+ s.version = "1.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Javier Goizueta"]
12
- s.date = "2012-05-10"
12
+ s.date = "2012-05-12"
13
13
  s.description = "Rails plugin for localization & delocalization of data values"
14
14
  s.email = "jgoizueta@gmail.com"
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: modalh
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-10 00:00:00.000000000 Z
12
+ date: 2012-05-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: units-system
@@ -162,7 +162,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
162
162
  version: '0'
163
163
  segments:
164
164
  - 0
165
- hash: -1742349848663810765
165
+ hash: 2367165293756376042
166
166
  required_rubygems_version: !ruby/object:Gem::Requirement
167
167
  none: false
168
168
  requirements: