11
12
13
14
15
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
|
# File 'lib/kut/net_list/pcad.rb', line 11
def load(f_in)
components = {}
cur_cmp = nil
cur_net = nil
f_in.each_line { |line|
if mh = /^\s*\(compInst\s*\"([^\"]*)\"/.match(line)
ref = mh[1]
cur_cmp = components[ref]
unless cur_cmp then
cur_cmp = OpenStruct.new
cur_cmp.reference = ref
cur_cmp.nets = []
components[ref] = cur_cmp
end
end
if (mh = /^\s*\(compValue\s*\"([^\"]*)\"/.match(line)) && cur_cmp
cur_cmp.value = mh[1]
end
if (mh = /^\s*\(originalName\s*\"([^\"]*)\"/.match(line)) && cur_cmp
cur_cmp. = mh[1]
end
if mh = /^\s*\(net\s\"([^\"]*)\"/.match(line)
cur_net = mh[1]
end
if (mh = /^\s*\(node\s+\"([^\"]*)\"\s+\"([^\"]*)\"\s*\)/.match(line)) && cur_net
ref = mh[1]
cmp = components[ref]
unless cmp then
cmp = OpenStruct.new
cmp.reference = ref
cmp.nets = []
components[ref] = cmp
end
cmp.nets << {:net => cur_net, :pin => mh[1]}
end
if /^\s*\)/ =~ line
cur_cmp = nil
cur_net = nil
end
}
@components = components.values
end
|