diff options
-rw-r--r-- | mediagoblin/processing.py | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/mediagoblin/processing.py b/mediagoblin/processing.py index b0d5751e..fa9192d9 100644 --- a/mediagoblin/processing.py +++ b/mediagoblin/processing.py @@ -44,14 +44,29 @@ def create_pub_filepath(entry, filename): ################################ class FilenameMunger(object): - MAX_FILENAME_LENGTH = 255 + """Easily slice and dice filenames. + + Initialize this class with an original filename, then use the munge() + method to create new filenames based on the original. + + """ + MAX_FILENAME_LENGTH = 255 # VFAT's maximum filename length def __init__(self, path): + """Initialize a munger with one original filename.""" self.dirpath, self.basename = os.path.split(path) self.basename, self.ext = os.path.splitext(self.basename) self.ext = self.ext.lower() def munge(self, fmtstr): + """Return a new filename based on the initialized original. + + The fmtstr argumentcan include {basename} and {ext}, which will + fill in components of the original filename. The extension will + always be lowercased. The filename will also be trunacted to this + class' MAX_FILENAME_LENGTH characters. + + """ basename_len = (self.MAX_FILENAME_LENGTH - len(fmtstr.format(basename='', ext=self.ext))) return fmtstr.format(basename=self.basename[:basename_len], |