Sha256: aab3e7f46c1b0dbb94fb67a020c833e433289d55ce3e56784e82a62649ce945e
Contents?: true
Size: 1.82 KB
Versions: 5
Compression:
Stored size: 1.82 KB
Contents
# frozen_string_literal: true module Katalyst module Tables module Collection module Query # :nodoc: extend ActiveSupport::Concern include Filtering class_methods do def search_attribute _default_attributes.each_value do |attribute| return attribute.name if attribute.type.type == :search end nil end end included do attribute :q, :query, default: "" alias_attribute :query, :q attribute :p, :integer, filter: false alias_attribute :position, :p end using Type::Helpers::Extensions def examples_for(key) key = key.to_s examples_method = "#{key.parameterize.underscore}_examples" if respond_to?(examples_method) public_send(examples_method)&.map { |e| e.is_a?(Example) ? e : Example.new(example) } elsif @attributes.key?(key) @attributes[key].type.examples_for(unscoped_items, @attributes[key]) end end def query_active?(attribute) @attributes[attribute].query_range&.cover?(position) end private def _assign_attributes(new_attributes) result = super if query_changed? parser = Parser.new(self).parse(query) parser.tagged.each do |k, p| if @attributes.key?(k) _assign_attribute(k, p.value) @attributes[k].query_range = p.range else errors.add(k, :unknown) end end if parser.untagged.any? && (search = self.class.search_attribute) _assign_attribute(search, parser.untagged.join(" ")) end end result end end end end end
Version data entries
5 entries across 5 versions & 1 rubygems