class ShatteredMachine::Io

Find all png or jpg image in a given directory. Generate output filename that doesn't overwrite existing file.

Constants

JPG_EXTENSIONS
PNG_EXTENSIONS
Paths

Attributes

output_filename[RW]

Public Class Methods

new(input_path, output_folder, output_filename) click to toggle source

@param input_path [string] input file or directory @param output_folder [string] output directory @param output_filename [string] output file name

# File lib/shattered_machine/io.rb, line 12
def initialize(input_path, output_folder, output_filename)
  @input_path = input_path
  @output_folder = output_folder
  @output_filename = output_filename
end

Public Instance Methods

jpg_images() click to toggle source

@return [Array<Paths>] list of all jpg images in input_path

# File lib/shattered_machine/io.rb, line 28
def jpg_images
  return single_image_io if extension_included?(JPG_EXTENSIONS, @input_path)

  images_in_directory(JPG_EXTENSIONS).map do |img|
    Paths.new("#{@input_path}/#{img}", generate_output_filename(img))
  end
end
png_images() click to toggle source

@return [Array<Paths>] list of all png images in input_path

# File lib/shattered_machine/io.rb, line 19
def png_images
  return single_image_io if extension_included?(PNG_EXTENSIONS, @input_path)

  images_in_directory(PNG_EXTENSIONS).map do |img|
    Paths.new("#{@input_path}/#{img}", generate_output_filename(img))
  end
end

Private Instance Methods

extension_included?(extensions, file) click to toggle source
# File lib/shattered_machine/io.rb, line 60
def extension_included?(extensions, file)
  extensions.include? File.extname(file)
end
generate_output_filename(img = '') click to toggle source
# File lib/shattered_machine/io.rb, line 46
def generate_output_filename(img = '')
  img_name = File.basename(img, File.extname(img))
  if File.file?("#{@output_folder}/#{@output_filename}#{img_name}.png")
    "#{@output_folder}/#{@output_filename}#{img_name}_#{time_utc_string}.png"
  else
    "#{@output_folder}/#{@output_filename}#{img_name}.png"
  end
end
images_in_directory(extensions) click to toggle source
# File lib/shattered_machine/io.rb, line 64
def images_in_directory(extensions)
  children = []
  Dir.foreach(@input_path) do |file|
    next unless extension_included?(extensions, file)

    children << file
  end
  children
end
single_image_io() click to toggle source
# File lib/shattered_machine/io.rb, line 42
def single_image_io
  [Paths.new(@input_path, generate_output_filename)]
end
time_utc_string() click to toggle source
# File lib/shattered_machine/io.rb, line 55
def time_utc_string
  t = Time.now.getutc
  t.strftime '%Y%m%d_%H%M%S'
end