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
|
# File 'lib/code_holder.rb', line 32
def initialize(name, code_dir)
puts "LOAD code #{name}"
super(nil)
@order = []
@type = {}
mode = "config"
CSV.foreach(search_file(name, code_dir), :encoding => "UTF-8") do |row|
if mode == "config"
if row.first == "type"
@type[row[1].to_sym] = row[2]
end
mode = "header" if row.first == "#DATA"
elsif mode == "header"
@headers = row.map(&:to_sym)
mode = "data"
elsif mode == "data" && (row.first != "") && (row.first != nil)
code = Code.new(@headers.zip(row).flatten, @type)
raise DuplicateValue, code.value if self[code.value]
self[code.value.to_s] = code
self.instance_eval <<-EOS
def #{code.key}
self["#{code.value}"]
end
EOS
if code.position != "" && code.position != nil
raise DuplicatePosition if @order[code.position]
@order[code.position] = code.value
end
end
end
@order.compact!
end
|