class S3DataPacker::FilenameGenerator

Attributes

number[R]
pattern[R]
splitter[R]

Public Class Methods

new(opts={}) click to toggle source
# File lib/s3_data_packer/filename_generator.rb, line 5
def initialize opts={}
  @number = opts[:start_at] || 1
  @prefix = opts[:prefix] || default_options[:prefix]
  @suffix = opts[:suffix] || default_options[:suffix]
  @pattern = opts[:pattern] || default_options[:pattern]
  @splitter = opts[:splitter] || default_options[:splitter]
  validate_pattern!
end

Public Instance Methods

datestamp() click to toggle source
# File lib/s3_data_packer/filename_generator.rb, line 18
def datestamp; Time.now.strftime('%Y%m%d'); end
generate!() click to toggle source
# File lib/s3_data_packer/filename_generator.rb, line 22
def generate!
  name = pattern.map{ |key| send(key) }
  name.delete_if { |value| value.nil? || value == '' }
  name = name.map(&:to_s).join(splitter)
  @number += 1
  name
end
prefix() click to toggle source
# File lib/s3_data_packer/filename_generator.rb, line 19
def prefix; @prefix; end
suffix() click to toggle source
# File lib/s3_data_packer/filename_generator.rb, line 20
def suffix; @suffix; end
timecode_dec() click to toggle source
# File lib/s3_data_packer/filename_generator.rb, line 15
def timecode_dec; Time.now.to_f; end
timecode_int() click to toggle source
# File lib/s3_data_packer/filename_generator.rb, line 14
def timecode_int; Time.now.to_i; end
timestamp() click to toggle source
# File lib/s3_data_packer/filename_generator.rb, line 17
def timestamp; Time.now.strftime('%Y%m%d%H%M%s'); end

Private Instance Methods

default_options() click to toggle source
# File lib/s3_data_packer/filename_generator.rb, line 32
def default_options
  @default_options ||= S3DataPacker.config.filename_generator_defaults
end
validate_pattern!() click to toggle source
# File lib/s3_data_packer/filename_generator.rb, line 36
def validate_pattern!
  valid = %i[timecode_int timecode_dec number timestamp datestamp prefix suffix]
  pattern.each do |item|
    raise ArgumentError, "Invalid pattern key, has to be a symbol" unless Symbol === item
    raise ArgumentError, "Invalid pattern key #{item}. Allowed: #{valid.join(', ')}" unless valid.include?(item)
  end
end