class Ruby::Reports::Services::FilenameGenerator

Module that generates file name Usage:

class SomeClass
  include Resque::Reports::Extensions::FilenameGen

  # ...call somewhere...
  fname = generate_filename(%w(a b c), 'pdf')
  # 'fname' value is something like this:
  #   "a60428ee50f1795819b8486c817c27829186fa40.pdf"
end

Constants

DEFAULT_EXTENSION

Public Class Methods

generate(args, fextension = nil) click to toggle source
# File lib/ruby/reports/services/filename_generator.rb, line 20
def self.generate(args, fextension = nil)
  "#{hash(self.class.to_s, *args)}.#{fextension || DEFAULT_EXTENSION}"
end

Private Class Methods

hash(*args) click to toggle source
# File lib/ruby/reports/services/filename_generator.rb, line 26
def self.hash(*args)
  Digest::SHA1.hexdigest(obj_to_string(args))
end
obj_to_string(obj) click to toggle source
# File lib/ruby/reports/services/filename_generator.rb, line 30
def self.obj_to_string(obj)
  case obj
  when Hash
    s = []
    obj.keys.sort.each do |k|
      s << obj_to_string(k)
      s << obj_to_string(obj[k])
    end
    s.to_s
  when Array
    s = []
    obj.each { |a| s << obj_to_string(a) }
    s.to_s
  else
    obj.to_s
  end
end