~pyreadline/pyreadline/trunk

« back to all changes in this revision

Viewing changes to pyreadline/console/console.py

  • Committer: Jorgen Stenarson
  • Date: 2011-10-06 19:02:52 UTC
  • mfrom: (100.1.19 python3)
  • Revision ID: jorgen.stenarson@bostream.nu-20111006190252-efh961vx5qbcohom
Merging python3 fixes from Shimizukawa

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
except ImportError:
33
33
    raise ImportError(u"You need ctypes to run this code")
34
34
 
 
35
if sys.version_info < (2, 6):
 
36
    bytes = str
 
37
 
35
38
def nolog(string):
36
39
    pass
37
40
    
289
292
 
290
293
    # This pattern should match all characters that change the cursor position differently
291
294
    # than a normal character.
292
 
    motion_char_re = re.compile(u'([\n\r\t\010\007])')
 
295
    motion_char_re = re.compile('([\n\r\t\010\007])'.encode('ascii'))
293
296
 
294
297
    def write_scrolling(self, text, attr=None):
295
298
        u'''write text at current cursor position while watching for scrolling.
309
312
        w, h = self.size()
310
313
        scroll = 0 # the result
311
314
        # split the string into ordinary characters and funny characters
312
 
        chunks = self.motion_char_re.split(text)
 
315
        chunks = self.motion_char_re.split(ensure_str(text))
313
316
        for chunk in chunks:
314
317
            n = self.write_color(chunk, attr)
315
318
            if len(chunk) == 1: # the funny characters will be alone
760
763
        # call the Python hook
761
764
        res = ensure_str(readline_hook(prompt))
762
765
        # make sure it returned the right sort of thing
763
 
        if res and not isinstance(res, str):
 
766
        if res and not isinstance(res, bytes):
764
767
            raise TypeError, u'readline must return a string.'
765
768
    except KeyboardInterrupt:
766
769
        # GNU readline returns 0 on keyboard interrupt
784
787
        # call the Python hook
785
788
        res = ensure_str(readline_hook(prompt))
786
789
        # make sure it returned the right sort of thing
787
 
        if res and not isinstance(res, str):
 
790
        if res and not isinstance(res, bytes):
788
791
            raise TypeError, u'readline must return a string.'
789
792
    except KeyboardInterrupt:
790
793
        # GNU readline returns 0 on keyboard interrupt
808
811
    readline_hook = hook
809
812
    # get the address of PyOS_ReadlineFunctionPointer so we can update it
810
813
    PyOS_RFP = c_void_p.from_address(Console.GetProcAddress(sys.dllhandle,
811
 
                                            "PyOS_ReadlineFunctionPointer"))
 
814
                           "PyOS_ReadlineFunctionPointer".encode('ascii')))
812
815
    # save a reference to the generated C-callable so it doesn't go away
813
816
    if sys.version < '2.3':
814
817
        readline_ref = HOOKFUNC22(hook_wrapper)