16
17
18
19
20
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
90
91
|
# File 'lib/Converter.rb', line 16
def convert
outputfilename = Util.makeAbsolute(@map['OutputFileName'], @configFile)
templatefilename = Util.makeAbsolute(@map['TemplateFile'], @configFile)
lineIdx = 0
tmpLineIdx = 0
set = true
begin
File.open(outputfilename, 'w') do |fout|
File.open(templatefilename) do |fread|
File.readlines(fread).each do |line|
lineIdx += 1
wroteLine = false
@map.keys.each do |key|
if line.include?(key.to_s) && @map[key].include?(".txt")
preAndPostfix = line.scan(/(.*)\$\$\(#{key}\)(.*)/)
if preAndPostfix.length == 1
prefix = preAndPostfix[0][0]
postfix = preAndPostfix[0][1]
end
filename = Util.makeAbsolute(@map[key], @configFile)
raise "Error: Template file #{File.basename(filename)} is empty!" if File.zero?(filename)
raise "Error: File #{File.basename(filename)} does not exist!" if !File.exist?(filename)
File.open(filename) do |fr|
File.readlines(fr).each do |l|
tmpLineIdx += 1
@map.keys.each do |k|
wroteLine = findAndReplace(k, l, fout, prefix, postfix)
break if wroteLine == true
end
if wroteLine == false
l.strip!
l = prefix + l + postfix + "\n"
m = l.match(/\$\$\((.*)\)/)
if m
puts "Info: Key $$(#{m[1]}) in #{File.basename(filename)}, line #{tmpLineIdx.to_s} wasn\'t replaced!" if m
end
fout.write(l)
set = false
end
end
end
elsif (@map[key][0] == "[") && (@map[key][-1] == "]")
@map.store(key,Util.strToArray(key, @map))
wroteLine = findAndReplace(key, line, fout, "", "")
break
elsif line.match(/\$\$\(#{key}\)/)
wroteLine = findAndReplace(key, line, fout, "", "")
break
end
end
if wroteLine == false
if set == true
m = line.match(/\$\$\((.*)\)/)
if m
puts "Info: Key $$(#{m[1]}) in #{File.basename(templatefilename)}, line #{lineIdx.to_s} wasn\'t replaced!"
end
fout.write(line)
end
set = true
end
end
end
end
raise "Error: Output file #{File.basename(outputfilename)} is empty!" if File.zero?(outputfilename)
raise "Error: Template file #{File.basename(templatefilename)} is empty!" if File.zero?(templatefilename)
rescue Exception => e
puts e.message
puts e.backtrace
abort
end
end
|