Module: Aska::InstanceMethods

Defined in:
lib/aska.rb

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(m, *args) ⇒ Object



43
44
45
46
47
48
49
50
51
52
# File 'lib/aska.rb', line 43

def method_missing(m, *args)
  if self.class.defined_rules.has_key?("#{m}")
    self.class.send(:define_method, m) do
      self.class.look_up_rules(m)
    end
    self.send m
  else
    super
  end
end

Instance Method Details

#rulesObject



24
25
26
# File 'lib/aska.rb', line 24

def rules
  @rules ||= self.class.defined_rules
end

#valid_rule?(rule, rules) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
36
37
38
39
40
41
42
# File 'lib/aska.rb', line 33

def valid_rule?(rule, rules)
  return false unless rule # Can't apply a rule that is nil, can we?
  rule.each do |key,value|
    begin
      return eval(value)
    rescue Exception => e
      return false
    end
  end
end

#valid_rules?(name = :rules) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
30
31
32
# File 'lib/aska.rb', line 27

def valid_rules?(name=:rules)
  self.class.look_up_rules(name).each do |rule|
    return false unless valid_rule?(rule, name)
  end
  return true
end