From 4bd16f053847f2efe347ebda9136ef2233ee0d2c Mon Sep 17 00:00:00 2001 From: hukl Date: Tue, 28 Apr 2009 00:15:53 +0200 Subject: added thinking_sphinx plugin for fulltext search on nodes and heads --- .../thinking-sphinx/lib/thinking_sphinx/facet.rb | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 vendor/plugins/thinking-sphinx/lib/thinking_sphinx/facet.rb (limited to 'vendor/plugins/thinking-sphinx/lib/thinking_sphinx/facet.rb') diff --git a/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/facet.rb b/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/facet.rb new file mode 100644 index 0000000..e2db449 --- /dev/null +++ b/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/facet.rb @@ -0,0 +1,58 @@ +module ThinkingSphinx + class Facet + attr_reader :reference + + def initialize(reference) + @reference = reference + + if reference.columns.length != 1 + raise "Can't translate Facets on multiple-column field or attribute" + end + end + + def name + reference.unique_name + end + + def attribute_name + # @attribute_name ||= case @reference + # when Attribute + # @reference.unique_name.to_s + # when Field + @attribute_name ||= @reference.unique_name.to_s + "_facet" + # end + end + + def value(object, attribute_value) + return translate(object, attribute_value) if @reference.is_a?(Field) + + case @reference.type + when :string + translate(object, attribute_value) + when :datetime + Time.at(attribute_value) + when :boolean + attribute_value > 0 + else + attribute_value + end + end + + def to_s + name + end + + private + + def translate(object, attribute_value) + column.__stack.each { |method| + object = object.send(method) + } + object.send(column.__name) + end + + def column + @reference.columns.first + end + end +end \ No newline at end of file -- cgit v1.3