Module: Aska::ClassMethods

Defined in:
lib/poolparty/aska/aska.rb

Instance Method Summary collapse

Instance Method Details

#are_rules?(name) ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/poolparty/aska/aska.rb', line 38

def are_rules?(name)
  !look_up_rules(name).empty?
end

#aska_attr_accessorsObject



41
42
43
# File 'lib/poolparty/aska/aska.rb', line 41

def aska_attr_accessors
  @aska_attr_accessors ||= Rules.new
end

#aska_named(name) ⇒ Object



47
48
49
# File 'lib/poolparty/aska/aska.rb', line 47

def aska_named(name)
  "#{name}_aska"
end

#create_instance_variable(k, create_vars = true) ⇒ Object

end



28
29
30
31
32
33
34
# File 'lib/poolparty/aska/aska.rb', line 28

def create_instance_variable(k, create_vars=true)
  aska_attr_accessors << k.to_sym unless aska_attr_accessors.include?(k.to_sym)
  if create_vars
    attr_reader k.to_sym unless respond_to?("#{k}".to_sym)
    attr_writer k.to_sym unless respond_to?("#{k}=".to_sym)
  end
end

#defined_rulesObject



44
45
46
# File 'lib/poolparty/aska/aska.rb', line 44

def defined_rules
  @defined_rules ||= {}
end

#look_up_rules(name) ⇒ Object



35
36
37
# File 'lib/poolparty/aska/aska.rb', line 35

def look_up_rules(name)
  defined_rules[name.to_sym] ||= Rules.new
end

#rules(name = :rules, arr = [], create_vars = true) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/poolparty/aska/aska.rb', line 7

def rules(name=:rules, arr=[], create_vars=true)
  rs = look_up_rules(name)
  # returning look_up_rules(name) do |rs|
  arr.each do |line|
    next unless line
    rule = Rule.new(line)
    next unless rule.valid?
    k = rule.key
    v = rule.var
    m = rule.comparison

    create_instance_variable(k, create_vars)
    rs << {k => [m, v]}
    rs << {k => [">", "0"]} unless rs.reject {|a| a.to_s == "#{k}>0" }
  end
  self.send(:define_method, name) do
    look_up_rules(name)
  end
  rs
  # end
end