json-exporter 0.4.3 → 0.4.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.version +1 -1
- data/lib/json-exporter/base.rb +20 -7
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 239935a36b473264e3694256237aa268bbc60bbd110692c5e0059a149b870df5
|
4
|
+
data.tar.gz: 3dd051ab1645e26dbe35a8db652b4aad98498057b7ad6f34bd06458850f90eae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 49c06546834cdf633f4d56d99afb8a9f4fce9cfbd180bc3d0ac0a907704b2505547a660758e0f2d0729a4a2613a8a93d2770cbb9fd35aed110450e85ad313acd
|
7
|
+
data.tar.gz: 748eee943a3975b8912d2f64094fa770be7ab038455c541c8513a4b3e18bab03d617a817633a685ced4c7c8d7f181ba3773ec5b9256ba80167430fefc11b1c86
|
data/.version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.4
|
data/lib/json-exporter/base.rb
CHANGED
@@ -5,6 +5,7 @@ class JsonExporter
|
|
5
5
|
|
6
6
|
class << self
|
7
7
|
def define name = nil, &block
|
8
|
+
# if name is given, prepend name, if not, use class name as exporter name
|
8
9
|
name = name ? "#{INFLECTOR.classify(name)}#{to_s}" : to_s
|
9
10
|
|
10
11
|
EXPORTERS[name] = block
|
@@ -22,6 +23,8 @@ class JsonExporter
|
|
22
23
|
__define_filter :after, &block
|
23
24
|
end
|
24
25
|
|
26
|
+
private
|
27
|
+
|
25
28
|
def __define_filter name, &block
|
26
29
|
define_method name do
|
27
30
|
super() if self.class != JsonExporter
|
@@ -37,8 +40,8 @@ class JsonExporter
|
|
37
40
|
alias :response :json
|
38
41
|
|
39
42
|
def initialize model, opts = {}
|
40
|
-
if
|
41
|
-
raise ArgumentError, 'model argument is not model instance (it is %s)' % model.class
|
43
|
+
if [String, Symbol].include?(model.class)
|
44
|
+
raise ArgumentError, 'model argument is not model instance (it is a %s)' % model.class
|
42
45
|
end
|
43
46
|
|
44
47
|
opts[:export_depth] ||= 2 # 2 is default depth. if we encounter nested recursive exports, will go only to depth 2
|
@@ -59,6 +62,10 @@ class JsonExporter
|
|
59
62
|
@json
|
60
63
|
end
|
61
64
|
|
65
|
+
def merge data
|
66
|
+
data.each {|k,v| json[k] = v }
|
67
|
+
end
|
68
|
+
|
62
69
|
def before; end
|
63
70
|
|
64
71
|
def after; end
|
@@ -73,8 +80,8 @@ class JsonExporter
|
|
73
80
|
if name.is_a?(Symbol)
|
74
81
|
name, cmodel = name, @model.send(name)
|
75
82
|
|
76
|
-
if cmodel.
|
77
|
-
cmodel = cmodel.
|
83
|
+
if cmodel.class.to_s.include?('Array')
|
84
|
+
cmodel = cmodel.map { |el| self.class.export(el, __opts) }
|
78
85
|
end
|
79
86
|
else
|
80
87
|
underscored = INFLECTOR.underscore(name.class.to_s).to_sym
|
@@ -86,8 +93,7 @@ class JsonExporter
|
|
86
93
|
elsif cmodel.nil?
|
87
94
|
nil
|
88
95
|
else
|
89
|
-
|
90
|
-
self.class.new(cmodel, new_opts).render
|
96
|
+
self.class.new(cmodel, __opts(local_opts)).render
|
91
97
|
end
|
92
98
|
end
|
93
99
|
|
@@ -114,7 +120,14 @@ class JsonExporter
|
|
114
120
|
return block if block
|
115
121
|
end
|
116
122
|
|
117
|
-
raise
|
123
|
+
raise %[Exporter for class "#{base}" not found.]
|
124
|
+
end
|
125
|
+
|
126
|
+
def __opts start = {}
|
127
|
+
start.merge(
|
128
|
+
export_depth: @opts[:export_depth],
|
129
|
+
current_depth: @opts[:current_depth]
|
130
|
+
)
|
118
131
|
end
|
119
132
|
end
|
120
133
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json-exporter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dino Reic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hash_wia
|