Class: TSV::Dumper
- Inherits:
-
Object
- Object
- TSV::Dumper
- Defined in:
- lib/rbbt/tsv/dumper.rb
Instance Attribute Summary collapse
-
#filename ⇒ Object
Returns the value of attribute filename.
-
#in_stream ⇒ Object
Returns the value of attribute in_stream.
-
#options ⇒ Object
Returns the value of attribute options.
-
#stream ⇒ Object
Returns the value of attribute stream.
Class Method Summary collapse
Instance Method Summary collapse
- #add(k, v) ⇒ Object
- #close ⇒ Object
- #close_in ⇒ Object
- #close_out ⇒ Object
- #init ⇒ Object
-
#initialize(options, filename = nil) ⇒ Dumper
constructor
A new instance of Dumper.
Constructor Details
#initialize(options, filename = nil) ⇒ Dumper
Returns a new instance of Dumper.
18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/rbbt/tsv/dumper.rb', line 18 def initialize(, filename = nil) if TSV === @options = ..merge(:key_field => .key_field, :fields => .fields) @filename ||= .filename else @options = @filename = filename end @filename ||= Misc.fingerprint @stream, @in_stream = Misc.pipe end |
Instance Attribute Details
#filename ⇒ Object
Returns the value of attribute filename.
3 4 5 |
# File 'lib/rbbt/tsv/dumper.rb', line 3 def filename @filename end |
#in_stream ⇒ Object
Returns the value of attribute in_stream.
3 4 5 |
# File 'lib/rbbt/tsv/dumper.rb', line 3 def in_stream @in_stream end |
#options ⇒ Object
Returns the value of attribute options.
3 4 5 |
# File 'lib/rbbt/tsv/dumper.rb', line 3 def @options end |
#stream ⇒ Object
Returns the value of attribute stream.
3 4 5 |
# File 'lib/rbbt/tsv/dumper.rb', line 3 def stream @stream end |
Class Method Details
.stream(options = {}, filename = nil, &block) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/rbbt/tsv/dumper.rb', line 4 def self.stream( = {}, filename = nil, &block) dumper = TSV::Dumper.new , filename Thread.new(Thread.current) do |parent| begin yield dumper dumper.close rescue Aborted rescue Exception parent.raise $! end end dumper.stream end |
.values_to_s(values, fields = nil) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/rbbt/tsv/dumper.rb', line 30 def self.values_to_s(values, fields = nil) case values when nil if fields.nil? or fields.empty? "\n" else "\t" << ([""] * fields.length) * "\t" << "\n" end when Array "\t" << values.collect{|v| Array === v ? v * "|" : v} * "\t" << "\n" else "\t" << values.to_s << "\n" end end |
Instance Method Details
#add(k, v) ⇒ Object
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/rbbt/tsv/dumper.rb', line 55 def add(k,v) @fields ||= @options[:fields] begin Thread.pass while IO.select(nil, [@in_stream],nil,1).nil? @in_stream << k << TSV::Dumper.values_to_s(v, @fields) rescue IOError rescue Exception Log.exception $! end end |
#close ⇒ Object
75 76 77 |
# File 'lib/rbbt/tsv/dumper.rb', line 75 def close close_in end |
#close_in ⇒ Object
71 72 73 |
# File 'lib/rbbt/tsv/dumper.rb', line 71 def close_in @in_stream.close unless @in_stream.closed? end |
#close_out ⇒ Object
66 67 68 69 |
# File 'lib/rbbt/tsv/dumper.rb', line 66 def close_out Log.debug "Close out #{@stream.inspect}" @stream.close end |
#init ⇒ Object
45 46 47 48 49 50 51 52 53 |
# File 'lib/rbbt/tsv/dumper.rb', line 45 def init = @options.dup key_field, fields = Misc. , :key_field, :fields str = TSV.header_lines(key_field, fields, ) Thread.pass while IO.select(nil, [@in_stream],nil,1).nil? @in_stream.puts str end |