Sha256: e1c8dd8a1417dfe74773e19a2e9f5ecb1f999fdf6737843246b956b33ba8deda
Contents?: true
Size: 1.15 KB
Versions: 1
Compression:
Stored size: 1.15 KB
Contents
module Garb class FilterParameters def self.define_operator(key, operation) class_eval <<-CODE def #{key}(target, value) self.parameters << {Operator.new(target, '#{operation}') => value} end CODE end define_operator(:eql, '==') define_operator(:not_eql, '!=') define_operator(:gt, '>') define_operator(:gte, '>=') define_operator(:lt, '<') define_operator(:lte, '<=') define_operator(:matches, '==') define_operator(:does_not_match, '!=') define_operator(:contains, '=~') define_operator(:does_not_contain, '!~') define_operator(:substring, '=@') define_operator(:not_substring, '!@') attr_accessor :parameters def initialize self.parameters = [] end def filters(&block) instance_eval &block end def to_params value = self.parameters.map do |param| param.map do |k,v| next unless k.is_a?(Garb::Operator) "#{k.target}#{URI.encode(k.operator.to_s, /[=<>]/)}#{CGI::escape(v.to_s)}" end.join(',') # Hash AND end.join(';') # Array OR value.empty? ? {} : {'filters' => value} end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
garb-0.5.0 | lib/garb/filter_parameters.rb |