view textshaper/decorator.py @ 29:2794327d8c67

STUB: tests/doctest.txt tests/test.py
author Jeff Hammel <k0scist@gmail.com>
date Sun, 23 Feb 2014 14:28:08 -0800
parents fd626585c299
children 88a69d587326
line wrap: on
line source

# -*- coding: utf-8 -*-

"""
decorators for textshaper
"""

string = (str, unicode)

class lines(object):
    """
    allow functions that process lists of lines of text to
    accept strings, lists of lines, or a file-like object
    """

    def __init__(self, function, line_separator='\n'):
        self.function = function
        self.line_separator = line_separator

    def __call__(self, text, *args, **kwargs):
        is_string = False
        if isinstance(text, string):
            is_string = True
            text = text.splitlines()
        retval = self.function(text, *args, **kwargs)
        if is_string:
            return self.line_separator.join(retval)
        return retval