lib/meilisearch-rails.rb in meilisearch-rails-0.8.1 vs lib/meilisearch-rails.rb in meilisearch-rails-0.9.0

- old
+ new

@@ -58,13 +58,15 @@ rankingRules attributesToHighlight attributesToCrop cropLength pagination + faceting + typoTolerance ].freeze - CAMELIZE_OPTIONS = %i[pagination].freeze + CAMELIZE_OPTIONS = %i[pagination faceting typoTolerance].freeze OPTIONS.each do |option| define_method option do |value| instance_variable_set("@#{option}", value) end @@ -196,18 +198,27 @@ def get_setting(name) instance_variable_get("@#{name}") end + def camelize_keys(hash) + hash.transform_keys { |key| key.to_s.camelize(:lower) } + end + def to_settings settings = {} OPTIONS.each do |k| v = get_setting(k) next if v.nil? settings[k] = if CAMELIZE_OPTIONS.include?(k) && v.is_a?(Hash) - v.transform_keys { |key| key.to_s.camelize(:lower) } + v = camelize_keys(v) + + # camelize keys of nested hashes + v.each do |key, value| + v[key] = camelize_keys(value) if value.is_a?(Hash) + end else v end end settings @@ -585,23 +596,19 @@ index = ms_index(index_uid) index.search(q, params.to_h { |k, v| [k, v] }) end module AdditionalMethods - def self.extended(base) - class << base - alias_method :raw_answer, :ms_raw_answer unless method_defined? :raw_answer - alias_method :facets_distribution, :ms_facets_distribution unless method_defined? :facets_distribution - end - end - def ms_raw_answer @ms_json end def ms_facets_distribution @ms_json['facetDistribution'] end + + alias raw_answer ms_raw_answer unless method_defined? :raw_answer + alias facets_distribution ms_facets_distribution unless method_defined? :facets_distribution private def ms_init_raw_answer(json) @ms_json = json