1<?xml version="1.0" encoding="ascii"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3          "DTD/xhtml1-transitional.dtd">
4<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5<head>
6  <title>rjsmin</title>
7  <link rel="stylesheet" href="epydoc.css" type="text/css" />
8  <script type="text/javascript" src="epydoc.js"></script>
9</head>
10
11<body bgcolor="white" text="black" link="blue" vlink="#204080"
12      alink="#204080">
13<!-- ==================== NAVIGATION BAR ==================== -->
14<table class="navbar" border="0" width="100%" cellpadding="0"
15       bgcolor="#a0c0ff" cellspacing="0">
16  <tr valign="middle">
17  <!-- Home link -->
18      <th bgcolor="#70b0f0" class="navbar-select"
19          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
20
21  <!-- Tree link -->
22      <th>&nbsp;&nbsp;&nbsp;<a
23        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
24
25  <!-- Index link -->
26      <th>&nbsp;&nbsp;&nbsp;<a
27        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
28
29  <!-- Help link -->
30      <th>&nbsp;&nbsp;&nbsp;<a
31        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
32
33  <!-- Project homepage -->
34      <th class="navbar" align="right" width="100%">
35        <table border="0" cellpadding="0" cellspacing="0">
36          <tr><th class="navbar" align="center"
37            ><a href="http://opensource.perlig.de/rjsmin/" target="_top">Visit rjsmin Online</a></th>
38          </tr></table></th>
39  </tr>
40</table>
41<table width="100%" cellpadding="0" cellspacing="0">
42  <tr valign="top">
43    <td width="100%">
44      <span class="breadcrumbs">
45        Module&nbsp;rjsmin
46      </span>
47    </td>
48    <td>
49      <table cellpadding="0" cellspacing="0">
50        <!-- hide/show private -->
51      </table>
52    </td>
53  </tr>
54</table>
55<!-- ==================== MODULE DESCRIPTION ==================== -->
56<h1 class="epydoc">Module rjsmin</h1><p class="nomargin-top"><span class="codelink"><a href="rjsmin-pysrc.html">source&nbsp;code</a></span></p>
57<p>rJSmin is a javascript minifier written in python.</p>
58<p>The minifier is based on the semantics of <a class="rst-reference external" href="http://www.crockford.com/javascript/jsmin.c" target="_top">jsmin.c by Douglas Crockford</a>.</p>
59<p>The module is a re-implementation aiming for speed, so it can be used at
60runtime (rather than during a preprocessing step). Usually it produces the
61same results as the original <tt class="rst-docutils literal">jsmin.c</tt>. It differs in the following ways:</p>
62<ul class="rst-simple">
63<li>there is no error detection: unterminated string, regex and comment
64literals are treated as regular javascript code and minified as such.</li>
65<li>Control characters inside string and regex literals are left untouched; they
66are not converted to spaces (nor to n)</li>
67<li>Newline characters are not allowed inside string and regex literals, except
68for line continuations in string literals (ECMA-5).</li>
69<li>&quot;return /regex/&quot; is recognized correctly.</li>
70<li>&quot;+ +&quot; and &quot;- -&quot; sequences are not collapsed to '++' or '--'</li>
71<li>Newlines before ! operators are removed more sensibly</li>
72<li>Comments starting with an exclamation mark (<tt class="rst-docutils literal">!</tt>) can be kept optionally</li>
73<li>rJSmin does not handle streams, but only complete strings. (However, the
74module provides a &quot;streamy&quot; interface).</li>
75</ul>
76<p>Since most parts of the logic are handled by the regex engine it's way faster
77than the original python port of <tt class="rst-docutils literal">jsmin.c</tt> by Baruch Even. The speed factor
78varies between about 6 and 55 depending on input and python version (it gets
79faster the more compressed the input already is). Compared to the
80speed-refactored python port by Dave St.Germain the performance gain is less
81dramatic but still between 3 and 50 (for huge inputs). See the docs/BENCHMARKS
82file for details.</p>
83<p>rjsmin.c is a reimplementation of rjsmin.py in C and speeds it up even more.</p>
84<p>Both python 2 and python 3 are supported.</p>
85
86<hr />
87<div class="fields">      <p><strong>Copyright:</strong>
88        Copyright 2011 - 2014
89Andr&#233; Malo or his licensors, as applicable
90      </p>
91      <p><strong>License:</strong>
92        <p>Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
93you may not use this file except in compliance with the License.
94You may obtain a copy of the License at</p>
95<blockquote>
96<a class="rst-reference external" href="http://www.apache.org/licenses/LICENSE-2.0" target="_top">http://www.apache.org/licenses/LICENSE-2.0</a></blockquote>
97<p>Unless required by applicable law or agreed to in writing, software
98distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
99WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
100See the License for the specific language governing permissions and
101limitations under the License.</p>
102      </p>
103      <p><strong>Version:</strong>
104        1.0.10
105      </p>
106      <p><strong>Author:</strong>
107        Andr&#233; Malo
108      </p>
109</div><!-- ==================== FUNCTIONS ==================== -->
110<a name="section-Functions"></a>
111<table class="summary" border="1" cellpadding="3"
112       cellspacing="0" width="100%" bgcolor="white">
113<tr bgcolor="#70b0f0" class="table-header">
114  <td align="left" colspan="2" class="table-header">
115    <span class="table-header">Functions</span></td>
116</tr>
117<tr>
118    <td width="15%" align="right" valign="top" class="summary">
119      <span class="summary-type"><tt class="rst-docutils literal">str</tt></span>
120    </td><td class="summary">
121      <table width="100%" cellpadding="0" cellspacing="0" border="0">
122        <tr>
123          <td><span class="summary-sig"><a href="rjsmin-module.html#jsmin" class="summary-sig-name">jsmin</a>(<span class="summary-sig-arg">script</span>,
124        <span class="summary-sig-arg">keep_bang_comments</span>=<span class="summary-sig-default">False</span>)</span><br />
125      Minify javascript based on <a class="rst-reference external" href="http://www.crockford.com/javascript/jsmin.c" target="_top">jsmin.c by Douglas Crockford</a>.</td>
126          <td align="right" valign="top">
127            
128            
129          </td>
130        </tr>
131      </table>
132      
133    </td>
134  </tr>
135</table>
136<!-- ==================== FUNCTION DETAILS ==================== -->
137<a name="section-FunctionDetails"></a>
138<table class="details" border="1" cellpadding="3"
139       cellspacing="0" width="100%" bgcolor="white">
140<tr bgcolor="#70b0f0" class="table-header">
141  <td align="left" colspan="2" class="table-header">
142    <span class="table-header">Function Details</span></td>
143</tr>
144</table>
145<a name="jsmin"></a>
146<div>
147<table class="details" border="1" cellpadding="3"
148       cellspacing="0" width="100%" bgcolor="white">
149<tr><td>
150  <table width="100%" cellpadding="0" cellspacing="0" border="0">
151  <tr valign="top"><td>
152  <h3 class="epydoc"><span class="sig"><span class="sig-name">jsmin</span>(<span class="sig-arg">script</span>,
153        <span class="sig-arg">keep_bang_comments</span>=<span class="sig-default">False</span>)</span>
154  </h3>
155  </td><td align="right" valign="top"
156    >&nbsp;
157    </td>
158  </tr></table>
159  
160  <p>Minify javascript based on <a class="rst-reference external" href="http://www.crockford.com/javascript/jsmin.c" target="_top">jsmin.c by Douglas Crockford</a>.</p>
161<p>Instead of parsing the stream char by char, it uses a regular
162expression approach which minifies the whole script with one big
163substitution regex.</p>
164  <dl class="fields">
165    <dt>Parameters:</dt>
166    <dd><ul class="nomargin-top">
167        <li><strong class="pname"><code>script</code></strong> (<tt class="rst-docutils literal">str</tt>) - Script to minify</li>
168        <li><strong class="pname"><code>keep_bang_comments</code></strong> (<tt class="rst-docutils literal">bool</tt>) - Keep comments starting with an exclamation mark? (<tt class="rst-docutils literal"><span class="pre">/*!...*/</span></tt>)</li>
169    </ul></dd>
170    <dt>Returns: <tt class="rst-docutils literal">str</tt></dt>
171        <dd>Minified script</dd>
172  </dl>
173<div class="fields">      <p><strong>Note:</strong>
174        This is a hand crafted C implementation built on the regex
175semantics.
176      </p>
177</div></td></tr></table>
178</div>
179<br />
180<!-- ==================== NAVIGATION BAR ==================== -->
181<table class="navbar" border="0" width="100%" cellpadding="0"
182       bgcolor="#a0c0ff" cellspacing="0">
183  <tr valign="middle">
184  <!-- Home link -->
185      <th bgcolor="#70b0f0" class="navbar-select"
186          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
187
188  <!-- Tree link -->
189      <th>&nbsp;&nbsp;&nbsp;<a
190        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
191
192  <!-- Index link -->
193      <th>&nbsp;&nbsp;&nbsp;<a
194        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
195
196  <!-- Help link -->
197      <th>&nbsp;&nbsp;&nbsp;<a
198        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
199
200  <!-- Project homepage -->
201      <th class="navbar" align="right" width="100%">
202        <table border="0" cellpadding="0" cellspacing="0">
203          <tr><th class="navbar" align="center"
204            ><a href="http://opensource.perlig.de/rjsmin/" target="_top">Visit rjsmin Online</a></th>
205          </tr></table></th>
206  </tr>
207</table>
208
209<script type="text/javascript">
210  <!--
211  // Private objects are initially displayed (because if
212  // javascript is turned off then we want them to be
213  // visible); but by default, we want to hide them.  So hide
214  // them unless we have a cookie that says to show them.
215  checkCookie();
216  // -->
217</script>
218</body>
219</html>
220