render_json_rails 0.1.5 → 0.1.6

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
  SHA256:
3
- metadata.gz: 90cc1574d9f07dd9306bb4416625ad680c8a2777bd62de9529b7a110576d6928
4
- data.tar.gz: be85fbe2ca6984d1efe32ad8531b6913d755761259c9cbb143b007663fb59340
3
+ metadata.gz: 91137440ff0206a13f4dc35e08b5978dfca32f05efe8a46f057df54ea5e090ad
4
+ data.tar.gz: 7552a89149c3407ccd6706681f61b96f91d04740c594f37cc3a587998fabc882
5
5
  SHA512:
6
- metadata.gz: b533b034543b5bbce37a7d8d1a039fb94d8c64557c8635a998c7459499868c70cfdd2d593110ca2389d9724dd7f436cfc14d506287e01967e7a9ab0fa3f2347d
7
- data.tar.gz: b9ca7bd1f3221de4739824db73dfb5a868bd5725d3528103eee5ff368825d7477eb7700398aef46804d64efccdc749d75da2806d4d01b1150d42c0f255a6fbd6
6
+ metadata.gz: 2574a769223d9deee3a85c227e1a21e3886a4337b1b7d00a925b900c09aea4ecb9c3bdd49e9f5db22f877f5d41b9747114690d17164e7efc56b7d821c9aa85d3
7
+ data.tar.gz: 6b8e57f7029b37ce70dbf0f2bcfe6a03a7b1f281bea6ad560561b8d18937a226a96559fffface5fe51fced650f5fe95bf0af84f8c25f95127f04e3a74ec5d488
data/README.md CHANGED
@@ -80,7 +80,7 @@ render_json_config name: :team,
80
80
  Add this line to your application's Gemfile:
81
81
 
82
82
  ```ruby
83
- gem 'render_json_rails', git: 'https://github.com/intum/render_json_rails'
83
+ gem 'render_json_rails'
84
84
  ```
85
85
 
86
86
  And then execute:
@@ -95,14 +95,3 @@ Or install it yourself as:
95
95
 
96
96
  Bug reports and pull requests are welcome on GitHub at https://github.com/intum/render_json_rails.
97
97
 
98
-
99
- ## TMP
100
-
101
- Tworzenie gema
102
-
103
- ```
104
- gem build render_json_rails.gemspec
105
-
106
- gem push --key github --host https://rubygems.pkg.github.com/intum render_json_rails-0.1.XXX.gem
107
- ```
108
-
@@ -24,10 +24,10 @@ module RenderJsonRails
24
24
 
25
25
  options = {}
26
26
  if fields && fields[name].present?
27
- options[:only] = fields[name].split(',').find_all{ |el| !except.include?(el.to_sym) }
28
- options[:methods] = methods&.find_all{ |el| options[:only].include?(el.to_s) }
27
+ options[:only] = fields[name].split(',').find_all { |el| !except.include?(el.to_sym) }
28
+ options[:methods] = methods&.find_all { |el| options[:only].include?(el.to_s) }
29
29
  if allowed_methods
30
- options[:methods] = (options[:methods] || []) | allowed_methods.find_all{ |el| options[:only].include?(el.to_s) }
30
+ options[:methods] = (options[:methods] || []) | allowed_methods.find_all { |el| options[:only].include?(el.to_s) }
31
31
  end
32
32
  else
33
33
  options[:except] = except
@@ -38,10 +38,8 @@ module RenderJsonRails
38
38
 
39
39
  def render_json_config(config)
40
40
  @render_json_config = config
41
- # @render_json_config[:methods] = [:image]
42
41
  end
43
42
 
44
- # rubocop:disable Lint/UnusedMethodArgument
45
43
  def render_json_options(includes: nil, fields: nil, additional_config: nil)
46
44
  raise "należy skonfigurowac render_json metodą: render_json_config" if !defined?(@render_json_config)
47
45
 
@@ -58,29 +56,19 @@ module RenderJsonRails
58
56
  @render_json_config[:includes].each do |name, klass|
59
57
  if includes.include?(name.to_s)
60
58
  includes2 = RenderJsonRails::Concern.includes_for_model(includes: includes, model: name.to_s)
61
- # raise includes2.inspect + ' ' + includes.inspect
62
59
  include_options << { name => klass.render_json_options(includes: includes2, fields: fields) }
63
60
  end
64
61
  end if @render_json_config[:includes]
65
62
 
66
- # if includes.include?('questions')
67
- # includes2 = RenderJsonRails::Concern.includes_for_model(includes: includes, model: 'questions')
68
- # # raise includes2.inspect + ' ' + includes.inspect
69
- # include_options << { questions: Organize::Question.render_json_options(includes: includes2, fields: fields) }
70
- # end
71
63
  options[:include] = include_options
72
64
  end
73
65
 
66
+ options = RenderJsonRails::Concern.deep_meld(options, additional_config) if additional_config
74
67
  options
75
68
  end # render_json_options
76
- # rubocop:enable Lint/UnusedMethodArgument
77
-
78
-
79
69
  end # class_methods
80
70
 
81
71
  def self.includes_for_model(includes:, model:)
82
- # include.split(',')
83
- # includes.delete(to_remove)
84
72
  includes = includes.map do |el|
85
73
  if el.start_with?(model + '.')
86
74
  el = el.gsub(/^#{model}\./, '')
@@ -88,8 +76,25 @@ module RenderJsonRails
88
76
  el = nil
89
77
  end
90
78
  end
91
- includes.find_all{ |el| el.present? }
92
- # raise includes.to_json
79
+ includes.find_all { |el| el.present? }
80
+ end
81
+
82
+ private
83
+
84
+ def self.deep_meld(h1, h2)
85
+ h1.deep_merge(h2) do |key, this_val, other_val|
86
+ if this_val != nil && other_val == nil
87
+ this_val
88
+ elsif this_val == nil && other_val != nil
89
+ other_val
90
+ elsif this_val.is_a?(Array) && other_val.is_a?(Array)
91
+ this_val | other_val
92
+ elsif this_val.is_a?(Hash) && other_val.is_a?(Hash)
93
+ deep_meld(this_val, other_val)
94
+ else
95
+ [this_val, other_val]
96
+ end
97
+ end
93
98
  end
94
99
  end
95
- end
100
+ end
@@ -27,7 +27,7 @@ module RenderJsonRails
27
27
  else
28
28
  class_object = object.class
29
29
  end
30
- includes = params[:include].to_s.split(',').map{ |el| el.to_s.strip } if params[:include]
30
+ includes = params[:include].to_s.split(',').map { |el| el.to_s.strip } if params[:include]
31
31
  options = class_object.render_json_options(
32
32
  includes: includes,
33
33
  fields: params[:fields],
@@ -44,4 +44,4 @@ module RenderJsonRails
44
44
  end
45
45
  end
46
46
  end
47
- end
47
+ end
@@ -1,3 +1,3 @@
1
1
  module RenderJsonRails
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  # Specify which files should be added to the gem when it is released.
22
22
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
23
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
24
24
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
25
  end
26
26
  spec.bindir = "exe"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: render_json_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-01 00:00:00.000000000 Z
11
+ date: 2020-09-16 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: render json with 'includes' and 'fields' with simple config
14
14
  email:
@@ -48,7 +48,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
48
48
  - !ruby/object:Gem::Version
49
49
  version: '0'
50
50
  requirements: []
51
- rubygems_version: 3.1.2
51
+ rubygems_version: 3.0.3
52
52
  signing_key:
53
53
  specification_version: 4
54
54
  summary: Simle JSON API render like JonApi