[pypy-svn] r27401 - in pypy/dist/pypy/rpython: ootypesystem test
antocuni at codespeak.net
antocuni at codespeak.net
Thu May 18 12:36:57 CEST 2006
Author: antocuni
Date: Thu May 18 12:36:51 2006
New Revision: 27401
Modified:
pypy/dist/pypy/rpython/ootypesystem/ll_str.py
pypy/dist/pypy/rpython/ootypesystem/ootype.py
pypy/dist/pypy/rpython/test/test_rstr.py
Log:
Fixed a bug in ootypesystem hex() and oct() function.
Modified: pypy/dist/pypy/rpython/ootypesystem/ll_str.py
==============================================================================
--- pypy/dist/pypy/rpython/ootypesystem/ll_str.py (original)
+++ pypy/dist/pypy/rpython/ootypesystem/ll_str.py Thu May 18 12:36:51 2006
@@ -1,4 +1,4 @@
-from pypy.rpython.ootypesystem import ootype
+from pypy.rpython.ootypesystem.ootype import new, oostring, StringBuilder
def const(c):
return c
@@ -7,14 +7,33 @@
return ll_int2dec(i)
def ll_int2dec(i):
- return ootype.oostring(i, const(10))
+ return oostring(i, const(10))
-# TODO: add support for addPrefix == False
def ll_int2hex(i, addPrefix):
- #assert addPrefix
- return ootype.oostring(i, const(16))
+ if not addPrefix:
+ return oostring(i, const(16))
+
+ buf = new(StringBuilder)
+ if i<0:
+ i = -i
+ buf.ll_append_char('-')
+
+ buf.ll_append_char('0')
+ buf.ll_append_char('x')
+ buf.ll_append(oostring(i, const(16)))
+ return buf.ll_build()
def ll_int2oct(i, addPrefix):
- #assert addPrefix
- return ootype.oostring(i, const(8))
+ if not addPrefix or i==0:
+ return oostring(i, const(8))
+
+ buf = new(StringBuilder)
+ if i<0:
+ i = -i
+ buf.ll_append_char('-')
+
+ buf.ll_append_char('0')
+ buf.ll_append(oostring(i, const(8)))
+ return buf.ll_build()
+
Modified: pypy/dist/pypy/rpython/ootypesystem/ootype.py
==============================================================================
--- pypy/dist/pypy/rpython/ootypesystem/ootype.py (original)
+++ pypy/dist/pypy/rpython/ootypesystem/ootype.py Thu May 18 12:36:51 2006
@@ -1169,8 +1169,8 @@
"""
if isinstance(obj, int):
assert base in (-1, 8, 10, 16)
- fn = {-1: str, 8: oct, 10: str, 16: hex}[base]
- obj = fn(obj)
+ fmt = {-1:'%d', 8:'%o', 10:'%d', 16:'%x'}[base]
+ obj = fmt % obj
elif isinstance(obj, _view):
obj = '<%s object>' % obj._inst._TYPE._name
return make_string(str(obj))
Modified: pypy/dist/pypy/rpython/test/test_rstr.py
==============================================================================
--- pypy/dist/pypy/rpython/test/test_rstr.py (original)
+++ pypy/dist/pypy/rpython/test/test_rstr.py Thu May 18 12:36:51 2006
@@ -356,8 +356,6 @@
def test_strformat(self):
- self._skip_oo('string formatting')
-
def percentS(s):
return "before %s after" % (s,)
More information about the Pypy-commit
mailing list