fa3883ef65d5aa763d9a17dae7385815fda2e904
[quanlib.git] / classify / fastset.rb
1
2 class FastSet
3   @@fast_csv_file = 'fast.csv'
4
5   def initialize
6     @entries = {}
7     load!(@@fast_csv_file)
8   end
9
10   def add(id, descr)
11     @entries[id] = descr
12   end
13
14   def has_key?(value)
15     @entries.has_key?(value)
16   end
17
18   def inspect 
19     data = []
20
21     if nil != @entries 
22       data.push('entries=' + @entries.inspect + '') 
23     end
24
25     return '(FastSet:' + data.join(',') + ')'
26   end
27
28   def load!(file_name)
29     first = true
30     @entries = {}
31
32     if ! File.exist?(file_name)
33       puts 'WARNING:  file "' + file_name + '" not found.'
34       return 
35     end
36
37     File.open(file_name, 'r:UTF-8').each_line do |line|
38       cols = line.split(/,/)
39       if first
40         first = false
41       elsif cols.length > 1
42         id = cols[0]
43         descr = cols[1]
44         @entries[id] = descr
45       end
46     end
47   end
48
49   def save(file_name)
50     File.open(file_name, 'w:UTF-8') do |fd|
51       fd.puts('Code,Description')
52       
53       @entries.keys.sort.each do |key|
54         fd.puts(key.to_s + ',' + @entries[key].to_s)
55       end
56     end
57   end
58
59   def save_state
60     save(@@fast_csv_file)
61   end
62 end
63