short_filename.rb 738 Bytes
module ShortFilename

  def short_filename(filename, limit_chars = 43)
    extname = File.extname(filename)
    basename = File.basename(filename,extname)
    return shrink(basename, extname, limit_chars) + extname
  end

  def short_filename_upper_ext(filename, limit_chars = 43)
    extname = File.extname(filename)
    display_name = shrink(File.basename(filename, extname), extname, limit_chars)
     return extname.present? ? (display_name + ' - ' + extname.upcase.delete(".")) : display_name
  end

  def shrink(filename, extname, limit_chars)
    return filename if filename.size <= limit_chars
    str_complement = '(...)'
    return filename[0..(limit_chars - extname.size - str_complement.size - 1)] + str_complement
  end

end