Sha256: 0ab23fb197ed1c06b427a9b95f1d21fc0dc01d193232eddc29e040be11ac0fab

Contents?: true

Size: 1.06 KB

Versions: 6

Compression:

Stored size: 1.06 KB

Contents

module CloudSesame
	module Query
		module DSL
			module FilterQueryMethods

				def included?(field, value = nil)
					!!(
						(field_options = dsl_context[:fields][field.to_sym]) &&
						(applied = field_options[:applied]) &&
						(
							(!value && applied.values.any?) ||
							(
								value && (index = applied.keys.index(value)) &&
								(field_options[:applied].values[index] != false)
							)
						)
					)
				end

				def excluded?(field, value = nil)
					!!(
						(field_options = dsl_context[:fields][field.to_sym]) &&
						(applied = field_options[:applied]) &&
						(
							(!value && !applied.values.all?) ||
							(
								value && (index = applied.keys.index(value)) &&
								field_options[:applied].values[index] == false
							)
						)
					)
				end

				def applied_filters
					applied = {}
					dsl_context[:fields].each do |field, options|
						if options && options[:applied] &&
							!(values = options[:applied].select { |k, v| v }.keys).empty?
							applied[field] = values
						end
					end
					applied
				end

			end
		end
	end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
CloudSesame-0.4.6 lib/cloud_sesame/query/dsl/filter_query_methods.rb
CloudSesame-0.4.5 lib/cloud_sesame/query/dsl/filter_query_methods.rb
CloudSesame-0.4.4 lib/cloud_sesame/query/dsl/filter_query_methods.rb
CloudSesame-0.4.3 lib/cloud_sesame/query/dsl/filter_query_methods.rb
CloudSesame-0.4.2 lib/cloud_sesame/query/dsl/filter_query_methods.rb
CloudSesame-0.4.1 lib/cloud_sesame/query/dsl/filter_query_methods.rb