class FileManipulator::Splitter

Attributes

config[R]

Public Class Methods

new(config = FileManipulator.configuration) click to toggle source
# File lib/file_manipulator/splitter.rb, line 5
def initialize(config = FileManipulator.configuration)
  @config = config
end

Public Instance Methods

run() click to toggle source
# File lib/file_manipulator/splitter.rb, line 9
def run
  index = 0
  encoding = File.read(file_name).encoding.to_s

  File.open(file_name, 'r') do |input|
    until input.eof?
      File.open(File.join(config.split_files_directory, output_file_name(index)), 'w') do |output|
        output << input.read(config.size).force_encoding(encoding)
      end

      index += 1
    end
  end
end

Private Instance Methods

basename() click to toggle source
# File lib/file_manipulator/splitter.rb, line 26
def basename
  File.basename(file_name, File.extname(file_name))
end
extname() click to toggle source
# File lib/file_manipulator/splitter.rb, line 30
def extname
  File.extname(file_name).delete('.')
end
file_name() click to toggle source
# File lib/file_manipulator/splitter.rb, line 34
def file_name
  config.file_name
end
number_of_digits() click to toggle source
# File lib/file_manipulator/splitter.rb, line 38
def number_of_digits
  @number_of_digits ||= (File.size(file_name).to_f / config.size).ceil.to_s.size
end
output_file_name(index) click to toggle source
# File lib/file_manipulator/splitter.rb, line 42
def output_file_name(index)
  output_file_basename = sprintf("#{basename}_%0#{number_of_digits}d", index)
  output_file_basename = "#{prefix}_#{output_file_basename}" unless prefix == ''
  extname == '' ? output_file_basename : "#{output_file_basename}.#{extname}"
end
prefix() click to toggle source
# File lib/file_manipulator/splitter.rb, line 48
def prefix
  config.prefix
end