--- /dev/null
+
+class FastSet
+ @@fast_csv_file = 'fast.csv'
+
+ def initialize
+ @entries = {}
+ load!(@@fast_csv_file)
+ end
+
+ def add(id, descr)
+ @entries[id] = descr
+ end
+
+ def has_key?(value)
+ @entries.has_key?(value)
+ end
+
+ def inspect
+ data = []
+
+ if nil != @entries
+ data.push('entries=' + @entries.inspect + '')
+ end
+
+ return '(FastSet:' + data.join(',') + ')'
+ end
+
+ def load!(file_name)
+ first = true
+ @entries = {}
+
+ if ! File.exist?(file_name)
+ puts 'WARNING: file "' + file_name + '" not found.'
+ return
+ end
+
+ File.open(file_name, 'r:UTF-8').each_line do |line|
+ cols = line.split(/,/)
+ if first
+ first = false
+ elsif cols.length > 1
+ id = cols[0]
+ descr = cols[1]
+ @entries[id] = descr
+ end
+ end
+ end
+
+ def save(file_name)
+ File.open(file_name, 'w:UTF-8') do |fd|
+ fd.puts('Code,Description')
+
+ @entries.keys.sort.each do |key|
+ fd.puts(key.to_s + ',' + @entries[key].to_s)
+ end
+ end
+ end
+
+ def save_state
+ save(@@fast_csv_file)
+ end
+end
+