Sha256: fbd2b5cf3561ed6045bc899ff262d108cd2a61d8ce75c69e13166a8ca373982b

Contents?: true

Size: 1.53 KB

Versions: 8

Compression:

Stored size: 1.53 KB

Contents

module TSV
  def self.change_key(source, new_key_field, identifiers: nil, one2one: false, stream: false, keep: false, persist_identifiers: nil)
    source = TSV::Parser.new source if String === source
    if identifiers && source.identify_field(new_key_field, strict: true).nil?
      identifiers = identifiers.nil? ? source.identifiers : identifiers
      new = source.attach(identifiers, fields: [new_key_field], insitu: false, one2one: true, persist_input: persist_identifiers)
      new = new.change_key(new_key_field, keep: keep, stream: stream, one2one: one2one)
      return new
    end

    fields = source.fields.dup - [new_key_field]
    fields.unshift source.key_field if keep
    transformer = TSV::Transformer.new source
    transformer.key_field = new_key_field
    transformer.fields = fields
    transformer.traverse key_field: new_key_field, fields: fields, one2one: one2one, unnamed: true do |k,v|
      [k, v]
    end

    stream ? transformer : transformer.tsv
  end

  def change_key(*args, **kwargs)
    TSV.change_key(self, *args, **kwargs)
  end

  def self.change_id(source, source_id, new_id, identifiers: nil, one2one: false, insitu: false)
    source = TSV::Parser.new source if String === source

    identifiers = identifiers.nil? ? source.identifiers : identifiers

    new_fields = source.fields.dup
    new_fields[new_fields.index(source_id)] = new_id
    return source.attach(identifiers, fields: [new_id], insitu: insitu).slice(new_fields)
  end

  def change_id(*args, **kwargs)
    TSV.change_id(self, *args, **kwargs)
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
scout-gear-10.3.0 lib/scout/tsv/change_id.rb
scout-gear-10.2.0 lib/scout/tsv/change_id.rb
scout-gear-10.1.0 lib/scout/tsv/change_id.rb
scout-gear-10.0.1 lib/scout/tsv/change_id.rb
scout-gear-9.1.0 lib/scout/tsv/change_id.rb
scout-gear-9.0.0 lib/scout/tsv/change_id.rb
scout-gear-8.1.0 lib/scout/tsv/change_id.rb
scout-gear-8.0.0 lib/scout/tsv/change_id.rb