blacklight 6.5.0 → 6.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.rubocop.yml +5 -0
  4. data/.rubocop_todo.yml +114 -213
  5. data/{.solr_wrapper → .solr_wrapper.yml} +0 -0
  6. data/.yardopts +3 -1
  7. data/Gemfile +0 -3
  8. data/Rakefile +1 -1
  9. data/VERSION +1 -1
  10. data/Vagrantfile +0 -2
  11. data/app/controllers/bookmarks_controller.rb +0 -2
  12. data/app/controllers/catalog_controller.rb +0 -2
  13. data/app/controllers/concerns/blacklight/base.rb +0 -1
  14. data/app/controllers/concerns/blacklight/bookmarks.rb +1 -1
  15. data/app/controllers/concerns/blacklight/catalog.rb +7 -11
  16. data/app/controllers/concerns/blacklight/controller.rb +11 -7
  17. data/app/controllers/concerns/blacklight/default_component_configuration.rb +24 -37
  18. data/app/controllers/concerns/blacklight/facet.rb +2 -11
  19. data/app/controllers/concerns/blacklight/request_builders.rb +1 -3
  20. data/app/controllers/concerns/blacklight/search_context.rb +0 -1
  21. data/app/controllers/concerns/blacklight/search_fields.rb +2 -2
  22. data/app/controllers/concerns/blacklight/search_helper.rb +14 -24
  23. data/app/controllers/concerns/blacklight/token_based_user.rb +0 -2
  24. data/app/helpers/blacklight/blacklight_helper_behavior.rb +27 -28
  25. data/app/helpers/blacklight/catalog_helper_behavior.rb +15 -15
  26. data/app/helpers/blacklight/component_helper_behavior.rb +2 -5
  27. data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -3
  28. data/app/helpers/blacklight/deprecated_url_helper_behavior.rb +1 -3
  29. data/app/helpers/blacklight/facets_helper_behavior.rb +21 -25
  30. data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +1 -2
  31. data/app/helpers/blacklight/render_constraints_helper_behavior.rb +8 -9
  32. data/app/helpers/blacklight/render_partials_helper.rb +14 -13
  33. data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +1 -4
  34. data/app/helpers/blacklight/url_helper_behavior.rb +1 -1
  35. data/app/models/blacklight/facet_paginator.rb +2 -2
  36. data/app/models/concerns/blacklight/document.rb +1 -6
  37. data/app/models/concerns/blacklight/document/active_model_shim.rb +0 -1
  38. data/app/models/concerns/blacklight/document/cache_key.rb +3 -3
  39. data/app/models/concerns/blacklight/document/dublin_core.rb +0 -1
  40. data/app/models/concerns/blacklight/document/email.rb +0 -2
  41. data/app/models/concerns/blacklight/document/export.rb +1 -2
  42. data/app/models/concerns/blacklight/document/schema_org.rb +0 -2
  43. data/app/models/concerns/blacklight/document/sms.rb +0 -2
  44. data/app/models/concerns/blacklight/solr/document.rb +0 -1
  45. data/app/models/record_mailer.rb +0 -1
  46. data/app/models/solr_document.rb +0 -2
  47. data/app/presenters/blacklight/document_presenter.rb +14 -11
  48. data/app/presenters/blacklight/index_presenter.rb +5 -5
  49. data/app/presenters/blacklight/json_presenter.rb +0 -1
  50. data/app/presenters/blacklight/rendering/abstract_step.rb +0 -1
  51. data/app/presenters/blacklight/rendering/helper_method.rb +5 -5
  52. data/app/presenters/blacklight/rendering/link_to_facet.rb +1 -1
  53. data/app/presenters/blacklight/show_presenter.rb +4 -5
  54. data/app/services/blacklight/field_retriever.rb +8 -9
  55. data/app/views/catalog/_facet_limit.html.erb +1 -1
  56. data/blacklight.gemspec +4 -0
  57. data/lib/blacklight.rb +2 -2
  58. data/lib/blacklight/abstract_repository.rb +4 -3
  59. data/lib/blacklight/configuration.rb +57 -92
  60. data/lib/blacklight/configuration/context.rb +3 -3
  61. data/lib/blacklight/configuration/fields.rb +24 -7
  62. data/lib/blacklight/exceptions.rb +0 -2
  63. data/lib/blacklight/parameters.rb +1 -1
  64. data/lib/blacklight/search_builder.rb +92 -96
  65. data/lib/blacklight/search_state.rb +2 -1
  66. data/lib/blacklight/solr/repository.rb +3 -4
  67. data/lib/blacklight/solr/request.rb +0 -2
  68. data/lib/blacklight/solr/response/facets.rb +23 -28
  69. data/lib/blacklight/solr/response/group.rb +0 -1
  70. data/lib/blacklight/solr/response/group_response.rb +1 -5
  71. data/lib/blacklight/solr/response/pagination_methods.rb +0 -1
  72. data/lib/blacklight/solr/response/response.rb +1 -1
  73. data/lib/blacklight/solr/response/spelling.rb +0 -4
  74. data/lib/blacklight/solr/search_builder_behavior.rb +29 -41
  75. data/lib/blacklight/utils.rb +10 -7
  76. data/lib/generators/blacklight/assets_generator.rb +0 -1
  77. data/lib/generators/blacklight/document_generator.rb +0 -1
  78. data/lib/generators/blacklight/install_generator.rb +2 -6
  79. data/lib/generators/blacklight/models_generator.rb +0 -3
  80. data/lib/generators/blacklight/search_builder_generator.rb +0 -1
  81. data/lib/generators/blacklight/solr4_generator.rb +0 -2
  82. data/lib/generators/blacklight/solr5_generator.rb +15 -1
  83. data/lib/generators/blacklight/test_support_generator.rb +0 -1
  84. data/lib/railties/blacklight.rake +3 -3
  85. data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +1 -4
  86. data/spec/controllers/blacklight/search_helper_spec.rb +5 -7
  87. data/spec/controllers/blacklight/suggest_search_spec.rb +2 -2
  88. data/spec/controllers/bookmarks_controller_spec.rb +2 -2
  89. data/spec/controllers/catalog_controller_spec.rb +6 -6
  90. data/spec/features/search_context_spec.rb +4 -5
  91. data/spec/features/search_formats_spec.rb +0 -6
  92. data/spec/helpers/blacklight_helper_spec.rb +7 -7
  93. data/spec/helpers/catalog_helper_spec.rb +10 -10
  94. data/spec/helpers/configuration_helper_spec.rb +3 -3
  95. data/spec/helpers/facets_helper_spec.rb +1 -2
  96. data/spec/helpers/render_constraints_helper_spec.rb +8 -0
  97. data/spec/integration/generators/blacklight/solr5_generator_spec.rb +60 -0
  98. data/spec/models/blacklight/document_spec.rb +1 -1
  99. data/spec/models/blacklight/search_builder_spec.rb +5 -4
  100. data/spec/models/blacklight/solr/search_builder_spec.rb +12 -18
  101. data/spec/presenters/pipeline_spec.rb +1 -1
  102. data/spec/spec_helper.rb +43 -0
  103. data/spec/views/catalog/_index_header_default.html.erb_spec.rb +1 -1
  104. data/spec/views/catalog/_show_tools.html.erb_spec.rb +1 -1
  105. data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +2 -2
  106. data/spec/views/catalog/_thumbnail_default.erb_spec.rb +1 -1
  107. data/spec/views/catalog/_view_type_group.html.erb_spec.rb +3 -3
  108. data/spec/views/catalog/index.html.erb_spec.rb +1 -1
  109. data/spec/views/catalog/index.json.jbuilder_spec.rb +2 -2
  110. data/tasks/blacklight.rake +3 -0
  111. metadata +61 -3
