Skip to content

Commit 3b643e9

Browse files
committed
Create modules to avoid global scope pollution
1 parent e99a6ed commit 3b643e9

File tree

6 files changed

+69
-362
lines changed

6 files changed

+69
-362
lines changed

lalolab/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ lalohelp.js
66
plotlib.js
77
!src/plotlib.js
88

9+
*-module.js
10+
*.min.js
11+
912
# Excludes examples
1013
examples/
1114

lalolab/Makefile

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
all: src/glpk.min.js jszip.min.js lalolib.js ml.js laloliblab.js lalohelp.js plotlib.js
1+
all: src/glpk.min.js jszip.min.js lalolib.js ml.js laloliblab.js lalohelp.js plotlib.js
22

33
# Dependencies: GLPK.js and JSZIP.js
44
src/glpk.min.js:
@@ -21,17 +21,17 @@ jszip.min.js:
2121

2222
# We do not include toolboxes in lalolib.js: explicitly load them with <script...> in the html file
2323
# This avoids loading a large file with toolboxes that are not used.
24-
lalolib.js: src/lalolibbase.js src/linalg.js src/sparse.js src/laloglpk.js src/glpk.min.js src/stats.js src/complex.js src/laloplots.js
25-
cat src/lalolibbase.js src/linalg.js src/sparse.js src/laloglpk.js src/glpk.min.js src/stats.js src/complex.js src/laloplots.js > lalolib.js
24+
lalolib.js: src/lalolibbase.js src/linalg.js src/sparse.js src/laloglpk.js src/optim.js src/glpk.min.js src/stats.js src/complex.js src/laloplots.js
25+
cat src/lalolibbase.js src/linalg.js src/sparse.js src/laloglpk.js src/optim.js src/glpk.min.js src/stats.js src/complex.js src/laloplots.js > lalolib.js
2626

2727
# ML.js includes LALOLib plus Machine learning functions
2828
ml.js: lalolib.js src/kernels.js src/Classifier.js src/Regression.js src/Clustering.js src/DimReduction.js src/Loaders.js src/MLutils.js
2929
cat lalolib.js src/kernels.js src/Classifier.js src/Regression.js src/Clustering.js src/DimReduction.js src/Loaders.js src/MLutils.js > ml.js
3030

