[pypy-commit] pypy default: support length of a builder
fijal
noreply at buildbot.pypy.org
Thu Oct 6 04:05:34 CEST 2011
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch:
Changeset: r47837:b9e14afe8066
Date: 2011-10-04 16:08 +0200
http://bitbucket.org/pypy/pypy/changeset/b9e14afe8066/
Log: support length of a builder
diff --git a/pypy/module/__pypy__/interp_builders.py b/pypy/module/__pypy__/interp_builders.py
--- a/pypy/module/__pypy__/interp_builders.py
+++ b/pypy/module/__pypy__/interp_builders.py
@@ -40,6 +40,12 @@
self.builder = None
return w_s
+ def descr_len(self, space):
+ if self.builder is None:
+ raise OperationError(space.w_ValueError,
+ space.wrap('no lenght of built builder'))
+ return space.wrap(self.builder.getlength())
+
W_Builder.__name__ = "W_%s" % name
W_Builder.typedef = TypeDef(name,
__new__ = interp2app(func_with_new_name(
@@ -48,6 +54,7 @@
append = interp2app(W_Builder.descr_append),
append_slice = interp2app(W_Builder.descr_append_slice),
build = interp2app(W_Builder.descr_build),
+ __len__ = interp2app(W_Builder.descr_len),
)
W_Builder.typedef.acceptable_as_base_class = False
return W_Builder
diff --git a/pypy/module/__pypy__/test/test_builders.py b/pypy/module/__pypy__/test/test_builders.py
--- a/pypy/module/__pypy__/test/test_builders.py
+++ b/pypy/module/__pypy__/test/test_builders.py
@@ -38,7 +38,9 @@
b = StringBuilder()
b.append("abc")
b.append("123")
+ assert len(b) == 6
b.append("you and me")
s = b.build()
+ raises(ValueError, len, b)
assert s == "abc123you and me"
- raises(ValueError, b.build)
\ No newline at end of file
+ raises(ValueError, b.build)
More information about the pypy-commit
mailing list