Class: Elasticated::TermDelimiterFactory
- Inherits:
-
Object
- Object
- Elasticated::TermDelimiterFactory
- Defined in:
- lib/elasticated/term_delimiter_factory.rb
Instance Method Summary collapse
- #create(empty_delimiter, query_delimiters, opts = {}) ⇒ Object
- #merge_delimiters(condition_delimiters, aggregation_delimiters, field) ⇒ Object
- #relevant_field_delimiters(all_delimiters, field) ⇒ Object
Instance Method Details
#create(empty_delimiter, query_delimiters, opts = {}) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/elasticated/term_delimiter_factory.rb', line 4 def create(empty_delimiter, query_delimiters, opts={}) klass = Delimiters::TermFieldDelimiter field = empty_delimiter.field_name delimit_by = opts.fetch(:delimit_by, [:conditions]) case delimit_by when [] relevant_delimiters = [] when [:conditions] relevant_delimiters = relevant_field_delimiters(query_delimiters.fetch(:conditions), field) when [:aggregations] relevant_delimiters = relevant_field_delimiters(query_delimiters.fetch(:aggregations), field) else condition_delimiters = query_delimiters.fetch(:conditions) aggregation_delimiters = query_delimiters.fetch(:aggregations) relevant_delimiters = [merge_delimiters(condition_delimiters, aggregation_delimiters,field)] end values = empty_delimiter.values + relevant_delimiters.flat_map(&:values).flatten(1) klass.new(values: values, field: field, as: empty_delimiter.filter_name) end |
#merge_delimiters(condition_delimiters, aggregation_delimiters, field) ⇒ Object
34 35 36 37 38 |
# File 'lib/elasticated/term_delimiter_factory.rb', line 34 def merge_delimiters(condition_delimiters, aggregation_delimiters, field) aggregation_delimiters_by_field = extract_aggregation_delimiters(aggregation_delimiters, field) condition_delimiters_by_field = extract_condition_delimiters(condition_delimiters,field) aggregation_delimiters_by_field.merge condition_delimiters_by_field end |
#relevant_field_delimiters(all_delimiters, field) ⇒ Object
27 28 29 30 31 32 |
# File 'lib/elasticated/term_delimiter_factory.rb', line 27 def relevant_field_delimiters(all_delimiters, field) all_delimiters.each_with_object(Array.new) do |delimiter, array| field_delimiter = delimiter.select { |k,_| k == field } array << field_delimiter unless field_delimiter.empty? end end |