@@ -1,11 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
  module Blacklight::Solr
3
3
  class Repository < Blacklight::AbstractRepository
4
-
5
4
  ##
6
5
  # Find a single solr document result (by id) using the document configuration
7
- # @param [String] document's unique key value
8
- # @param [Hash] additional solr query parameters
6
+ # @param [String] id document's unique key value
7
+ # @param [Hash] params additional solr query parameters
9
8
  def find id, params = {}
10
9
  doc_params = params.reverse_merge(blacklight_config.default_document_solr_params)
11
10
  .reverse_merge(qt: blacklight_config.document_solr_request_handler)
@@ -18,7 +17,7 @@ module Blacklight::Solr
18
17
 
19
18
  ##
20
19
  # Execute a search query against solr
21
- # @param [Hash] solr query parameters
20
+ # @param [Hash] params solr query parameters
22
21
  def search params = {}
23
22
  send_and_receive blacklight_config.solr_path, params.reverse_merge(qt: blacklight_config.qt)
24
23
  end
@@ -2,7 +2,6 @@
2
2
  class Blacklight::Solr::InvalidParameter < ArgumentError; end
3
3
 
4
4
  class Blacklight::Solr::Request < ActiveSupport::HashWithIndifferentAccess
5
-
6
5
  SINGULAR_KEYS = %w(facet fl q qt rows start spellcheck spellcheck.q sort per_page wt hl group defType)
