|
@@ -1499,16 +1499,17 @@ Tokenizer_handle_tag_space(Tokenizer* self, TagOpenData* data, Py_UNICODE text) |
|
|
data->context = TAG_ATTR_READY; |
|
|
data->context = TAG_ATTR_READY; |
|
|
else if (ctx & TAG_ATTR_NAME) { |
|
|
else if (ctx & TAG_ATTR_NAME) { |
|
|
data->context |= TAG_NOTE_EQUALS; |
|
|
data->context |= TAG_NOTE_EQUALS; |
|
|
Textbuffer_write(&(data->pad_before_eq), text); |
|
|
|
|
|
|
|
|
if (Textbuffer_write(&(data->pad_before_eq), text)) |
|
|
|
|
|
return -1; |
|
|
} |
|
|
} |
|
|
if (ctx & TAG_QUOTED && !(ctx & TAG_NOTE_SPACE)) { |
|
|
if (ctx & TAG_QUOTED && !(ctx & TAG_NOTE_SPACE)) { |
|
|
if (Tokenizer_emit_text(self, text)) |
|
|
if (Tokenizer_emit_text(self, text)) |
|
|
return -1; |
|
|
return -1; |
|
|
} |
|
|
} |
|
|
else if (data->context & TAG_ATTR_READY) |
|
|
else if (data->context & TAG_ATTR_READY) |
|
|
Textbuffer_write(&(data->pad_first), text); |
|
|
|
|
|
|
|
|
return Textbuffer_write(&(data->pad_first), text); |
|
|
else if (data->context & TAG_ATTR_VALUE) |
|
|
else if (data->context & TAG_ATTR_VALUE) |
|
|
Textbuffer_write(&(data->pad_after_eq), text); |
|
|
|
|
|
|
|
|
return Textbuffer_write(&(data->pad_after_eq), text); |
|
|
return 0; |
|
|
return 0; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@@ -1518,7 +1519,24 @@ Tokenizer_handle_tag_space(Tokenizer* self, TagOpenData* data, Py_UNICODE text) |
|
|
static int |
|
|
static int |
|
|
Tokenizer_handle_tag_text(Tokenizer* self, Py_UNICODE text) |
|
|
Tokenizer_handle_tag_text(Tokenizer* self, Py_UNICODE text) |
|
|
{ |
|
|
{ |
|
|
return 0; |
|
|
|
|
|
|
|
|
Py_UNICODE next = Tokenizer_READ(self, 1); |
|
|
|
|
|
int i, is_marker = 0; |
|
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < NUM_MARKERS; i++) { |
|
|
|
|
|
if (*MARKERS[i] == text) { |
|
|
|
|
|
is_marker = 1; |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if (!is_marker || !Tokenizer_CAN_RECURSE(self)) |
|
|
|
|
|
return Tokenizer_emit_text(self, text); |
|
|
|
|
|
else if (text == next && next == *"{") |
|
|
|
|
|
return Tokenizer_parse_template_or_argument(self); |
|
|
|
|
|
else if (text == next && next == *"[") |
|
|
|
|
|
return Tokenizer_parse_wikilink(self); |
|
|
|
|
|
else if (text == *"<") |
|
|
|
|
|
return Tokenizer_parse_tag(self); |
|
|
|
|
|
return Tokenizer_emit_text(self, text); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/* |
|
|
/* |
|
@@ -1527,7 +1545,22 @@ Tokenizer_handle_tag_text(Tokenizer* self, Py_UNICODE text) |
|
|
static PyObject* |
|
|
static PyObject* |
|
|
Tokenizer_handle_blacklisted_tag(Tokenizer* self) |
|
|
Tokenizer_handle_blacklisted_tag(Tokenizer* self) |
|
|
{ |
|
|
{ |
|
|
return NULL; |
|
|
|
|
|
|
|
|
Py_UNICODE this, next; |
|
|
|
|
|
|
|
|
|
|
|
while (1) { |
|
|
|
|
|
this = Tokenizer_READ(self, 0); |
|
|
|
|
|
next = Tokenizer_READ(self, 1); |
|
|
|
|
|
self->head++; |
|
|
|
|
|
if (this == *"") |
|
|
|
|
|
return Tokenizer_fail_route(self); |
|
|
|
|
|
else if (this == *"<" && next == *"/") { |
|
|
|
|
|
if (Tokenizer_handle_tag_open_close(self)) |
|
|
|
|
|
return NULL; |
|
|
|
|
|
return Tokenizer_parse(self, 0, 0); |
|
|
|
|
|
} |
|
|
|
|
|
if (Tokenizer_emit_text(self, this)) |
|
|
|
|
|
return NULL; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/* |
|
|
/* |
|
|