Sha256: d7b5ed7bce3cff5192c6d55143283f409685a4ec4564ff8c417eb643617c70b8
Contents?: true
Size: 1000 Bytes
Versions: 6
Compression:
Stored size: 1000 Bytes
Contents
require 'togostanza/stanza/search_query' class TogoStanza::NoSearchDeclarationError < StandardError; end module TogoStanza::Stanza module TextSearch extend ActiveSupport::Concern def text_search_filter(var_name, query) query.to_filter(TogoStanza.text_search_method, var_name) end def text_search(input) raise TogoStanza::NoSearchDeclarationError unless self.class.method_defined?(:search_declarations) query = SearchQuery.new(input) return [] if query.tokens.empty? search_declarations.each_value.flat_map {|block| instance_exec(query, &block) } end module ClassMethods def search(symbol, &block) unless method_defined?(:search_declarations) # テキスト検索宣言の初期化 instance_eval do class_attribute :search_declarations self.search_declarations = {} end end search_declarations[symbol] = block end end end end
Version data entries
6 entries across 6 versions & 1 rubygems