7
6
  ARRAY_KEYS = %w(facet.field facet.query facet.pivot fq hl.fl)
8
7
 
@@ -41,5 +40,4 @@ class Blacklight::Solr::Request < ActiveSupport::HashWithIndifferentAccess
41
40
  def to_hash
42
41
  reject {|key, value| ARRAY_KEYS.include?(key) && value.blank?}
43
42
  end
44
-
45
43
  end
@@ -60,6 +60,7 @@ module Blacklight::Solr::Response::Facets
60
60
  end
61
61
 
62
62
  private
63
+
63
64
  # Per https://wiki.apache.org/solr/SimpleFacetParameters#facet.limit
64
65
  def solr_default_limit
65
66
  100
@@ -95,7 +96,7 @@ module Blacklight::Solr::Response::Facets
95
96
  @facet_counts ||= self['facet_counts'] || {}
96
97
  end
97
98
 
98
- # Returns the hash of all the facet_fields (ie: {'instock_b' => ['true', 123, 'false', 20]}
99
+ # Returns the hash of all the facet_fields (ie: { 'instock_b' => ['true', 123, 'false', 20] }
99
100
  def facet_fields
100
101
  @facet_fields ||= begin
101
102
  val = facet_counts['facet_fields'] || {}
@@ -120,6 +121,7 @@ module Blacklight::Solr::Response::Facets
120
121
  end
121
122
 
122
123
  private
124
+
123
125
  ##
124
126
  # Convert Solr responses of various json.nl flavors to
125
127
  def list_as_hash solr_list
@@ -144,8 +146,7 @@ module Blacklight::Solr::Response::Facets
144
146
  # a hash of Blacklight::Solr::Response::Facet::FacetField objects
145
147
  def facet_field_aggregations
146
148
  list_as_hash(facet_fields).each_with_object({}) do |(facet_field_name, values), hash|
147
- items = []
148
- values.each do |value, hits|
149
+ items = values.map do |value, hits|
149
150
  i = FacetItem.new(value: value, hits: hits)
150
151
 
151
152
  # solr facet.missing serialization
@@ -154,7 +155,7 @@ module Blacklight::Solr::Response::Facets
154
155
  i.fq = "-#{facet_field_name}:[* TO *]"
155
156
  end
156
157
 
157
- items << i
158
+ i
158
159
  end
159
160
 
160
161
  options = facet_field_aggregation_options(facet_field_name)
@@ -162,12 +163,10 @@ module Blacklight::Solr::Response::Facets
162
163
  items,
163
164
  options)
164
165
 
