blacklight 6.5.0 → 6.6.0

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