Class: Rools::CsvTable
Instance Attribute Summary collapse
-
#rules ⇒ Object
readonly
Returns the value of attribute rules.
Instance Method Summary collapse
-
#initialize(fileName) ⇒ CsvTable
constructor
A new instance of CsvTable.
-
#quote(str) ⇒ Object
return quoted String or Number There is probably a more elagant way of doing this but…
Methods inherited from Base
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
#rules ⇒ Object (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 |