165
- if blacklight_config and !blacklight_config.facet_fields[facet_field_name]
166
- # alias all the possible blacklight config names..
167
- blacklight_config.facet_fields.select { |k,v| v.field == facet_field_name }.each do |key,_|
168
- hash[key] = hash[facet_field_name]
169
- end
170
- end
166
+ # alias all the possible blacklight config names..
167
+ blacklight_config.facet_fields.select { |k,v| v.field == facet_field_name }.each do |key,_|
168
+ hash[key] = hash[facet_field_name]
169
+ end if blacklight_config and !blacklight_config.facet_fields[facet_field_name]
171
170
  end
172
171
  end
173
172
 
@@ -196,11 +195,10 @@ module Blacklight::Solr::Response::Facets
196
195
 
197
196
  blacklight_config.facet_fields.select { |k,v| v.query }.each_with_object({}) do |(field_name, facet_field), hash|
198
197
  salient_facet_queries = facet_field.query.map { |k, x| x[:fq] }
199
- items = []
200
- facet_queries.select { |k,v| salient_facet_queries.include?(k) }.reject { |value, hits| hits == 0 }.map do |value,hits|
198
+ items = facet_queries.select { |k,v| salient_facet_queries.include?(k) }.reject { |value, hits| hits.zero? }.map do |value,hits|
201
199
  salient_fields = facet_field.query.select { |key, val| val[:fq] == value }
202
200
  key = ((salient_fields.keys if salient_fields.respond_to? :keys) || salient_fields.first).first
203
- items << Blacklight::Solr::Response::Facets::FacetItem.new(value: key, hits: hits, label: facet_field.query[key][:label])
201
+ Blacklight::Solr::Response::Facets::FacetItem.new(value: key, hits: hits, label: facet_field.query[key][:label])
204
202
  end
205
203
 
206
204
  hash[field_name] = Blacklight::Solr::Response::Facets::FacetField.new field_name, items
@@ -212,28 +210,25 @@ module Blacklight::Solr::Response::Facets
212
210
  # a hash of Blacklight::Solr::Response::Facet::FacetField objects
213
211
  def facet_pivot_aggregations
214
212
  facet_pivot.each_with_object({}) do |(field_name, values), hash|
215
- items = []
216
- values.map do |lst|
217
- items << construct_pivot_field(lst)
218
- end
213
+ next unless blacklight_config and !blacklight_config.facet_fields[field_name]
219
214
 
220
- if blacklight_config and !blacklight_config.facet_fields[field_name]
221
- # alias all the possible blacklight config names..
222
- blacklight_config.facet_fields.select { |k,v| v.pivot and v.pivot.join(",") == field_name }.each do |key, _|
223
- hash[key] = Blacklight::Solr::Response::Facets::FacetField.new key, items
224
- end
225
- end
215
+ items = values.map do |lst|
216
+ construct_pivot_field(lst)
217
+ end
218
+
219
+ # alias all the possible blacklight config names..
220
+ blacklight_config.facet_fields.select { |k,v| v.pivot and v.pivot.join(",") == field_name }.each do |key, _|
221
+ hash[key] = Blacklight::Solr::Response::Facets::FacetField.new key, items
222
+ end
226
223
  end
227
224
  end
228
225
 
229
226
  ##
230
227
  # Recursively parse the pivot facet response to build up the full pivot tree
231
228
  def construct_pivot_field lst, parent_fq = {}
232
- items = []
233
-
234
- lst[:pivot].each do |i|
235
- items << construct_pivot_field(i, parent_fq.merge({ lst[:field] => lst[:value] }))
236
- end if lst[:pivot]
229
+ items = Array(lst[:pivot]).map do |i|
230
+ construct_pivot_field(i, parent_fq.merge({ lst[:field] => lst[:value] }))
231
+ end
237
232
 
238
233
  Blacklight::Solr::Response::Facets::FacetItem.new(value: lst[:value], hits: lst[:count], field: lst[:field], items: items, fq: parent_fq)
239
234
  end
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  class Blacklight::Solr::Response::Group
3
-
4
3
  include Blacklight::Solr::Response::PaginationMethods
5
4
 
