activerecord-bixformer 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 565674ba58147fc9345db47ffd3948b310a1b42b
|
4
|
+
data.tar.gz: fb55615709f7d11e1e17bb7eac0ec215b247bd72
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 80893b6689eddf6315186104099449bf752bdd7ca66399eeeded3e8c1dbe3a30580f2f047de48ca72d797b12328e3598aa9bb8befa471abd36b796b032737e6c
|
7
|
+
data.tar.gz: aea5af76daaa004464480f4c155bb1f9f7502b02fe0c558c5518b011ea80ad8c36213e3b606920e0ff59b6d703fea7ab84b51cc28a2704d8947d6a7525d24382
|
@@ -91,9 +91,9 @@ module ActiveRecord
|
|
91
91
|
values = {}.with_indifferent_access
|
92
92
|
normalizer = ::ActiveRecord::Bixformer::AssignableAttributesNormalizer.new(plan, self, parent_record_id)
|
93
93
|
|
94
|
-
|
94
|
+
run_bixformer_callback :import, type: :attribute do
|
95
95
|
@attributes.each do |attr|
|
96
|
-
attribute_value =
|
96
|
+
attribute_value = run_bixformer_callback :import, on: attr.name do
|
97
97
|
block.call(attr)
|
98
98
|
end
|
99
99
|
|
@@ -123,9 +123,9 @@ module ActiveRecord
|
|
123
123
|
def make_each_association_import_value(values, &block)
|
124
124
|
self_record_id = values[activerecord_constant.primary_key]
|
125
125
|
|
126
|
-
|
126
|
+
run_bixformer_callback :import, type: :association do
|
127
127
|
@associations.each do |association|
|
128
|
-
association_value =
|
128
|
+
association_value = run_bixformer_callback :import, on: association.name do
|
129
129
|
block.call(association, self_record_id)
|
130
130
|
end
|
131
131
|
|
@@ -4,12 +4,12 @@ module ActiveRecord
|
|
4
4
|
module Csv
|
5
5
|
class Base < ::ActiveRecord::Bixformer::Model::Base
|
6
6
|
def export(record_or_records)
|
7
|
-
|
8
|
-
values =
|
7
|
+
run_bixformer_callback :export do
|
8
|
+
values = run_bixformer_callback :export, type: :attribute do
|
9
9
|
# has_one でしか使わない想定なので record_or_records は ActiveRecord::Base のはず
|
10
10
|
@attributes.map do |attr|
|
11
11
|
attribute_value = if record_or_records
|
12
|
-
|
12
|
+
run_bixformer_callback :export, on: attr.name do
|
13
13
|
attr.export(record_or_records)
|
14
14
|
end
|
15
15
|
end
|
@@ -18,10 +18,10 @@ module ActiveRecord
|
|
18
18
|
end.to_h.with_indifferent_access
|
19
19
|
end
|
20
20
|
|
21
|
-
|
21
|
+
run_bixformer_callback :export, type: :association do
|
22
22
|
@associations.inject(values) do |each_values, association|
|
23
23
|
association_value = if record_or_records
|
24
|
-
|
24
|
+
run_bixformer_callback :export, on: association.name do
|
25
25
|
record_or_records.__send__(association.name)
|
26
26
|
end
|
27
27
|
end
|
@@ -35,7 +35,7 @@ module ActiveRecord
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def import(csv_body_row, parent_record_id = nil)
|
38
|
-
|
38
|
+
run_bixformer_callback :import do
|
39
39
|
values = make_each_attribute_import_value(parent_record_id) do |attr|
|
40
40
|
csv_value = csv_body_row[csv_title(attr.name)]
|
41
41
|
|
@@ -4,15 +4,12 @@ module ActiveRecord
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
included do
|
7
|
-
class_attribute :__bixformer_export_callbacks
|
8
|
-
class_attribute :__bixformer_import_callbacks
|
9
|
-
|
10
|
-
self.__bixformer_export_callbacks = {}
|
11
|
-
self.__bixformer_import_callbacks = {}
|
7
|
+
class_attribute :__bixformer_export_callbacks, instance_writer: false
|
8
|
+
class_attribute :__bixformer_import_callbacks, instance_writer: false
|
12
9
|
|
13
10
|
private
|
14
11
|
|
15
|
-
def self.
|
12
|
+
def self.bixformer_callback_key(options)
|
16
13
|
if options[:on]
|
17
14
|
"on:#{options[:on]}"
|
18
15
|
elsif options[:type]
|
@@ -27,14 +24,15 @@ module ActiveRecord
|
|
27
24
|
[:export, :import].each do |target|
|
28
25
|
[:before, :around, :after].each do |timing|
|
29
26
|
define_method "bixformer_#{timing}_#{target}" do |*callback, &block|
|
30
|
-
|
27
|
+
unless __send__("__bixformer_#{target}_callbacks")
|
28
|
+
__send__("__bixformer_#{target}_callbacks=", {})
|
29
|
+
end
|
31
30
|
|
31
|
+
store = __send__("__bixformer_#{target}_callbacks")[timing] ||= {}
|
32
32
|
options = callback.extract_options!.with_indifferent_access
|
33
|
-
key =
|
33
|
+
key = bixformer_callback_key(options)
|
34
34
|
|
35
|
-
|
36
|
-
body: block ? block : options[:body] || callback.first
|
37
|
-
)
|
35
|
+
store[key] = options.merge(body: block ? block : options[:body] || callback.first)
|
38
36
|
end
|
39
37
|
end
|
40
38
|
end
|
@@ -42,50 +40,53 @@ module ActiveRecord
|
|
42
40
|
|
43
41
|
private
|
44
42
|
|
45
|
-
def
|
46
|
-
|
43
|
+
def run_bixformer_callback(target, options = {}, &body)
|
44
|
+
fetcher = -> (timing) do
|
45
|
+
return unless __send__("__bixformer_#{target}_callbacks")
|
47
46
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
end
|
47
|
+
store = __send__("__bixformer_#{target}_callbacks")[timing] || {}
|
48
|
+
key = self.class.bixformer_callback_key(options)
|
49
|
+
values = store[key] || {}
|
52
50
|
|
53
|
-
|
54
|
-
|
51
|
+
values[:body]
|
52
|
+
end
|
55
53
|
|
56
|
-
|
57
|
-
|
54
|
+
invoker = -> (callback, args_required: false, args_value: nil, &block) do
|
55
|
+
if callback.is_a?(::Proc)
|
56
|
+
if block
|
57
|
+
self.instance_exec block, &callback
|
58
|
+
elsif args_required
|
59
|
+
self.instance_exec args_value, &callback
|
60
|
+
else
|
61
|
+
self.instance_exec &callback
|
62
|
+
end
|
63
|
+
elsif callback.is_a?(::Symbol) || callback.is_a?(::String)
|
64
|
+
if block
|
65
|
+
self.__send__(callback, &block)
|
66
|
+
elsif args_required
|
67
|
+
self.__send__(callback, args_value)
|
68
|
+
else
|
69
|
+
self.__send__(callback)
|
70
|
+
end
|
71
|
+
elsif block
|
72
|
+
yield block
|
73
|
+
end
|
74
|
+
end
|
58
75
|
|
59
|
-
|
60
|
-
end
|
76
|
+
options = options.with_indifferent_access
|
61
77
|
|
62
|
-
|
63
|
-
if
|
64
|
-
|
65
|
-
self.instance_exec block, &callback
|
66
|
-
elsif args_required
|
67
|
-
self.instance_exec args_value, &callback
|
68
|
-
else
|
69
|
-
self.instance_exec &callback
|
70
|
-
end
|
71
|
-
elsif callback.is_a?(::Symbol) || callback.is_a?(::String)
|
72
|
-
if block
|
73
|
-
self.__send__(callback, &block)
|
74
|
-
elsif args_required
|
75
|
-
self.__send__(callback, args_value)
|
76
|
-
else
|
77
|
-
self.__send__(callback)
|
78
|
-
end
|
79
|
-
elsif block
|
80
|
-
yield block
|
78
|
+
before_callback = fetcher.call(:before)
|
79
|
+
if before_callback
|
80
|
+
return nil unless invoker.call(before_callback)
|
81
81
|
end
|
82
|
-
end
|
83
82
|
|
84
|
-
|
85
|
-
|
86
|
-
callback_values = callback_store[self.class.callback_store_key(options)] || {}
|
83
|
+
around_callback = fetcher.call(:around)
|
84
|
+
result = invoker.call(around_callback, &body)
|
87
85
|
|
88
|
-
|
86
|
+
after_callback = fetcher.call(:after)
|
87
|
+
invoker.call(after_callback, args_required: true, args_value: result) if after_callback
|
88
|
+
|
89
|
+
result
|
89
90
|
end
|
90
91
|
end
|
91
92
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-bixformer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hiroaki Otsu
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|