From: Kit La Touche Date: Thu, 13 Jun 2013 03:49:04 +0000 (-0600) Subject: Improved display of multiline tweets. X-Git-Tag: twitter-1.14.2^2~2 X-Git-Url: https://jfr.im/git/z_archive/twitter.git/commitdiff_plain/737cfb613092fd64855052f0dbf67365bbd366fa?hp=537752d1e5b17f4867ca6a17e1a715b303fa62a4 Improved display of multiline tweets. --- diff --git a/twitter/cmdline.py b/twitter/cmdline.py index 120d629..dd3014d 100644 --- a/twitter/cmdline.py +++ b/twitter/cmdline.py @@ -103,7 +103,7 @@ from .api import Twitter, TwitterError from .oauth import OAuth, write_token_file, read_token_file from .oauth_dance import oauth_dance from . import ansi -from .util import smrt_input, printNicely +from .util import smrt_input, printNicely, align_text OPTIONS = { 'action': 'friends', @@ -217,10 +217,12 @@ class AnsiStatusFormatter(object): def __call__(self, status, options): colour = self._colourMap.colourFor(status['user']['screen_name']) - return ("%s%s% 16s%s %s" %( + ret = "%s%s% 16s%s " %( get_time_string(status, options), - ansiFormatter.cmdColour(colour), status['user']['screen_name'], - ansiFormatter.cmdReset(), replaceInStatus(status['text']))) + ansi.cmdColour(colour), status['user']['screen_name'], + ansi.cmdReset()) + ret += "%s" % align_text(status['text']) + return ret class VerboseStatusFormatter(object): def __call__(self, status, options): diff --git a/twitter/util.py b/twitter/util.py index 8d66c4e..7e4d6ab 100644 --- a/twitter/util.py +++ b/twitter/util.py @@ -10,6 +10,7 @@ from __future__ import print_function import contextlib import re import sys +import textwrap import time try: @@ -134,3 +135,12 @@ def parse_host_list(list_of_hosts): m.group(1) for m in re.finditer("\s*([^,\s]+)\s*,?\s*", list_of_hosts)) return p + +def align_text(text, left_margin=16, max_width=80): + lines = [] + for line in text.split('\n'): + temp_lines = textwrap.wrap(line, max_width - left_margin) + temp_lines = [(' ' * left_margin + line) for line in temp_lines] + lines.append('\n'.join(temp_lines)) + ret = '\n'.join(lines) + return ret.lstrip()