6
5
  attr_reader :key, :group, :response
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  class Blacklight::Solr::Response::GroupResponse
3
-
4
3
  include Blacklight::Solr::Response::PaginationMethods
5
4
 
6
5
  attr_reader :key, :group, :response
@@ -34,17 +33,14 @@ class Blacklight::Solr::Response::GroupResponse
34
33
  end
35
34
 
36
35
  def method_missing meth, *args, &block
37
-
38
36
  if response.respond_to? meth
39
37
  response.send(meth, *args, &block)
40
38
  else
41
39
  super
42
40
  end
43
-
44
41
  end
45
42
 
46
- def respond_to? meth
43
+ def respond_to_missing? meth, include_private = false
47
44
  response.respond_to?(meth) || super
48
45
  end
49
-
50
46
  end
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  module Blacklight::Solr::Response::PaginationMethods
3
-
4
3
  include Kaminari::PageScopeMethods
5
4
  include Kaminari::ConfigurationMethods::ClassMethods
6
5
 
@@ -14,6 +14,6 @@ module Blacklight::Solr::Response::Response
14
14
  end
15
15
 
16
16
  def empty?
17
- total == 0
17
+ total.zero?
18
18
  end
19
19
  end
@@ -4,13 +4,11 @@
4
4
  # response.spelling.words
5
5
  #
6
6
  module Blacklight::Solr::Response::Spelling
7
-
8
7
  def spelling
9
8
  @spelling ||= Base.new(self)
10
9
  end
11
10
 
12
11
  class Base
13
-
14
12
  attr_reader :response
15
13
 
16
14
  def initialize(response)
@@ -88,7 +86,5 @@ module Blacklight::Solr::Response::Spelling
88
86
  end
89
87
  end
90
88
  end
91
-
92
89
  end
93
-
94
90
  end
@@ -70,7 +70,7 @@ module Blacklight::Solr
70
70
  "{!lucene}NOT *:*"
71
71
  else
72
72
  "{!lucene}" + q.map do |field, values|
73
- "#{field}:(#{Array(values).map { |x| solr_param_quote(x) }.join(" OR ")})"
73
+ "#{field}:(#{Array(values).map { |x| solr_param_quote(x) }.join(' OR ')})"
74
74
  end.join(" AND ")
75
75
  end
76
76
 
@@ -84,7 +84,6 @@ module Blacklight::Solr
84
84
  # Add any existing facet limits, stored in app-level HTTP query
85
85
  # as :f, to solr as appropriate :fq query.
86
86
  def add_facet_fq_to_solr(solr_parameters)
87
-
88
87
  # convert a String value into an Array
89
88
  if solr_parameters[:fq].is_a? String
90
89
  solr_parameters[:fq] = [solr_parameters[:fq]]
@@ -95,8 +94,7 @@ module Blacklight::Solr
95
94
  f_request_params = blacklight_params[:f]
96
95
 
97
96
  f_request_params.each_pair do |facet_field, value_list|
98
- Array(value_list).each do |value|
99
- next if value.blank? # skip empty strings
97
+ Array(value_list).reject(&:blank?).each do |value|
100
98
  solr_parameters.append_filter_query facet_value_to_fq_string(facet_field, value)
101
99
  end
102
100
  end
@@ -111,13 +109,12 @@ module Blacklight::Solr
111
109
  facet_fields_to_include_in_request.each do |field_name, facet|
112
110
  solr_parameters[:facet] ||= true
113
111
 
114
- case
115
- when facet.pivot
116
- solr_parameters.append_facet_pivot with_ex_local_param(facet.ex, facet.pivot.join(","))
117
- when facet.query
118
- solr_parameters.append_facet_query facet.query.map { |k, x| with_ex_local_param(facet.ex, x[:fq]) }
119
- else
120
- solr_parameters.append_facet_fields with_ex_local_param(facet.ex, facet.field)
112
+ if facet.pivot
113
+ solr_parameters.append_facet_pivot with_ex_local_param(facet.ex, facet.pivot.join(","))
114
+ elsif facet.query
115
+ solr_parameters.append_facet_query facet.query.map { |k, x| with_ex_local_param(facet.ex, x[:fq]) }
116
+ else
117
+ solr_parameters.append_facet_fields with_ex_local_param(facet.ex, facet.field)
121
118
  end
