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