From e6b5c46d9c5b6fd4ccb14da8276293b88f867a4d Mon Sep 17 00:00:00 2001 From: Ben Kurtovic Date: Thu, 18 Jul 2013 17:11:48 -0400 Subject: [PATCH] Implement Tokenizer_handle_tag_close_open() --- mwparserfromhell/parser/tokenizer.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/mwparserfromhell/parser/tokenizer.c b/mwparserfromhell/parser/tokenizer.c index 6766780..b6842b0 100644 --- a/mwparserfromhell/parser/tokenizer.c +++ b/mwparserfromhell/parser/tokenizer.c @@ -1570,6 +1570,32 @@ static int Tokenizer_handle_tag_close_open(Tokenizer* self, TagOpenData* data, PyObject* token) { + PyObject *padding, *kwargs, *tok; + + if (data->context & (TAG_ATTR_NAME | TAG_ATTR_VALUE)) { + if (Tokenizer_push_tag_buffer(self, data)) + return -1; + } + padding = Textbuffer_render(data->pad_first); + if (!padding) + return -1; + kwargs = PyDict_New(); + if (!kwargs) { + Py_DECREF(padding); + return -1; + } + PyDict_SetItemString(kwargs, "padding", padding); + Py_DECREF(padding); + tok = PyObject_Call(token, NOARGS, kwargs); + Py_DECREF(kwargs); + if (!tok) + return -1; + if (Tokenizer_emit(self, tok)) { + Py_DECREF(tok); + return -1; + } + Py_DECREF(tok); + self->head++; return 0; }