X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=mediagoblin%2Ftools%2Fcommon.py;h=c9f9d0324808a79c5fdb12a6e8d9b3e59b31a177;hb=89672855f199b2bc08126e09b4fba2579940a67e;hp=12d8309e9fe0d1e32b27f0accbbe36359200c68f;hpb=ee91c2b88d1a42b9d15d34d2c081cd8394649041;p=mediagoblin.git diff --git a/mediagoblin/tools/common.py b/mediagoblin/tools/common.py index 12d8309e..c9f9d032 100644 --- a/mediagoblin/tools/common.py +++ b/mediagoblin/tools/common.py @@ -1,5 +1,5 @@ # GNU MediaGoblin -- federated, autonomous media hosting -# Copyright (C) 2011 Free Software Foundation, Inc +# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by @@ -36,3 +36,39 @@ def import_component(import_string): module = sys.modules[module_name] func = getattr(module, func_name) return func + + +def simple_printer(string): + """ + Prints a string, but without an auto \n at the end. + + Useful for places where we want to dependency inject for printing. + """ + sys.stdout.write(string) + sys.stdout.flush() + + +class CollectingPrinter(object): + """ + Another printer object, this one useful for capturing output for + examination during testing or otherwise. + + Use this like: + + >>> printer = CollectingPrinter() + >>> printer("herp derp\n") + >>> printer("lollerskates\n") + >>> printer.combined_string + "herp derp\nlollerskates\n" + """ + def __init__(self): + self.collection = [] + + def __call__(self, string): + self.collection.append(string) + + @property + def combined_string(self): + return u''.join(self.collection) + +