Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(239)

Unified Diff: tracing/third_party/tvcm/third_party/rjsmin/rjsmin.c

Issue 1376953005: Move tracing/third_party/tvcm -> third_party/py_vulcanize. (Closed) Base URL: git@github.com:catapult-project/catapult.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 ------------------------- */

Powered by Google App Engine
This is Rietveld 408576698