module ActsAsCleo::InstanceMethods

Public Instance Methods

as_cleo()
Alias for: to_cleo_result
cleo_id() click to toggle source

end callback hooks

# File lib/acts_as_cleo/instance_methods.rb, line 26
def cleo_id
  return nil if self.id.nil?
  cr = cleo_reference

  return nil if cr.nil?
  return cr.id
end
cleo_reference() click to toggle source
# File lib/acts_as_cleo/instance_methods.rb, line 82
def cleo_reference
  Cleo::Element.find(:first, :conditions => ["record_type = ? and record_id = ?", record_type, self.id])
end
cleo_score() click to toggle source
# File lib/acts_as_cleo/instance_methods.rb, line 61
def cleo_score
  s = self.send(self.cleo_config[:score])

  begin
    return Float(s)
  rescue ArgumentError => e
    if s.nil?
      return 0
    elsif s.respond_to?("count")
      return s.count
    end
  end

  return s
end
create_cleo() click to toggle source

callback hooks to keep cleo insync with data

# File lib/acts_as_cleo/instance_methods.rb, line 4
def create_cleo
  Cleo::ElementServer.create(self)
end
record_type() click to toggle source
# File lib/acts_as_cleo/instance_methods.rb, line 78
def record_type
  self.cleo_config[:type]
end
remove_from_cleo() click to toggle source
# File lib/acts_as_cleo/instance_methods.rb, line 12
def remove_from_cleo
  cr = cleo_reference
  current_cleo_id = self.cleo_id
  cr.delete

  Cleo::ElementServer.delete(current_cleo_id)
end
set_cleo_id() click to toggle source
# File lib/acts_as_cleo/instance_methods.rb, line 20
def set_cleo_id
  cr = Cleo::Element.find(:first, :conditions => ["record_type = ? and record_id = ?", record_type, self.id])
  cr = Cleo::Element.create(:record_type => record_type, :record_id => self.id) if cr.nil?
end
to_cleo_result() click to toggle source
# File lib/acts_as_cleo/instance_methods.rb, line 34
def to_cleo_result
  #take self and change it into a Cleo::Xml::Result and return
  cr = Cleo::Xml::Result.new
  cr.term = []

  to_process = []

  self.cleo_config[:terms].each do |term|
    to_process << self.send(term).to_s.downcase
  end

  cr.term = clean_terms_for_storage(to_process).flatten

  set_cleo_id if self.cleo_id.nil? && !self.id.nil?
  cr.id = self.cleo_id

  cr.name = self.send(self.cleo_config[:name]).to_s.downcase
  cr.name = cr.term.first if cr.name.blank?
  cr.name = cr.name.gsub('&', 'and')

  cr.score = self.cleo_score

  cr
end
Also aliased as: as_cleo
update_cleo() click to toggle source
# File lib/acts_as_cleo/instance_methods.rb, line 8
def update_cleo
  Cleo::ElementServer.update(self)
end

Private Instance Methods

clean_terms_for_storage(to_process) click to toggle source
# File lib/acts_as_cleo/instance_methods.rb, line 87
def clean_terms_for_storage(to_process)
  to_process = to_process.compact.flatten.reject(&:blank?)
  to_process.collect!{|i| i.split(/\W+/).collect(&:strip) }.compact
  to_process = to_process.reject{|i| drop_words.include?(i) }
  to_process.uniq
end
drop_words() click to toggle source
# File lib/acts_as_cleo/instance_methods.rb, line 94
def drop_words
  %w{and the this that no yes}
end