activerecord-bixformer 0.3.0 → 0.3.1
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:
|
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
|