Sha256: 8468c169c40d273f0e3ccdb74b4196790e606d991328b79f90c7c79b8b1d88d0

Contents?: true

Size: 1.28 KB

Versions: 9

Compression:

Stored size: 1.28 KB

Contents

module ActiveRecord::Import
  class ValueSetsBytesParser
    attr_reader :reserved_bytes, :max_bytes, :values

    def self.parse(values, options)
      new(values, options).parse
    end

    def initialize(values, options)
      @values = values
      @reserved_bytes = options[:reserved_bytes]
      @max_bytes = options[:max_bytes]
    end

    def parse
      value_sets = []
      arr = []
      current_size = 0
      values.each_with_index do |val, i|
        comma_bytes = arr.size
        bytes_thus_far = reserved_bytes + current_size + val.bytesize + comma_bytes
        if bytes_thus_far <= max_bytes
          current_size += val.bytesize
          arr << val
        else
          value_sets << arr
          arr = [val]
          current_size = val.bytesize
        end

        # if we're on the last iteration push whatever we have in arr to value_sets
        value_sets << arr if i == (values.size - 1)
      end

      [*value_sets]
    end
  end

  class ValueSetsRecordsParser
    attr_reader :max_records, :values

    def self.parse(values, options)
      new(values, options).parse
    end

    def initialize(values, options)
      @values = values
      @max_records = options[:max_records]
    end

    def parse
      @values.in_groups_of(max_records, false)
    end
  end
end

Version data entries

9 entries across 9 versions & 2 rubygems

Version Path
activerecord-import-0.16.2 lib/activerecord-import/value_sets_parser.rb
activerecord-import-0.16.1 lib/activerecord-import/value_sets_parser.rb
activerecord-import-0.16.0 lib/activerecord-import/value_sets_parser.rb
activerecord-import-uuid-0.2 lib/activerecord-import/value_sets_parser.rb
activerecord-import-uuid-0.1 lib/activerecord-import/value_sets_parser.rb
activerecord-import-0.15.0 lib/activerecord-import/value_sets_parser.rb
activerecord-import-0.14.1 lib/activerecord-import/value_sets_parser.rb
activerecord-import-0.14.0 lib/activerecord-import/value_sets_parser.rb
activerecord-import-0.13.0 lib/activerecord-import/value_sets_parser.rb