json-exporter 0.4.3 → 0.4.4

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/.version +1 -1
  3. data/lib/json-exporter/base.rb +20 -7
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d75515317d6672ad95a84990587e55f75a5253d3afe8e507ee858a4dd3608c78
4
- data.tar.gz: 39989ef8d940c0677bf5c0478e0b1cdaa29cd863b7d002ad1dfb12f778eb046e
3
+ metadata.gz: 239935a36b473264e3694256237aa268bbc60bbd110692c5e0059a149b870df5
4
+ data.tar.gz: 3dd051ab1645e26dbe35a8db652b4aad98498057b7ad6f34bd06458850f90eae
5
5
  SHA512:
6
- metadata.gz: d3db4944bc96fdde608ac516bca887760d83da88479f7080b7a65e0bf23a97565773940b19febce7186dd0725901b3d3acd7b936bf15488e838e2a1119dd700d
7
- data.tar.gz: 9c8a8e4896cf16309c5ca967be8d7201514ce2ab4f6547ea10e28f98769ebaca0a3cd2d48bfc4a3774070fc8784bb10959809d4c2bec5194afc7559f05cb518b
6
+ metadata.gz: 49c06546834cdf633f4d56d99afb8a9f4fce9cfbd180bc3d0ac0a907704b2505547a660758e0f2d0729a4a2613a8a93d2770cbb9fd35aed110450e85ad313acd
7
+ data.tar.gz: 748eee943a3975b8912d2f64094fa770be7ab038455c541c8513a4b3e18bab03d617a817633a685ced4c7c8d7f181ba3773ec5b9256ba80167430fefc11b1c86
data/.version CHANGED
@@ -1 +1 @@
1
- 0.4.3
1
+ 0.4.4
@@ -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 model.is_a?(String) || model.is_a?(Symbol)
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.respond_to?(:all) && cmodel.respond_to?(:first)
77
- cmodel = cmodel.all.map { |el| JsonExporter.export(el, @opts.dup) }
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
- new_opts = local_opts.merge(export_depth: @opts[:export_depth], current_depth: @opts[:current_depth])
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(%[Exporter for class "#{base}" not found.])
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.3
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-06-19 00:00:00.000000000 Z
11
+ date: 2022-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hash_wia