122
119
 
123
120
  if facet.sort
@@ -137,11 +134,9 @@ module Blacklight::Solr
137
134
 
138
135
  def add_solr_fields_to_query solr_parameters
139
136
  blacklight_config.show_fields.select(&method(:should_add_field_to_request?)).each do |field_name, field|
140
- if field.solr_params
141
- field.solr_params.each do |k, v|
142
- solr_parameters[:"f.#{field.field}.#{k}"] = v
143
- end
144
- end
137
+ field.solr_params.each do |k, v|
138
+ solr_parameters[:"f.#{field.field}.#{k}"] = v
139
+ end if field.solr_params
145
140
  end
146
141
 
147
142
  blacklight_config.index_fields.select(&method(:should_add_field_to_request?)).each do |field_name, field|
@@ -150,11 +145,9 @@ module Blacklight::Solr
150
145
  solr_parameters.append_highlight_field field.field
151
146
  end
152
147
 
153
- if field.solr_params
154
- field.solr_params.each do |k, v|
155
- solr_parameters[:"f.#{field.field}.#{k}"] = v
156
- end
157
- end
148
+ field.solr_params.each do |k, v|
149
+ solr_parameters[:"f.#{field.field}.#{k}"] = v
150
+ end if field.solr_params
158
151
  end
159
152
  end
160
153
 
@@ -166,9 +159,7 @@ module Blacklight::Solr
166
159
 
167
160
  solr_params[:rows] = rows
168
161
 
169
- if start != 0
170
- solr_params[:start] = start
171
- end
162
+ solr_params[:start] = start if start.nonzero?
172
163
  end
173
164
 
174
165
  ###
@@ -258,7 +249,6 @@ module Blacklight::Solr
258
249
  end
259
250
  end
260
251
 
261
-
262
252
  ##
263
253
  # A helper method used for generating solr LocalParams, put quotes
264
254
  # around the term unless it's a bare-word. Escape internal quotes
@@ -271,7 +261,7 @@ module Blacklight::Solr
271
261
  val.gsub("'", "\\\\\'").gsub('"', "\\\\\"") +
272
262
  options[:quote]
273
263
  end
274
- return val
264
+ val
275
265
  end
276
266
 
277
267
  private
@@ -287,28 +277,26 @@ module Blacklight::Solr
287
277
  local_params = []
288
278
  local_params << "tag=#{facet_config.tag}" if facet_config and facet_config.tag
289
279
 
290
- prefix = "{!#{local_params.join(" ")}}" unless local_params.empty?
280
+ prefix = "{!#{local_params.join(' ')}}" unless local_params.empty?
291
281
 
292
- case
293
- when (facet_config and facet_config.query)
294
- if facet_config.query[value]
295
- facet_config.query[value][:fq]
296
- else
297
- # exclude all documents if the custom facet key specified was not found
298
- '-*:*'
299
- end
300
- when value.is_a?(Range)
301
- "#{prefix}#{solr_field}:[#{value.first} TO #{value.last}]"
282
+ if facet_config and facet_config.query
283
+ if facet_config.query[value]
284
+ facet_config.query[value][:fq]
302
285
  else
303
- "{!term f=#{solr_field}#{(" " + local_params.join(" ")) unless local_params.empty?}}#{convert_to_term_value(value)}"
286
+ # exclude all documents if the custom facet key specified was not found
287
+ '-*:*'
288
+ end
289
+ elsif value.is_a?(Range)
290
+ "#{prefix}#{solr_field}:[#{value.first} TO #{value.last}]"
291
+ else
292
+ "{!term f=#{solr_field}#{(' ' + local_params.join(' ')) unless local_params.empty?}}#{convert_to_term_value(value)}"
304
293
  end
305
294
  end
306
295
 
307
296
  def convert_to_term_value(value)
