Sha256: 18e70ba63f2739e4295530340507ada30600ecf5ec0cb7fa951cb6cd79ff4c6f

Contents?: true

Size: 1.13 KB

Versions: 311

Compression:

Stored size: 1.13 KB

Contents

module TSV
  def self.melt(tsv, key_field, header_field, fields, *info_fields, &block)
    dumper = TSV::Dumper.new :key_field => "ID", :fields => [key_field] + info_fields, :type => :list
    dumper.init
    TSV.traverse tsv, :into => dumper, :fields => info_fields do |k,values|
      values = [values] if tsv.type == :single
      values = values.collect{|v| [v]} if tsv.type == :list
      values = Misc.zip_fields(values) if tsv.type == :double

      res = []
      values.each_with_index do |value,i|
        info_values = if block_given?
                        new = block.call value
                        next if new.nil?
                        new
                      else
                        value
                      end
        
        info_values = [info_values] unless tsv.type == :double
        id = [k, i] * ":"
        res << [id, [k] + [info_values].flatten]
      end
      res.extend MultipleResult
      res
    end
  end

  def melt(header_field = nil, *info_fields, &block)
    info_fields = fields if info_fields.nil? || info_fields.empty?
    TSV.melt self, key_field, header_field, fields, *info_fields, &block
  end
end

Version data entries

311 entries across 311 versions & 1 rubygems

Version Path
rbbt-util-6.0.3 lib/rbbt/tsv/melt.rb
rbbt-util-5.44.1 lib/rbbt/tsv/melt.rb
rbbt-util-5.43.0 lib/rbbt/tsv/melt.rb
rbbt-util-5.42.0 lib/rbbt/tsv/melt.rb
rbbt-util-5.41.1 lib/rbbt/tsv/melt.rb
rbbt-util-5.41.0 lib/rbbt/tsv/melt.rb
rbbt-util-5.40.5 lib/rbbt/tsv/melt.rb
rbbt-util-5.40.4 lib/rbbt/tsv/melt.rb
rbbt-util-5.40.3 lib/rbbt/tsv/melt.rb
rbbt-util-5.40.0 lib/rbbt/tsv/melt.rb
rbbt-util-5.39.0 lib/rbbt/tsv/melt.rb
rbbt-util-5.38.1 lib/rbbt/tsv/melt.rb
rbbt-util-5.38.0 lib/rbbt/tsv/melt.rb
rbbt-util-5.37.16 lib/rbbt/tsv/melt.rb
rbbt-util-5.37.15 lib/rbbt/tsv/melt.rb
rbbt-util-5.37.14 lib/rbbt/tsv/melt.rb
rbbt-util-5.37.13 lib/rbbt/tsv/melt.rb
rbbt-util-5.37.12 lib/rbbt/tsv/melt.rb
rbbt-util-5.37.11 lib/rbbt/tsv/melt.rb
rbbt-util-5.37.10 lib/rbbt/tsv/melt.rb