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.
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