308
- case
309
- when (value.is_a?(DateTime) or value.is_a?(Time))
297
+ if value.is_a?(DateTime) or value.is_a?(Time)
310
298
  value.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
311
- when value.is_a?(Date)
299
+ elsif value.is_a?(Date)
312
300
  value.to_time(:local).strftime("%Y-%m-%dT%H:%M:%SZ")
313
301
  else
314
302
  value.to_s
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  require 'ostruct'
3
3
  module Blacklight
4
-
5
4
  module Utils
6
5
  def self.needs_attr_accessible?
7
6
  protected_attributes_enabled?
@@ -39,7 +38,7 @@ module Blacklight
39
38
 
40
39
  ##
41
40
  # Merge the values of this OpenStruct with another OpenStruct or Hash
42
- # @param [Hash,#to_h]
41
+ # @param [Hash,#to_h] other_hash
43
42
  # @return [OpenStructWithHashAccess] a new instance of an OpenStructWithHashAccess
44
43
  def merge other_hash
45
44
  self.class.new to_h.merge((other_hash if other_hash.is_a? Hash) || other_hash.to_h)
@@ -47,7 +46,7 @@ module Blacklight
47
46
 
48
47
  ##
49
48
  # Merge the values of another OpenStruct or Hash into this object
50
- # @param [Hash,#to_h]
49
+ # @param [Hash,#to_h] other_hash
51
50
  # @return [OpenStructWithHashAccess] a new instance of an OpenStructWithHashAccess
52
51
  def merge! other_hash
53
52
  @table.merge!((other_hash if other_hash.is_a? Hash) || other_hash.to_h)
@@ -58,7 +57,6 @@ module Blacklight
58
57
  end
59
58
  end
60
59
 
61
-
62
60
  ##
63
61
  # An OpenStruct refinement that converts any hash-keys into
64
62
  # additional instances of NestedOpenStructWithHashAccess
@@ -142,7 +140,7 @@ module Blacklight
142
140
 
143
141
  ##
144
142
  # Merge the values of this OpenStruct with another OpenStruct or Hash
145
- # @param [Hash,#to_h]
143
+ # @param [Hash,#to_h] other_hash
146
144
  # @return [OpenStructWithHashAccess] a new instance of an OpenStructWithHashAccess
147
145
  def merge other_hash
148
146
  self.class.new nested_class, to_h.merge((other_hash if other_hash.is_a? Hash) || other_hash.to_h)
@@ -150,7 +148,7 @@ module Blacklight
150
148
 
151
149
  ##
152
150
  # Merge the values of another OpenStruct or Hash into this object
153
- # @param [Hash,#to_h]
151
+ # @param [Hash,#to_h] other_hash
154
152
  # @return [OpenStructWithHashAccess] a new instance of an OpenStructWithHashAccess
155
153
  def merge! other_hash
156
154
  @table.merge!(nested_class, (other_hash if other_hash.is_a? Hash) || other_hash.to_h)
@@ -162,15 +160,20 @@ module Blacklight
162
160
  def method_missing(mid, *args)
163
161
  len = args.length
164
162
 
165
- if len == 0
163
+ if len.zero?
166
164
  new_ostruct_member(mid)
167
165
  @table[mid]
168
166
  else
169
167
  super
170
168
  end
171
169
  end
170
+
171
+ def respond_to_missing?(*_)
172
+ true
173
+ end
172
174
 
173
175
  private
176
+
174
177
  def set_default_proc!
175
178
  self.default_proc = lambda do |hash, key|
176
179
  hash[key] = self.nested_class.new
@@ -21,7 +21,6 @@ module Blacklight
21
21
  //= require blacklight/blacklight
22
22
  EOF
23
23
  end
24
-
25
24
  end
26
25
 
27
26
  private
@@ -17,6 +17,5 @@ module Blacklight
17
17
  def create_solr_document
18
18
  template "solr_document.rb", "app/models/#{model_name}.rb"
19
19
  end
20
-
21
20
  end
22
21
  end