Sha256: 4ade1937a5857a1ef609f640132d4617fa43046589a68e4731c5432eee7f1d4b

Contents?: true

Size: 1.98 KB

Versions: 71

Compression:

Stored size: 1.98 KB

Contents

module TSV

  class CleanSerializer
    def self.dump(o); o end
    def self.load(o); o end
  end

  class IntegerSerializer
    def self.dump(i); [i].pack("l"); end
    def self.load(str); str.unpack("l").first; end
  end

  class FloatSerializer
    def self.dump(i); [i].pack("d"); end
    def self.load(str); str.unpack("d").first; end
  end

  class IntegerArraySerializer
    def self.dump(a); a.pack("l*"); end
    def self.load(str); str.unpack("l*"); end
  end

  class FloatArraySerializer
    def self.dump(a); a.pack("d*"); end
    def self.load(str); str.unpack("d*"); end
  end

  class StringSerializer
    def self.dump(str); str.to_s; end
    def self.load(str); str.dup; end
  end

  class StringArraySerializer
    def self.dump(array)
      array.collect{|a| a.to_s} * "\t"
    end

    def self.load(string)
      return nil if string.nil? or string == 'nil'
      return [] if string.empty?
      string.split("\t", -1)
    end
  end

  class StringDoubleArraySerializer
    def self.dump(array)
      array.collect{|a| a.collect{|a| a.to_s} * "|"} * "\t"
    end

    def self.load(string)
      return [] if string.nil?
      string.split("\t", -1).collect{|l| l.split("|", -1)}
    end
  end

  class TSVMarshalSerializer
    def self.dump(tsv)
      Marshal.dump(tsv.dup)
    end

    def self.load(string)
      TSV.setup Marshal.load(string)
    end
  end

  class TSVSerializer
    def self.dump(tsv)
      tsv.to_s
    end

    def self.load(string)
      TSV.open StringIO.new(string)
    end
  end

  SERIALIZER_ALIAS = {
    :integer => IntegerSerializer, 
    :float => FloatSerializer, 
    :integer_array => IntegerArraySerializer,
    :float_array => FloatArraySerializer,
    :marshal => Marshal,
    :single => StringSerializer,
    :string => StringSerializer,
    :list => StringArraySerializer,
    :flat => StringArraySerializer,
    :double => StringDoubleArraySerializer,
    :clean => CleanSerializer,
    :tsv => TSVSerializer,
    :marshal_tsv => TSVMarshalSerializer
  }

end

Version data entries

71 entries across 71 versions & 1 rubygems

Version Path
rbbt-util-5.21.45 lib/rbbt/tsv/serializers.rb
rbbt-util-5.21.44 lib/rbbt/tsv/serializers.rb
rbbt-util-5.21.43 lib/rbbt/tsv/serializers.rb
rbbt-util-5.21.42 lib/rbbt/tsv/serializers.rb
rbbt-util-5.21.39 lib/rbbt/tsv/serializers.rb
rbbt-util-5.21.38 lib/rbbt/tsv/serializers.rb
rbbt-util-5.21.37 lib/rbbt/tsv/serializers.rb
rbbt-util-5.21.36 lib/rbbt/tsv/serializers.rb
rbbt-util-5.21.35 lib/rbbt/tsv/serializers.rb
rbbt-util-5.21.34 lib/rbbt/tsv/serializers.rb
rbbt-util-5.21.33 lib/rbbt/tsv/serializers.rb
rbbt-util-5.21.32 lib/rbbt/tsv/serializers.rb
rbbt-util-5.21.31 lib/rbbt/tsv/serializers.rb
rbbt-util-5.21.30 lib/rbbt/tsv/serializers.rb
rbbt-util-5.21.29 lib/rbbt/tsv/serializers.rb
rbbt-util-5.21.28 lib/rbbt/tsv/serializers.rb
rbbt-util-5.21.27 lib/rbbt/tsv/serializers.rb
rbbt-util-5.21.26 lib/rbbt/tsv/serializers.rb
rbbt-util-5.21.25 lib/rbbt/tsv/serializers.rb
rbbt-util-5.21.24 lib/rbbt/tsv/serializers.rb