X-Git-Url: https://jfr.im/git/z_archive/twitter.git/blobdiff_plain/6b3587a8019e1fe55b08b74bb00a4deaf5ec4ca3..ba986560b431abad58c9214a76b4692d88d4158f:/twitter/cmdline.py?ds=sidebyside diff --git a/twitter/cmdline.py b/twitter/cmdline.py index 4210170..aafe262 100644 --- a/twitter/cmdline.py +++ b/twitter/cmdline.py @@ -106,6 +106,7 @@ OPTIONS = { 'datestamp': False, 'extra_args': [], 'secure': True, + 'invert_split': False, } def parse_args(args, options): @@ -352,6 +353,7 @@ class Action(object): if (options['refresh'] and isinstance(action, StatusAction)): while True: doAction() + sys.stdout.flush() time.sleep(options['refresh_rate']) else: doAction() @@ -464,15 +466,33 @@ class SetStatusAction(Action): statusTxt = (" ".join(options['extra_args']) if options['extra_args'] else str(input("message: "))) + replies = [] + ptr = re.compile("@[\w_]+") + while statusTxt: + s = ptr.match(statusTxt) + if s and s.start() == 0: + replies.append(statusTxt[s.start():s.end()]) + statusTxt = statusTxt[s.end()+1:] + else: + break + replies = " ".join(replies) + if len(replies) >= 140: + # just go back + statusTxt = replies + replies = "" + splitted = [] while statusTxt: - if len(statusTxt) > 140: - end = string.rfind(statusTxt, ' ', 0, 140) + limit = 140 - len(replies) + if len(statusTxt) > limit: + end = string.rfind(statusTxt, ' ', 0, limit) else: - end = 140 - splitted.append(statusTxt[:end]) + end = limit + splitted.append(" ".join((replies,statusTxt[:end]))) statusTxt = statusTxt[end:] + if options['invert_split']: + splitted.reverse() for status in splitted: twitter.statuses.update(status=status) @@ -571,6 +591,10 @@ def loadConfig(filename): for option in ('format', 'prompt'): if cp.has_option('twitter', option): options[option] = cp.get('twitter', option) + # process booleans + for option in ('invert_split',): + if cp.has_option('twitter', option ): + options[option] = cp.getboolean('twitter', option) return options def main(args=sys.argv[1:]):