json-exporter 0.3.2 → 0.4.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
  SHA256:
3
- metadata.gz: a8d838703ee920866377de7d41ee5203a0b11496088fd9676ce7e2fa71c95ca0
4
- data.tar.gz: 60f697333d5b70b3a5dae4a9cf2297123519d4bd7f5bbbf6e06c79f1af2377dc
3
+ metadata.gz: b9d5609810d1ae2f487ae88abfa877d3e8d7869c70d0df5b19789c2bd07dace4
4
+ data.tar.gz: 50a8f7a7021218443f09678f99d3f55a07603289e6883f981d4fa1b34a306275
5
5
  SHA512:
6
- metadata.gz: '09f9ecfa0f902e21c33c9080cf0e9b90286ba2cb42c78a2edd108f790589120820827059ac400d5a6e078adc87da6038a9c05e02c1dcfd29510631ca40a65eb1'
7
- data.tar.gz: 46b46b44094069ab10973fdff844659d9ac6f5472870968288e4b6a5e737ddf692fc4add3de2d9eb94b8f859a156d2ee80ce1b424a0ec9e851802f2ad12bc91f
6
+ metadata.gz: b1cbc0d34915c213aadd3b8eda4ab6544ff52fc582c2fa99aa912ef42dd74e1e4140081b7266db0d4b64421fbda642363eb8965bc6f4ca49af7af61321f99fd4
7
+ data.tar.gz: 92d35bea26dae2efd052bbd65b8697e0f75ba76234f6fd109ceaa2a06927d50a982f81dad9744802e58ef09c0e0918c9900ba5bd43f47d3731adc075016629d5
data/.version CHANGED
@@ -1 +1 @@
1
- 0.3.2
1
+ 0.4.1
@@ -1,6 +1,7 @@
1
1
  class JsonExporter
2
2
  EXPORTERS ||= {}
3
3
  FILTERS ||= {b:{}, a:{}}
4
+ OPTS ||= {}
4
5
 
5
6
  class << self
6
7
  def define *args, &block
@@ -24,38 +25,33 @@ class JsonExporter
24
25
  FILTERS[:b][to_s] = block
25
26
  end
26
27
 
27
- def filter &block
28
+ def after &block
28
29
  FILTERS[:a][to_s] = block
29
30
  end
30
- alias :after :filter
31
+
32
+ def disable_wia!
33
+ OPTS[:wia] = false
34
+ end
31
35
  end
32
36
 
33
37
  ###
34
38
 
35
- attr_accessor :response, :user, :model, :opts
39
+ attr_accessor :response, :model, :opts, :user
36
40
 
37
41
  def initialize model, opts={}
38
42
  if model.is_a?(String) || model.is_a?(Symbol)
39
43
  raise ArgumentError, 'model argument is not model instance (it is %s)' % model.class
40
44
  end
41
45
 
42
- opts[:version] ||= opts.delete(:v) || 1
43
-
44
- if opts.class == Hash
45
- opts = opts.to_hwia :version, :user, :depth, :current_depth, :exporter, :meta, :wia, :compact
46
- end
47
-
48
- opts.meta ||= {}
49
- opts.depth ||= 2 # 2 is default depth
50
- opts.current_depth ||= 0
51
- opts.current_depth += 1
46
+ opts[:export_depth] ||= 2 # 2 is default depth. if we encounter nested recursive exports, will go only to depth 2
47
+ opts[:current_depth] ||= 0
48
+ opts[:current_depth] += 1
52
49
 
53
- @model = model
54
50
  @user = opts[:user]
55
- @opts = opts
56
- @meta = opts.wia ? opts.meta.to_hwia : opts.meta
51
+ @model = model
52
+ @opts = opts.to_hwia
57
53
  @block = exporter_find_class
58
- @response = opts.wia ? {}.to_hwia : {}
54
+ @response = OPTS[:wia] == false ? {} : {}.to_hwia
59
55
  end
60
56
 
61
57
  def render
@@ -63,27 +59,7 @@ class JsonExporter
63
59
  instance_exec &@block
64
60
  exporter_apply_filters :a
65
61
 
66
- @opts.compact ? @response.compact : @response
67
- end
68
-
69
- def version version_num=nil, &block
70
- return @opts.version unless version_num
71
-
72
- if block && @opts.version >= version_num
73
- instance_exec &block
74
- end
75
- end
76
-
77
- def meta arg = nil
78
- if arg
79
- if !block_given?
80
- raise ArgumentError.new('Block not given for meta with param')
81
- elsif @meta[arg]
82
- yield
83
- end
84
- else
85
- @meta
86
- end
62
+ @response
87
63
  end
88
64
 
89
65
  private
@@ -91,7 +67,7 @@ class JsonExporter
91
67
  # export object
92
68
  # export :org_users, key: :users
93
69
  def export name, opts = {}
94
- return if @opts[:current_depth] > @opts[:depth]
70
+ return if @opts[:current_depth] > @opts[:export_depth]
95
71
 
96
72
  if name.is_a?(Symbol)
97
73
  name, cmodel = name, @model.send(name)
@@ -130,15 +106,17 @@ class JsonExporter
130
106
  # finds versioned exporter
131
107
  def exporter_find_class version=nil
132
108
  exporter =
133
- if self.class == JsonExporter
109
+ if @opts[:exporter]
110
+ @opts[:exporter].to_s.classify
111
+ elsif self.class == JsonExporter
134
112
  # JsonExporter.define User do
135
- @opts.exporter ? @opts.exporter.to_s.classify : model.class
113
+ @opts[:exporter] ? @opts[:exporter].to_s.classify : model.class
136
114
  else
137
115
  # class FooExporter< JsonExporter
138
116
  self.class
139
117
  end
140
118
 
141
- EXPORTERS[exporter.to_s] || raise('Exporter "%s" (:%s) not found' % [exporter, exporter.to_s.underscore])
119
+ EXPORTERS[exporter.to_s] || EXPORTERS[model.class.to_s] || raise('Exporter "%s" (:%s) not found' % [exporter, exporter.to_s.underscore])
142
120
  end
143
121
 
144
122
  def exporter_apply_filters kind
@@ -1,9 +1,9 @@
1
- # shortcut for JsonExporter.define(name) {}
1
+ # shortcut for JsonExporter.define(:page) {}
2
2
  # JsonExporter :page do
3
3
  # prop :name
4
4
  # end
5
5
 
6
- # shortcut for JsonExporter.new(object).render
6
+ # shortcut for JsonExporter.new(Page.first).render
7
7
  # JsonExporter Page.first
8
8
 
9
9
  def JsonExporter name_or_object, opts = {}, &block
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.3.2
4
+ version: 0.4.1
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-02-24 00:00:00.000000000 Z
11
+ date: 2022-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hash_wia
@@ -53,7 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  requirements: []
56
- rubygems_version: 3.2.22
56
+ rubygems_version: 3.2.3
57
57
  signing_key:
58
58
  specification_version: 4
59
59
  summary: Fast, simple & powerful object exporter