typed_attributes 0.0.1 → 0.0.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/lib/typed_attributes.rb +14 -9
- metadata +4 -4
data/lib/typed_attributes.rb
CHANGED
@@ -8,15 +8,12 @@ module TypedAttributes
|
|
8
8
|
caster = type_caster_by_name(type_name).new(self, attr, options)
|
9
9
|
caster.readers.each do |reader|
|
10
10
|
define_method reader do
|
11
|
-
|
12
|
-
|
13
|
-
value = options[:default]
|
14
|
-
instance_variable_set(caster.storage_var, value)
|
11
|
+
unless instance_variable_defined?(caster.storage_var)
|
12
|
+
instance_variable_set(caster.storage_var, options[:default])
|
15
13
|
end
|
16
|
-
|
14
|
+
instance_variable_get(caster.storage_var)
|
17
15
|
end
|
18
16
|
end
|
19
|
-
true
|
20
17
|
end
|
21
18
|
|
22
19
|
def field_writer(attr, type_name, options = {})
|
@@ -26,18 +23,26 @@ module TypedAttributes
|
|
26
23
|
instance_variable_set(caster.storage_var, caster.parse(value))
|
27
24
|
end
|
28
25
|
end
|
29
|
-
true
|
30
26
|
end
|
31
27
|
|
32
28
|
def field_accessor(attr, type_name, options = {})
|
33
29
|
field_reader(attr, type_name, options)
|
34
30
|
field_writer(attr, type_name, options)
|
35
|
-
true
|
36
31
|
end
|
37
32
|
|
38
33
|
private
|
39
34
|
def type_caster_by_name(type_name)
|
40
|
-
|
35
|
+
case type_name
|
36
|
+
when Class
|
37
|
+
unless type_name < TypedAttributes::Parser::BaseType
|
38
|
+
raise ArgumentError.new 'Supplied type does not inherit from TypedAttributes::Parser::BaseType'
|
39
|
+
end
|
40
|
+
type_name
|
41
|
+
when Symbol, String
|
42
|
+
TypedAttributes::Parser.const_get(type_name.to_s.camelize + 'Type')
|
43
|
+
else
|
44
|
+
raise ArgumentError.new 'Invalid type'
|
45
|
+
end
|
41
46
|
end
|
42
47
|
end
|
43
48
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: typed_attributes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
21
|
+
version: '2.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '0'
|
29
|
+
version: '2.0'
|
30
30
|
description: Casts non-persistent model fields to their respective types, just like
|
31
31
|
ActiveRecord does.
|
32
32
|
email: tobias.casper@gmail.com
|
@@ -47,7 +47,7 @@ files:
|
|
47
47
|
- lib/typed_attributes/parser/ids_type.rb
|
48
48
|
- lib/typed_attributes/parser/flags_type.rb
|
49
49
|
- lib/typed_attributes/parser/base_type.rb
|
50
|
-
homepage: http://rubygems.org/gems/
|
50
|
+
homepage: http://rubygems.org/gems/typed_attributes
|
51
51
|
licenses: []
|
52
52
|
post_install_message:
|
53
53
|
rdoc_options: []
|