'Return the string form of self.
Unless the argument line_break is set to False, it will
break the expression in a form that can be printed
on the terminal without being broken up.'

def render(self, *args, **kwargs):

    if (kwargs['wrap_line'] is False):
        return '\n'.join(self.picture)
    if (kwargs['num_columns'] is not None):
        ncols = kwargs['num_columns']
    else:
        ncols = self.terminal_width()
    ncols -= 2
    if (ncols <= 0):
        ncols = 78
    if (self.width() <= ncols):
        return type(self.picture[0])(self)
    i = 0
    svals = []
    do_vspacers = (self.height() > 1)
    while (i < self.width()):
        svals.extend([sval[i:(i + ncols)] for sval in self.picture])
        if do_vspacers:
            svals.append('')
        i += ncols
    if (svals[(-1)] == ''):
        del svals[(-1)]
    return '\n'.join(svals)