3131
# version for LALOLab (different printing functions...)
3232
# All toolboxes are included in LALOLab by default
33-
laloliblab.js: src/linalg.js src/sparse.js src/laloglpk.js src/stats.js src/glpk.min.js src/complex.js src/kernels.js src/Classifier.js src/Regression.js src/Clustering.js src/DimReduction.js src/GraphicalModel.js src/Loaders.js src/MLutils.js toolboxes
34-
cat src/linalg.js src/sparse.js src/laloglpk.js src/glpk.min.js src/stats.js src/complex.js src/kernels.js src/Classifier.js src/Regression.js src/Clustering.js src/DimReduction.js src/GraphicalModel.js src/Loaders.js src/MLutils.js toolboxes/*.js > laloliblab.js
33+
laloliblab.js: src/linalg.js src/sparse.js src/laloglpk.js src/optim.js src/stats.js src/glpk.min.js src/complex.js src/kernels.js src/Classifier.js src/Regression.js src/Clustering.js src/DimReduction.js src/GraphicalModel.js src/Loaders.js src/MLutils.js toolboxes
34+
cat src/linalg.js src/sparse.js src/laloglpk.js src/optim.js src/glpk.min.js src/stats.js src/complex.js src/kernels.js src/Classifier.js src/Regression.js src/Clustering.js src/DimReduction.js src/GraphicalModel.js src/Loaders.js src/MLutils.js toolboxes/*.js > laloliblab.js
3535
echo "const I = Complex_I;" >> laloliblab.js
3636

3737
# Online Help
@@ -42,3 +42,30 @@ lalohelp.js: src/lalohelpbase.js help/*
4242
plotlib.js: src/plotlib.js
4343
cp src/plotlib.js ./
4444

45+
# modules
46+
modules: lalolib-module.js mljs-module.js lalolib-noglpk-module.js mljs-noglpk-module.js
47+
48+
lalolib-module.js: src/modules/lalolib-moduleHeader.js lalolib.js src/modules/lalolib-moduleFooter.js
49+
cat src/modules/lalolib-moduleHeader.js lalolib.js src/modules/lalolib-moduleFooter.js > lalolib-module.js
50+
51+
52+
mljs-module.js: src/modules/mljs-moduleHeader.js ml.js src/modules/mljs-moduleFooter.js
53+
cat src/modules/mljs-moduleHeader.js ml.js src/modules/mljs-moduleFooter.js > mljs-module.js
54+
55+
lalolib-noglpk-module.js: src/modules/lalolib-moduleHeader.js src/modules/lalolib-noglpk-moduleFooter.js src/lalolibbase.js src/linalg.js src/sparse.js src/optim.js src/stats.js src/complex.js
56+
cat src/modules/lalolib-moduleHeader.js src/lalolibbase.js src/linalg.js src/sparse.js src/optim.js src/stats.js src/complex.js src/modules/lalolib-noglpk-moduleFooter.js > lalolib-noglpk-module.js
57+
58+
mljs-noglpk-module.js: src/modules/mljs-moduleHeader.js src/modules/mljs-noglpk-moduleFooter.js src/lalolibbase.js src/linalg.js src/sparse.js src/optim.js src/stats.js src/complex.js src/kernels.js src/Classifier.js src/Regression.js src/Clustering.js src/DimReduction.js src/Loaders.js src/MLutils.js
59+
cat src/modules/mljs-moduleHeader.js src/lalolibbase.js src/linalg.js src/sparse.js src/optim.js src/stats.js src/complex.js src/kernels.js src/Classifier.js src/Regression.js src/Clustering.js src/DimReduction.js src/Loaders.js src/MLutils.js src/modules/mljs-noglpk-moduleFooter.js > mljs-noglpk-module.js
60+
61+
# minification (requires minify installed via npm)
62+
minify: modules
63+
minify lalolib.js
64+
minify ml.js
65+
minify lalolib-module.js
66+
minify mljs-module.js
67+
minify lalolib-noglpk-module.js
68+
minify mljs-noglpk-module.js
69+
70+
71+

lalolab/lalolib.html

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,19 @@ <h1><strong>LALOLib / ML.js</strong>: <span style="font-size:90%;">scientific co
137137
</pre>
138138
for ML.js.
139139
</p>
140-
<p> Alternatively, you can use a local copy of the library (download <a href="lalolib.zip" download>lalolib</a> or <a href="ml.zip" download>ml.js</a>) and modify the path accordingly.
140+
<p> Alternatively, you can
141+
<ul>
142+
<li>use a local copy of the library (download <a href="../package/lalolib.zip" download>lalolib</a> or <a href="../package/ml.zip" download>ml.js</a> and modify the path accordingly in the <i>script</i> tag above);</li>
143+
<li>use a <i>module</i> with <pre>&lt;script src="http://mlweb.loria.fr/module-name.js"&gt;&lt;/script&gt;</pre> from the following list and prefix all functions accordingly (e.g., use <tt>mljs.solve(A,b)</tt> instead of <tt>solve(A,b)</tt>):
144+
<table cellpadding="5px">
145+
<tr><th>Module name</th><th>Contents</th><th>prefix</th><th>size</th></tr>
146+
<tr><td><a href="../lalolib-module.min.js">lalolib-module.min.js</a></td><td>LALOLib (without plots)</td><td><tt>lalolib.</tt></td><td>446 KB</td></tr>
147+
<tr><td><a href="../mljs-module.min.js">mljs-module.min.js</a></td><td>ML.js (without plots)</td><td><tt>mljs.</tt></td><td>552 KB</td></tr>
148+
<tr><td><a href="../lalolib-noglpk-module.min.js">lalolib-noglpk-module.min.js</a></td><td>LALOLib (without plots, lp, qp, minl0, minl1)</td><td><tt>lalolib.</tt></td><td>147 KB</td></tr>
149+
<tr><td><a href="../mljs-noglpk-module.min.js">mljs-noglpk-module.min.js</a></td><td>ML.js (without plots, lp, qp, minl0, minl1) </td><td><tt>mljs.</tt></td><td>253 KB</td></tr>
150+
</table>
151+
</li>
152+
</ul>
141153
<!--<pre>
142154
&lt;script src="lalolib.js"&gt;&lt;/script&gt;
143155
</pre>
@@ -508,7 +520,7 @@ <h2 id="ml">Using the machine learning functions (ML.js)</h2>
508520
<h2 id="apiref">Available functions / API reference</h2>
509521

510522
<p>
511-
Below is the list of functions provided by LALOLib. The help shows both the script-like LALOLab syntax and the corresponding javascript calls. Examples are mostly written for <a href="index.html">LALOLab</a> and should be executed by a <a href="#safer">lab.do() statement</a> in a javascript context.
523+
Below is the list of functions provided by LALOLib. The help shows both the script-like LALOLab syntax and the corresponding javascript calls. Remember that when using a module version of the library, the functions must be prefixed accordingly. Examples are mostly written for <a href="index.html">LALOLab</a> and should be executed by a <a href="#safer">lab.do() statement</a> in a javascript context.
512524
</p>
513525

514526
<div class="container">

0 commit comments

Comments
 (0)