| Index: mojo/public/third_party/markupsafe/_speedups.c
|
| diff --git a/mojo/public/third_party/markupsafe/_speedups.c b/mojo/public/third_party/markupsafe/_speedups.c
|
| deleted file mode 100644
|
| index f349febf22d59ec7dfe440b65faf5838c1234b90..0000000000000000000000000000000000000000
|
| --- a/mojo/public/third_party/markupsafe/_speedups.c
|
| +++ /dev/null
|
| @@ -1,239 +0,0 @@
|
| -/**
|
| - * markupsafe._speedups
|
| - * ~~~~~~~~~~~~~~~~~~~~
|
| - *
|
| - * This module implements functions for automatic escaping in C for better
|
| - * performance.
|
| - *
|
| - * :copyright: (c) 2010 by Armin Ronacher.
|
| - * :license: BSD.
|
| - */
|
| -
|
| -#include <Python.h>
|
| -
|
| -#define ESCAPED_CHARS_TABLE_SIZE 63
|
| -#define UNICHR(x) (PyUnicode_AS_UNICODE((PyUnicodeObject*)PyUnicode_DecodeASCII(x, strlen(x), NULL)));
|
| -
|
| -#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN)
|
| -typedef int Py_ssize_t;
|
| -#define PY_SSIZE_T_MAX INT_MAX
|
| -#define PY_SSIZE_T_MIN INT_MIN
|
| -#endif
|
| -
|
| -
|
| -static PyObject* markup;
|
| -static Py_ssize_t escaped_chars_delta_len[ESCAPED_CHARS_TABLE_SIZE];
|
| -static Py_UNICODE *escaped_chars_repl[ESCAPED_CHARS_TABLE_SIZE];
|
| -
|
| -static int
|
| -init_constants(void)
|
| -{
|
| - PyObject *module;
|
| - /* happing of characters to replace */
|
| - escaped_chars_repl['"'] = UNICHR(""");
|
| - escaped_chars_repl['\''] = UNICHR("'");
|
| - escaped_chars_repl['&'] = UNICHR("&");
|
| - escaped_chars_repl['<'] = UNICHR("<");
|
| - escaped_chars_repl['>'] = UNICHR(">");
|
| -
|
| - /* lengths of those characters when replaced - 1 */
|
| - memset(escaped_chars_delta_len, 0, sizeof (escaped_chars_delta_len));
|
| - escaped_chars_delta_len['"'] = escaped_chars_delta_len['\''] = \
|
| - escaped_chars_delta_len['&'] = 4;
|
| - escaped_chars_delta_len['<'] = escaped_chars_delta_len['>'] = 3;
|
| -
|
| - /* import markup type so that we can mark the return value */
|
| - module = PyImport_ImportModule("markupsafe");
|
| - if (!module)
|
| - return 0;
|
| - markup = PyObject_GetAttrString(module, "Markup");
|
| - Py_DECREF(module);
|
| -
|
| - return 1;
|
| -}
|
| -
|
| -static PyObject*
|
| -escape_unicode(PyUnicodeObject *in)
|
| -{
|
| - PyUnicodeObject *out;
|
| - Py_UNICODE *inp = PyUnicode_AS_UNICODE(in);
|
| - const Py_UNICODE *inp_end = PyUnicode_AS_UNICODE(in) + PyUnicode_GET_SIZE(in);
|
| - Py_UNICODE *next_escp;
|
| - Py_UNICODE *outp;
|
| - Py_ssize_t delta=0, erepl=0, delta_len=0;
|
| -
|
| - /* First we need to figure out how long the escaped string will be */
|
| - while (*(inp) || inp < inp_end) {
|
| - if (*inp < ESCAPED_CHARS_TABLE_SIZE) {
|
| - delta += escaped_chars_delta_len[*inp];
|
| - erepl += !!escaped_chars_delta_len[*inp];
|
| - }
|
| - ++inp;
|
| - }
|
| -
|
| - /* Do we need to escape anything at all? */
|
| - if (!erepl) {
|
| - Py_INCREF(in);
|
| - return (PyObject*)in;
|
| - }
|
| -
|
| - out = (PyUnicodeObject*)PyUnicode_FromUnicode(NULL, PyUnicode_GET_SIZE(in) + delta);
|
| - if (!out)
|
| - return NULL;
|
| -
|
| - outp = PyUnicode_AS_UNICODE(out);
|
| - inp = PyUnicode_AS_UNICODE(in);
|
| - while (erepl-- > 0) {
|
| - /* look for the next substitution */
|
| - next_escp = inp;
|
| - while (next_escp < inp_end) {
|
| - if (*next_escp < ESCAPED_CHARS_TABLE_SIZE &&
|
| - (delta_len = escaped_chars_delta_len[*next_escp])) {
|
| - ++delta_len;
|
| - break;
|
| - }
|
| - ++next_escp;
|
| - }
|
| -
|
| - if (next_escp > inp) {
|
| - /* copy unescaped chars between inp and next_escp */
|
| - Py_UNICODE_COPY(outp, inp, next_escp-inp);
|
| - outp += next_escp - inp;
|
| - }
|
| -
|
| - /* escape 'next_escp' */
|
| - Py_UNICODE_COPY(outp, escaped_chars_repl[*next_escp], delta_len);
|
| - outp += delta_len;
|
| -
|
| - inp = next_escp + 1;
|
| - }
|
| - if (inp < inp_end)
|
| - Py_UNICODE_COPY(outp, inp, PyUnicode_GET_SIZE(in) - (inp - PyUnicode_AS_UNICODE(in)));
|
| -
|
| - return (PyObject*)out;
|
| -}
|
| -
|
| -
|
| -static PyObject*
|
| -escape(PyObject *self, PyObject *text)
|
| -{
|
| - PyObject *s = NULL, *rv = NULL, *html;
|
| -
|
| - /* we don't have to escape integers, bools or floats */
|
| - if (PyLong_CheckExact(text) ||
|
| -#if PY_MAJOR_VERSION < 3
|
| - PyInt_CheckExact(text) ||
|
| -#endif
|
| - PyFloat_CheckExact(text) || PyBool_Check(text) ||
|
| - text == Py_None)
|
| - return PyObject_CallFunctionObjArgs(markup, text, NULL);
|
| -
|
| - /* if the object has an __html__ method that performs the escaping */
|
| - html = PyObject_GetAttrString(text, "__html__");
|
| - if (html) {
|
| - rv = PyObject_CallObject(html, NULL);
|
| - Py_DECREF(html);
|
| - return rv;
|
| - }
|
| -
|
| - /* otherwise make the object unicode if it isn't, then escape */
|
| - PyErr_Clear();
|
| - if (!PyUnicode_Check(text)) {
|
| -#if PY_MAJOR_VERSION < 3
|
| - PyObject *unicode = PyObject_Unicode(text);
|
| -#else
|
| - PyObject *unicode = PyObject_Str(text);
|
| -#endif
|
| - if (!unicode)
|
| - return NULL;
|
| - s = escape_unicode((PyUnicodeObject*)unicode);
|
| - Py_DECREF(unicode);
|
| - }
|
| - else
|
| - s = escape_unicode((PyUnicodeObject*)text);
|
| -
|
| - /* convert the unicode string into a markup object. */
|
| - rv = PyObject_CallFunctionObjArgs(markup, (PyObject*)s, NULL);
|
| - Py_DECREF(s);
|
| - return rv;
|
| -}
|
| -
|
| -
|
| -static PyObject*
|
| -escape_silent(PyObject *self, PyObject *text)
|
| -{
|
| - if (text != Py_None)
|
| - return escape(self, text);
|
| - return PyObject_CallFunctionObjArgs(markup, NULL);
|
| -}
|
| -
|
| -
|
| -static PyObject*
|
| -soft_unicode(PyObject *self, PyObject *s)
|
| -{
|
| - if (!PyUnicode_Check(s))
|
| -#if PY_MAJOR_VERSION < 3
|
| - return PyObject_Unicode(s);
|
| -#else
|
| - return PyObject_Str(s);
|
| -#endif
|
| - Py_INCREF(s);
|
| - return s;
|
| -}
|
| -
|
| -
|
| -static PyMethodDef module_methods[] = {
|
| - {"escape", (PyCFunction)escape, METH_O,
|
| - "escape(s) -> markup\n\n"
|
| - "Convert the characters &, <, >, ', and \" in string s to HTML-safe\n"
|
| - "sequences. Use this if you need to display text that might contain\n"
|
| - "such characters in HTML. Marks return value as markup string."},
|
| - {"escape_silent", (PyCFunction)escape_silent, METH_O,
|
| - "escape_silent(s) -> markup\n\n"
|
| - "Like escape but converts None to an empty string."},
|
| - {"soft_unicode", (PyCFunction)soft_unicode, METH_O,
|
| - "soft_unicode(object) -> string\n\n"
|
| - "Make a string unicode if it isn't already. That way a markup\n"
|
| - "string is not converted back to unicode."},
|
| - {NULL, NULL, 0, NULL} /* Sentinel */
|
| -};
|
| -
|
| -
|
| -#if PY_MAJOR_VERSION < 3
|
| -
|
| -#ifndef PyMODINIT_FUNC /* declarations for DLL import/export */
|
| -#define PyMODINIT_FUNC void
|
| -#endif
|
| -PyMODINIT_FUNC
|
| -init_speedups(void)
|
| -{
|
| - if (!init_constants())
|
| - return;
|
| -
|
| - Py_InitModule3("markupsafe._speedups", module_methods, "");
|
| -}
|
| -
|
| -#else /* Python 3.x module initialization */
|
| -
|
| -static struct PyModuleDef module_definition = {
|
| - PyModuleDef_HEAD_INIT,
|
| - "markupsafe._speedups",
|
| - NULL,
|
| - -1,
|
| - module_methods,
|
| - NULL,
|
| - NULL,
|
| - NULL,
|
| - NULL
|
| -};
|
| -
|
| -PyMODINIT_FUNC
|
| -PyInit__speedups(void)
|
| -{
|
| - if (!init_constants())
|
| - return NULL;
|
| -
|
| - return PyModule_Create(&module_definition);
|
| -}
|
| -
|
| -#endif
|
|
|