X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/mLib-python/blobdiff_plain/78911cdb6782ddccef6de3cc913b714e10d2fc14..1db32dec968f0985a597c6d810fd4cd6a9bfaad8:/codec.pyx.in diff --git a/codec.pyx.in b/codec.pyx.in index a1199c6..3da1b83 100644 --- a/codec.pyx.in +++ b/codec.pyx.in @@ -34,43 +34,52 @@ cdef extern from 'mLib/%PREFIX%.h': void *p, size_t sz, dstr *d) cdef class %CLASS%Encode: + """ + %CLASS%([indent = '\\n'], [maxline = 72]) + + Obsolete %CLASS% encoder. + """ cdef %PREFIX%_ctx ctx def __cinit__(me, *hunoz, **hukairz): _%PREFIX%_init(&me.ctx) me.ctx.indent = NULL def __init__(me, indent = '\n', maxline = 72): if me.ctx.indent: - xfree(me.ctx.indent) + xfree(me.ctx.indent) me.ctx.indent = xstrdup(indent) me.ctx.maxline = maxline def __dealloc__(me): if me.ctx.indent: - xfree(me.ctx.indent) + xfree(me.ctx.indent) property indent: + """E.indent -> INT: indent level for new lines""" def __get__(me): return me.ctx.indent def __set__(me, indent): if me.ctx.indent: - xfree(me.ctx.indent) + xfree(me.ctx.indent) me.ctx.indent = xstrdup(indent) property maxline: + """E.maxline -> INT: maximum length of line, or 0 to prevent splitting""" def __get__(me): return me.ctx.maxline def __set__(me, maxline): me.ctx.maxline = maxline def encode(me, text): + """E.encode(IN) -> OUT: continue encoding""" cdef void *p cdef Py_ssize_t len cdef dstr d DCREATE(&d) try: - PyObject_AsReadBuffer(text, &p, &len) + PyObject_AsReadBuffer(text, &p, &len) _%PREFIX%_encode(&me.ctx, p, len, &d) rc = PyString_FromStringAndSize(d.buf, d.len) finally: dstr_destroy(&d) return rc def done(me): + """E.done() -> OUT: finish encoding, returning final output""" cdef dstr d DCREATE(&d) try: @@ -81,27 +90,35 @@ cdef class %CLASS%Encode: return rc def %PREFIX%_encode(text, *arg, **kw): + """%PREFIX%_encode(IN, [ARGS...]) -> OUT: %CLASS%-encode the string IN""" e = %CLASS%Encode(*arg, **kw) return e.encode(text) + e.done() cdef class %CLASS%Decode: + """ + %CLASS%() + + Obsolete %CLASS% decoder. + """ cdef %PREFIX%_ctx ctx def __cinit__(me, *hunoz, **hukairz): _%PREFIX%_init(&me.ctx) me.ctx.indent = NULL def decode(me, text): + """D.encode(IN) -> OUT: continue decoding""" cdef void *p cdef Py_ssize_t len cdef dstr d DCREATE(&d) try: - PyObject_AsReadBuffer(text, &p, &len) + PyObject_AsReadBuffer(text, &p, &len) _%PREFIX%_decode(&me.ctx, p, len, &d) rc = PyString_FromStringAndSize(d.buf, d.len) finally: dstr_destroy(&d) return rc def done(me): + """D.done() -> OUT: finish decoding, returning final output""" cdef dstr d DCREATE(&d) try: @@ -112,8 +129,8 @@ cdef class %CLASS%Decode: return rc def %PREFIX%_decode(text, *arg, **kw): + """%PREFIX%_decode(IN) -> OUT: %CLASS%-decode the string IN""" d = %CLASS%Decode(*arg, **kw) return d.decode(text) + d.done() ###----- That's all, folks -------------------------------------------------- -