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
17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/rbbt/tsv/dumper.rb', line 17 def initialize(, filename = nil) if TSV === = ..merge(:key_field => .key_field, :fields => .fields) @filename ||= .filename else = @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 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 |
# 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 Exception raise $! end end dumper.stream end |
.values_to_s(values, fields = nil) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/rbbt/tsv/dumper.rb', line 29 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
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/rbbt/tsv/dumper.rb', line 54 def add(k,v) @fields ||= [: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 raise $! end end |
#close ⇒ Object
73 74 75 |
# File 'lib/rbbt/tsv/dumper.rb', line 73 def close close_in end |
#close_in ⇒ Object
69 70 71 |
# File 'lib/rbbt/tsv/dumper.rb', line 69 def close_in @in_stream.close unless @in_stream.closed? end |
#close_out ⇒ Object
65 66 67 |
# File 'lib/rbbt/tsv/dumper.rb', line 65 def close_out @stream.close unless @stream.closed? end |
#init ⇒ Object
44 45 46 47 48 49 50 51 52 |
# File 'lib/rbbt/tsv/dumper.rb', line 44 def init = .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 |