Class: Rools::CsvTable

Inherits:
Base
  • Object
show all
Defined in:
lib/rools/csv_table.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#logger, logger=

Constructor Details

#initialize(fileName) ⇒ CsvTable

Returns a new instance of CsvTable.



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/rools/csv_table.rb', line 21

def initialize( fileName )
  csv_data = IO.read( fileName)
  arrs = []
  CSV::Reader.parse(csv_data, ",", "\r") do |row|
    #puts "row:#{row.inspect}"
    arrs << row
  end
  
  # get rule parameter 
  parameter = arrs[1][1]
  #puts "parameter:#{parameter}"
  
  # get rule elements Conditions/Consequences
  rule_elements = arrs[2]
  
  # get code
  rule_code = arrs[3]      
  
  # get headers
  headers = arrs[4]
  
  #get number of rules
  num_rules = arrs.size-5
  #puts "num rules: #{num_rules}"
  
  index   = 0
  @rules  = ""
  arrs[5..arrs.size].each { |arr|
    rule_name = "rule_#{index}"
    #puts "arr:#{arr} index: #{index}"
    
    #if rule_elements[index] != nil
      @rules << "rule '#{rule_name}' do \n"
      @rules << "  parameter #{parameter}\n"
      column = 0
      
      rule_elements.each do |element|
        
        field  = headers[column].downcase if headers[column]
        str    = arr[column]
        
        if str != nil && element != nil
          #puts ("eval: #{field} = '#{str}'")
          #eval( "#{field} = '#{str}'" )
  
          @rules << "\t" + element.downcase + "{ "
          pattern = "\#\{#{field}\}"
          
          #puts rule_code[column]
          #puts "pattern: #{pattern} str:#{str}"
          if rule_code[column] == pattern
            statement = str # straight replace
          else
            statement = rule_code[column].gsub(pattern,quote(str))
          end
          
          #puts "statement:#{statement}"
          
          @rules << statement     
          @rules << "}\n"
        end
        
        column += 1
      end
      @rules << "end\n"
    #end
    index += 1
  }
end

Instance Attribute Details

#rulesObject (readonly)

Returns the value of attribute rules.



9
10
11
# File 'lib/rools/csv_table.rb', line 9

def rules
  @rules
end

Instance Method Details

#quote(str) ⇒ Object

return quoted String or Number There is probably a more elagant way of doing this but…



15
16
17
18
19
# File 'lib/rools/csv_table.rb', line 15

def quote( str )
  return str if (str.to_i.to_s == str)
  return str if (str.to_f.to_s == str)
  '"' + str + '"'
end