Index: tracing/third_party/tvcm/third_party/rjsmin/rjsmin.c |
diff --git a/tracing/third_party/tvcm/third_party/rjsmin/rjsmin.c b/tracing/third_party/tvcm/third_party/rjsmin/rjsmin.c |
deleted file mode 100644 |
index 53900720bf8356c291d926cce5c43dda0246a01f..0000000000000000000000000000000000000000 |
--- a/tracing/third_party/tvcm/third_party/rjsmin/rjsmin.c |
+++ /dev/null |
@@ -1,456 +0,0 @@ |
-/* |
- * Copyright 2011 - 2014 |
- * Andr\xe9 Malo or his licensors, as applicable |
- * |
- * Licensed under the Apache License, Version 2.0 (the "License"); |
- * you may not use this file except in compliance with the License. |
- * You may obtain a copy of the License at |
- * |
- * http://www.apache.org/licenses/LICENSE-2.0 |
- * |
- * Unless required by applicable law or agreed to in writing, software |
- * distributed under the License is distributed on an "AS IS" BASIS, |
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
- * See the License for the specific language governing permissions and |
- * limitations under the License. |
- */ |
- |
-#include "cext.h" |
-EXT_INIT_FUNC; |
- |
-#define RJSMIN_DULL_BIT (1 << 0) |
-#define RJSMIN_PRE_REGEX_BIT (1 << 1) |
-#define RJSMIN_REGEX_DULL_BIT (1 << 2) |
-#define RJSMIN_REGEX_CC_DULL_BIT (1 << 3) |
-#define RJSMIN_ID_LIT_BIT (1 << 4) |
-#define RJSMIN_ID_LIT_O_BIT (1 << 5) |
-#define RJSMIN_ID_LIT_C_BIT (1 << 6) |
-#define RJSMIN_STRING_DULL_BIT (1 << 7) |
-#define RJSMIN_SPACE_BIT (1 << 8) |
- |
-#ifdef EXT3 |
-typedef Py_UNICODE rchar; |
-#else |
-typedef unsigned char rchar; |
-#endif |
-#define U(c) ((rchar)(c)) |
- |
-#define RJSMIN_IS_DULL(c) ((U(c) > 127) || \ |
- (rjsmin_charmask[U(c) & 0x7F] & RJSMIN_DULL_BIT)) |
- |
-#define RJSMIN_IS_REGEX_DULL(c) ((U(c) > 127) || \ |
- (rjsmin_charmask[U(c) & 0x7F] & RJSMIN_REGEX_DULL_BIT)) |
- |
-#define RJSMIN_IS_REGEX_CC_DULL(c) ((U(c) > 127) || \ |
- (rjsmin_charmask[U(c) & 0x7F] & RJSMIN_REGEX_CC_DULL_BIT)) |
- |
-#define RJSMIN_IS_STRING_DULL(c) ((U(c) > 127) || \ |
- (rjsmin_charmask[U(c) & 0x7F] & RJSMIN_STRING_DULL_BIT)) |
- |
-#define RJSMIN_IS_ID_LITERAL(c) ((U(c) > 127) || \ |
- (rjsmin_charmask[U(c) & 0x7F] & RJSMIN_ID_LIT_BIT)) |
- |
-#define RJSMIN_IS_ID_LITERAL_OPEN(c) ((U(c) > 127) || \ |
- (rjsmin_charmask[U(c) & 0x7F] & RJSMIN_ID_LIT_O_BIT)) |
- |
-#define RJSMIN_IS_ID_LITERAL_CLOSE(c) ((U(c) > 127) || \ |
- (rjsmin_charmask[U(c) & 0x7F] & RJSMIN_ID_LIT_C_BIT)) |
- |
-#define RJSMIN_IS_SPACE(c) ((U(c) <= 127) && \ |
- (rjsmin_charmask[U(c) & 0x7F] & RJSMIN_SPACE_BIT)) |
- |
-#define RJSMIN_IS_PRE_REGEX_1(c) ((U(c) <= 127) && \ |
- (rjsmin_charmask[U(c) & 0x7F] & RJSMIN_PRE_REGEX_BIT)) |
- |
- |
-static const unsigned short rjsmin_charmask[128] = { |
- 396, 396, 396, 396, 396, 396, 396, 396, |
- 396, 396, 2, 396, 396, 2, 396, 396, |
- 396, 396, 396, 396, 396, 396, 396, 396, |
- 396, 396, 396, 396, 396, 396, 396, 396, |
- 396, 175, 76, 141, 253, 141, 143, 76, |
- 175, 205, 141, 237, 143, 237, 141, 136, |
- 253, 253, 253, 253, 253, 253, 253, 253, |
- 253, 253, 143, 143, 141, 143, 141, 143, |
- 141, 253, 253, 253, 253, 253, 253, 253, |
- 253, 253, 253, 253, 253, 253, 253, 253, |
- 253, 253, 253, 253, 253, 253, 253, 253, |
- 253, 253, 253, 171, 1, 197, 141, 253, |
- 141, 253, 253, 253, 253, 253, 253, 253, |
- 253, 253, 253, 253, 253, 253, 253, 253, |
- 253, 253, 253, 253, 253, 253, 253, 253, |
- 253, 253, 253, 175, 143, 207, 141, 253 |
-}; |
- |
-static Py_ssize_t |
-rjsmin(const rchar *source, rchar *target, Py_ssize_t length, |
- int keep_bang_comments) |
-{ |
- const rchar *reset, *sentinel = source + length; |
- rchar *tstart = target; |
- rchar c, quote; |
- |
- while (source < sentinel) { |
- c = *source++; |
- if (RJSMIN_IS_DULL(c)) { |
- *target++ = c; |
- continue; |
- } |
- switch (c) { |
- |
- /* String */ |
- case U('\''): case U('"'): |
- reset = source; |
- *target++ = quote = c; |
- while (source < sentinel) { |
- c = *source++; |
- *target++ = c; |
- if (RJSMIN_IS_STRING_DULL(c)) |
- continue; |
- switch (c) { |
- case U('\''): case U('"'): |
- if (c == quote) |
- goto cont; |
- continue; |
- case U('\\'): |
- if (source < sentinel) { |
- c = *source++; |
- *target++ = c; |
- if (c == U('\r') && source < sentinel |
- && *source == U('\n')) |
- *target++ = *source++; |
- } |
- continue; |
- } |
- break; |
- } |
- target -= source - reset; |
- source = reset; |
- continue; |
- |
- /* Comment or Regex or something else entirely */ |
- case U('/'): |
- if (!(source < sentinel)) { |
- *target++ = c; |
- } |
- else { |
- switch (*source) { |
- /* Comment */ |
- case U('*'): case U('/'): |
- goto skip_or_copy_ws; |
- |
- default: |
- if ( target == tstart |
- || RJSMIN_IS_PRE_REGEX_1(*(target - 1)) |
- || ( |
- (target - tstart >= 6) |
- && *(target - 1) == U('n') |
- && *(target - 2) == U('r') |
- && *(target - 3) == U('u') |
- && *(target - 4) == U('t') |
- && *(target - 5) == U('e') |
- && *(target - 6) == U('r') |
- && ( |
- target - tstart == 6 |
- || !RJSMIN_IS_ID_LITERAL(*(target - 7)) |
- ) |
- )) { |
- |
- /* Regex */ |
- reset = source; |
- *target++ = U('/'); |
- while (source < sentinel) { |
- c = *source++; |
- *target++ = c; |
- if (RJSMIN_IS_REGEX_DULL(c)) |
- continue; |
- switch (c) { |
- case U('/'): |
- goto cont; |
- case U('\\'): |
- if (source < sentinel) { |
- c = *source++; |
- *target++ = c; |
- if (c == U('\r') || c == U('\n')) |
- break; |
- } |
- continue; |
- case U('['): |
- while (source < sentinel) { |
- c = *source++; |
- *target++ = c; |
- if (RJSMIN_IS_REGEX_CC_DULL(c)) |
- continue; |
- switch (c) { |
- case U('\\'): |
- if (source < sentinel) { |
- c = *source++; |
- *target++ = c; |
- if (c == U('\r') || c == U('\n')) |
- break; |
- } |
- continue; |
- case U(']'): |
- goto cont_regex; |
- } |
- } |
- break; |
- } |
- break; |
- cont_regex: |
- continue; |
- } |
- target -= source - reset; |
- source = reset; |
- } |
- else { |
- /* Just a slash */ |
- *target++ = c; |
- } |
- continue; |
- } |
- } |
- continue; |
- |
- /* Whitespace */ |
- default: |
- skip_or_copy_ws: |
- quote = U(' '); |
- --source; |
- while (source < sentinel) { |
- c = *source++; |
- if (RJSMIN_IS_SPACE(c)) |
- continue; |
- switch (c) { |
- case U('\r'): case U('\n'): |
- quote = U('\n'); |
- continue; |
- case U('/'): |
- if (source < sentinel) { |
- switch (*source) { |
- case U('*'): |
- reset = source++; |
- /* copy bang comment, if requested */ |
- if ( keep_bang_comments && source < sentinel |
- && *source == U('!')) { |
- *target++ = U('/'); |
- *target++ = U('*'); |
- *target++ = *source++; |
- while (source < sentinel) { |
- c = *source++; |
- *target++ = c; |
- if (c == U('*') && source < sentinel |
- && *source == U('/')) { |
- *target++ = *source++; |
- reset = NULL; |
- break; |
- } |
- } |
- if (!reset) |
- continue; |
- target -= source - reset; |
- source = reset; |
- } |
- /* strip regular comment */ |
- else { |
- while (source < sentinel) { |
- c = *source++; |
- if (c == U('*') && source < sentinel |
- && *source == U('/')) { |
- ++source; |
- reset = NULL; |
- break; |
- } |
- } |
- if (!reset) |
- continue; |
- source = reset; |
- *target++ = U('/'); |
- } |
- goto cont; |
- case U('/'): |
- ++source; |
- while (source < sentinel) { |
- c = *source++; |
- switch (c) { |
- case U('\n'): |
- break; |
- case U('\r'): |
- if (source < sentinel |
- && *source == U('\n')) |
- ++source; |
- break; |
- default: |
- continue; |
- } |
- break; |
- } |
- quote = U('\n'); |
- continue; |
- } |
- } |
- } |
- --source; |
- break; |
- } |
- |
- if ((tstart < target && source < sentinel) |
- && ((quote == U('\n') |
- && RJSMIN_IS_ID_LITERAL_CLOSE(*(target - 1)) |
- && RJSMIN_IS_ID_LITERAL_OPEN(*source)) |
- || |
- (quote == U(' ') |
- && ((RJSMIN_IS_ID_LITERAL(*(target - 1)) |
- && RJSMIN_IS_ID_LITERAL(*source)) |
- || (source < sentinel |
- && ((*(target - 1) == U('+') |
- && *source == U('+')) |
- || (*(target - 1) == U('-') |
- && *source == U('-')))))))) |
- *target++ = quote; |
- } |
- cont: |
- continue; |
- } |
- return (Py_ssize_t)(target - tstart); |
-} |
- |
- |
-PyDoc_STRVAR(rjsmin_jsmin__doc__, |
-"jsmin(script, keep_bang_comments=False)\n\ |
-\n\ |
-Minify javascript based on `jsmin.c by Douglas Crockford`_\\.\n\ |
-\n\ |
-Instead of parsing the stream char by char, it uses a regular\n\ |
-expression approach which minifies the whole script with one big\n\ |
-substitution regex.\n\ |
-\n\ |
-.. _jsmin.c by Douglas Crockford:\n\ |
- http://www.crockford.com/javascript/jsmin.c\n\ |
-\n\ |
-:Note: This is a hand crafted C implementation built on the regex\n\ |
- semantics.\n\ |
-\n\ |
-:Parameters:\n\ |
- `script` : ``str``\n\ |
- Script to minify\n\ |
-\n\ |
- `keep_bang_comments` : ``bool``\n\ |
- Keep comments starting with an exclamation mark? (``/*!...*/``)\n\ |
-\n\ |
-:Return: Minified script\n\ |
-:Rtype: ``str``"); |
- |
-static PyObject * |
-rjsmin_jsmin(PyObject *self, PyObject *args, PyObject *kwds) |
-{ |
- PyObject *script, *keep_bang_comments_ = NULL, *result; |
- static char *kwlist[] = {"script", "keep_bang_comments", NULL}; |
- Py_ssize_t slength, length; |
- int keep_bang_comments; |
-#ifdef EXT2 |
- int uni; |
-#define UOBJ "O" |
-#endif |
-#ifdef EXT3 |
-#define UOBJ "U" |
-#endif |
- |
- if (!PyArg_ParseTupleAndKeywords(args, kwds, UOBJ "|O", kwlist, |
- &script, &keep_bang_comments_)) |
- return NULL; |
- |
- if (!keep_bang_comments_) |
- keep_bang_comments = 0; |
- else { |
- keep_bang_comments = PyObject_IsTrue(keep_bang_comments_); |
- if (keep_bang_comments == -1) |
- return NULL; |
- } |
- |
-#ifdef EXT2 |
- if (PyUnicode_Check(script)) { |
- if (!(script = PyUnicode_AsUTF8String(script))) |
- return NULL; |
- uni = 1; |
- } |
- else { |
- if (!(script = PyObject_Str(script))) |
- return NULL; |
- uni = 0; |
- } |
-#endif |
- |
-#ifdef EXT3 |
- Py_INCREF(script); |
-#define PyString_GET_SIZE PyUnicode_GET_SIZE |
-#define PyString_AS_STRING PyUnicode_AS_UNICODE |
-#define _PyString_Resize PyUnicode_Resize |
-#define PyString_FromStringAndSize PyUnicode_FromUnicode |
-#endif |
- |
- slength = PyString_GET_SIZE(script); |
- if (!(result = PyString_FromStringAndSize(NULL, slength))) { |
- Py_DECREF(script); |
- return NULL; |
- } |
- Py_BEGIN_ALLOW_THREADS |
- length = rjsmin((rchar *)PyString_AS_STRING(script), |
- (rchar *)PyString_AS_STRING(result), |
- slength, keep_bang_comments); |
- Py_END_ALLOW_THREADS |
- |
- Py_DECREF(script); |
- if (length < 0) { |
- Py_DECREF(result); |
- return NULL; |
- } |
- if (length != slength && _PyString_Resize(&result, length) == -1) |
- return NULL; |
- |
-#ifdef EXT2 |
- if (uni) { |
- script = PyUnicode_DecodeUTF8(PyString_AS_STRING(result), |
- PyString_GET_SIZE(result), "strict"); |
- Py_DECREF(result); |
- if (!script) |
- return NULL; |
- result = script; |
- } |
-#endif |
- return result; |
-} |
- |
-/* ------------------------ BEGIN MODULE DEFINITION ------------------------ */ |
- |
-EXT_METHODS = { |
- {"jsmin", |
- (PyCFunction)rjsmin_jsmin, METH_VARARGS | METH_KEYWORDS, |
- rjsmin_jsmin__doc__}, |
- |
- {NULL} /* Sentinel */ |
-}; |
- |
-PyDoc_STRVAR(EXT_DOCS_VAR, |
-"C implementation of rjsmin\n\ |
-==========================\n\ |
-\n\ |
-C implementation of rjsmin."); |
- |
- |
-EXT_DEFINE(EXT_MODULE_NAME, EXT_METHODS_VAR, EXT_DOCS_VAR); |
- |
-EXT_INIT_FUNC { |
- PyObject *m; |
- |
- /* Create the module and populate stuff */ |
- if (!(m = EXT_CREATE(&EXT_DEFINE_VAR))) |
- EXT_INIT_ERROR(NULL); |
- |
- EXT_ADD_UNICODE(m, "__author__", "Andr\xe9 Malo", "latin-1"); |
- EXT_ADD_STRING(m, "__docformat__", "restructuredtext en"); |
- |
- EXT_INIT_RETURN(m); |
-} |
- |
-/* ------------------------- END MODULE DEFINITION ------------------------- */ |