labelizer 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/labelizer.rb +56 -53
- data/lib/labelizer/version.rb +1 -1
- data/version.txt +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MjEzNjdlYzcyMTA3Nzc1NTFmZTgxYWZiMmRjODI1ZWRjN2VkN2VjYQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZDQwNzI5NTU1Nzk0MDMwZGQ2YjNlODk3NmVlYTllNzIwZmZhNzdmMA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YTMyZjUyYzUxYjVkMmVmNWZlYzk2ZjAyNmI2ZTIwYzNjYTE2ZjJkNmFjOGUy
|
10
|
+
YWVhZDA0NzVlMzIyNTQ5NGE5ODcyMWVkMWQ3ODgyNDk2NDAwNDA2NjIyYTFj
|
11
|
+
NWY5NGVjYzRmMzQxNTRiYjc5Y2UwYzJmZWZlZTk4ZGM4YjNjNTQ=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YTI3MmUxNTY1YTRmYmIwOGRlMTlhM2IyMzA3MTg2ZGQxZmE0YzE2NGYzZTdi
|
14
|
+
MzgyNzZkZjMwNTE3ZjMzYzJhMjBhNTQzNzQ1OGIyMTZjMTU1NmU5ZjNmY2Q1
|
15
|
+
NmQ2Y2RlNDIzYmMwMjc0NTliMDQ5YjA1MGMwNTQxMmEyZDcxMWQ=
|
data/lib/labelizer.rb
CHANGED
@@ -17,7 +17,53 @@ module Labelizer
|
|
17
17
|
|
18
18
|
module ClassMethods
|
19
19
|
def labelized
|
20
|
-
@labelized
|
20
|
+
@labelized ||= Container.new([]){|attr_labelized,attr|
|
21
|
+
model = self.to_s.underscore
|
22
|
+
values = __send__(attr.to_s.pluralize)
|
23
|
+
labelized = Container.new(values, accept_array_key: true){|value_labelized,value|
|
24
|
+
data = labelized.instance_variable_get(:@data)
|
25
|
+
attr_label_types = data[:label_types]
|
26
|
+
attr_converter = data[:converter]
|
27
|
+
|
28
|
+
unless labelized.has_key?(value)
|
29
|
+
Container.new(attr_label_types){|h,label_type|
|
30
|
+
h[label_type] = value.map{|val| value_labelized[val][label_type]}
|
31
|
+
}
|
32
|
+
else
|
33
|
+
value_labelized[value] = Container.new(attr_label_types){|h,label_type|
|
34
|
+
if label_type == :value
|
35
|
+
result = value
|
36
|
+
else
|
37
|
+
result = ::I18n.translate(
|
38
|
+
"labelizer.#{model}.#{attr}.#{value}.#{label_type}",
|
39
|
+
default: [
|
40
|
+
:"labelizer.#{model}.#{attr}.#{label_type}",
|
41
|
+
:"labelizer.#{model}.#{label_type}",
|
42
|
+
:"labelizer.#{label_type}",
|
43
|
+
"",
|
44
|
+
],
|
45
|
+
)
|
46
|
+
if c = attr_converter[label_type]
|
47
|
+
result = c[result]
|
48
|
+
end
|
49
|
+
end
|
50
|
+
h[label_type] = result
|
51
|
+
}
|
52
|
+
end
|
53
|
+
}
|
54
|
+
|
55
|
+
labelized.singleton_class.class_eval do
|
56
|
+
define_method :pluck do |*require_label_types|
|
57
|
+
map{|value,label_type_labelized|
|
58
|
+
require_label_types.map{|require_label_type|
|
59
|
+
label_type_labelized[require_label_type]
|
60
|
+
}
|
61
|
+
}
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
attr_labelized[attr] = labelized
|
66
|
+
}
|
21
67
|
end
|
22
68
|
|
23
69
|
private
|
@@ -38,61 +84,18 @@ module Labelizer
|
|
38
84
|
end
|
39
85
|
end
|
40
86
|
|
41
|
-
|
42
|
-
|
43
|
-
attr_labelized[attr] = Container.new(__send__(attr.to_s.pluralize), accept_array_key: true){|value_labelized,value|
|
44
|
-
data = attr_labelized[attr].instance_variable_get(:@data)
|
45
|
-
attr_label_types = data[:label_types]
|
46
|
-
attr_converter = data[:converter]
|
47
|
-
unless attr_labelized[attr].has_key?(value)
|
48
|
-
Container.new(attr_label_types){|h,label_type|
|
49
|
-
h[label_type] = value.map{|val| value_labelized[val][label_type]}
|
50
|
-
}
|
51
|
-
else
|
52
|
-
value_labelized[value] = Container.new(attr_label_types){|h,label_type|
|
53
|
-
if label_type == :value
|
54
|
-
result = value
|
55
|
-
else
|
56
|
-
result = ::I18n.translate(
|
57
|
-
"labelizer.#{model}.#{attr}.#{value}.#{label_type}",
|
58
|
-
default: [
|
59
|
-
:"labelizer.#{model}.#{attr}.#{label_type}",
|
60
|
-
:"labelizer.#{model}.#{label_type}",
|
61
|
-
:"labelizer.#{label_type}",
|
62
|
-
"",
|
63
|
-
],
|
64
|
-
)
|
65
|
-
if c = attr_converter[label_type]
|
66
|
-
result = c[result]
|
67
|
-
end
|
68
|
-
end
|
69
|
-
h[label_type] = result
|
70
|
-
}
|
71
|
-
end
|
72
|
-
}
|
73
|
-
|
74
|
-
attr_labelized[attr].singleton_class.class_eval do
|
75
|
-
define_method :pluck do |*require_label_types|
|
76
|
-
map{|value,label_type_labelized|
|
77
|
-
require_label_types.map{|require_label_type|
|
78
|
-
label_type_labelized[require_label_type]
|
79
|
-
}
|
80
|
-
}
|
81
|
-
end
|
82
|
-
end
|
83
|
-
data = attr_labelized[attr].instance_variable_get(:@data)
|
84
|
-
data[:label_types] = label_types
|
85
|
-
data[:converter] = converter
|
86
|
-
|
87
|
-
attr_labelized[attr]
|
88
|
-
}
|
89
|
-
|
90
|
-
@labelized.instance_variable_get(:@keys) << attr_name
|
91
|
-
@labelized.singleton_class.class_eval do
|
87
|
+
labelized.instance_variable_get(:@keys) << attr_name
|
88
|
+
labelized.singleton_class.class_eval do
|
92
89
|
define_method attr_name do
|
93
|
-
|
90
|
+
self[attr_name]
|
94
91
|
end
|
95
92
|
end
|
93
|
+
|
94
|
+
data = labelized[attr_name].instance_variable_get(:@data)
|
95
|
+
data[:label_types] = label_types
|
96
|
+
data[:converter] = converter
|
97
|
+
|
98
|
+
labelized[attr_name]
|
96
99
|
end
|
97
100
|
end
|
98
101
|
end
|
data/lib/labelizer/version.rb
CHANGED
data/version.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.5
|