]> jfr.im git - z_archive/twitter.git/blobdiff - twitter/cmdline.py
Apply patch by Jordan Gottlieb to handle URLs with ids in the middle.
[z_archive/twitter.git] / twitter / cmdline.py
index 759321120ef6204d77552a05091c7e1ffbd341ec..ec07cd44b092bbad0c05119eacd6a0e8f5449d18 100644 (file)
@@ -129,8 +129,8 @@ def get_time_string(status, options):
     return ""                             
 
 class StatusFormatter(object):
-    def __call__(self, status):
-        return (u"%S%s %s" %(
+    def __call__(self, status, options):
+        return (u"%s%s %s" %(
             get_time_string(status, options),
             status['user']['screen_name'], status['text']))
 
@@ -204,35 +204,35 @@ def get_admin_formatter(options):
     return sf()
 
 class Action(object):
-    @staticmethod
-    def ask(subject='perform this action', careful=False):
+
+    def ask(self, subject='perform this action', careful=False):
         '''
         Requests fromt he user using `raw_input` if `subject` should be
         performed. When `careful`, the default answer is NO, otherwise YES.
         Returns the user answer in the form `True` or `False`.
         '''
-        sample = '(y/N)' if careful else '(Y/n)'
+        sample = '(y/N)'
+        if not careful:
+            sample = '(Y/n)'
+        
         prompt = 'You really want to %s %s? ' %(subject, sample)
         try:
             answer = raw_input(prompt).lower()
             if careful:
-                if answer not in ('yes', 'y'):
-                    return False
-                else:
-                    return True
+                return answer in ('yes', 'y')
             else:
-                if answer in ('no', 'n'):
-                    return False
-                else:
-                    return True
+                return answer not in ('no', 'n')
         except EOFError:
             print >>sys.stderr # Put Newline since Enter was never pressed
             # TODO:
                 #   Figure out why on OS X the raw_input keeps raising
                 #   EOFError and is never able to reset and get more input
                 #   Hint: Look at how IPython implements their console
-            default = False if careful else True
+            default = True
+            if careful:
+                default = False
             return default
+        
     def __call__(self, twitter, options):
         action = actions.get(options['action'], NoSuchAction)()
         try:
@@ -271,17 +271,17 @@ class StatusAction(Action):
 
 class AdminAction(Action):
     def __call__(self, twitter, options):
-        if not options['extra_args'][0]:
+        if not (options['extra_args'] and options['extra_args'][0]):
             raise TwitterError("You need to specify a user (screen name)")
         af = get_admin_formatter(options)
         try:
             user = self.getUser(twitter, options['extra_args'][0])
         except TwitterError, e:
             print "There was a problem following or leaving the specified user."
-            print "  You may be trying to follow a user you are already following;"
-            print "  Leaving a user you are not currently following;"
-            print "  Or the user may not exist."
-            print "  Sorry."
+            print "You may be trying to follow a user you are already following;"
+            print "Leaving a user you are not currently following;"
+            print "Or the user may not exist."
+            print "Sorry."
             print
             print e
         else:
@@ -316,8 +316,8 @@ class SetStatusAction(Action):
         twitter.statuses.update(status=status)
 
 class TwitterShell(Action):
-    @staticmethod
-    def render_prompt(prompt):
+
+    def render_prompt(self, prompt):
         '''Parses the `prompt` string and returns the rendered version'''
         prompt = prompt.strip("'").replace("\\'","'")
         for colour in ansi.COLOURS_NAMED:
@@ -326,9 +326,11 @@ class TwitterShell(Action):
                             '[%s]' %(colour), ansi.cmdColourNamed(colour))
         prompt = prompt.replace('[R]', ansi.cmdReset())
         return prompt
+    
     def __call__(self, twitter, options):
         prompt = self.render_prompt(options.get('prompt', 'twitter> '))
         while True:
+            options['action'] = ""
             try:
                 args = raw_input(prompt).split()
                 parse_args(args, options)