Commit 7b177111 authored by Boxiang Sun's avatar Boxiang Sun

erp5_notebook: Make jslint happy...

parent f9495a51
/*global window, console, RSVP, document, URL, eval, XMLHttpRequest, marked, pyodide, WebAssembly, fetch*/ /*global window, console, RSVP, document, URL, eval, XMLHttpRequest, marked, pyodide, WebAssembly, fetch*/
/*jslint nomen: true, indent: 2, maxerr: 3 */ /*jslint nomen: true, indent: 2, maxerr: 3, regexp: true */
(function (window) { (function (window) {
"use strict"; "use strict";
function sideEffectDiv(sideEffectClass, reportSideEffect) {
// appends a side effect div to the side effect area
var div = document.createElement("div");
div.setAttribute("class", sideEffectClass);
if (reportSideEffect === undefined) {
div.setAttribute("style", "display:");
}
document.body.appendChild(div);
return div;
}
var IODide = function createIODide() { var IODide = function createIODide() {
var iodide = { var iodide = {
output: { output: {
text: function (s, reportSideEffect) { text: function (content, reportSideEffect) {
var i, div, line_list; var i, div, line_list;
console.log(s); console.log(content);
line_list = s.toString().split("\n"); line_list = content.toString().split("\n");
for (i = 0; i < line_list.length; i += 1) { for (i = 0; i < line_list.length; i += 1) {
div = sideEffectDiv("side-effect-print", reportSideEffect); div = sideEffectDiv("side-effect-print", reportSideEffect);
div.textContent = line_list[i]; div.textContent = line_list[i];
...@@ -37,32 +48,18 @@ ...@@ -37,32 +48,18 @@
Module = {}, Module = {},
packages, packages,
loadedPackages = [], loadedPackages = [],
py_div_id_prefix = "py_div_id_",
py_div_id_count = 0,
py_div_id_count_2 = 0,
props = {},
// Regexp for validating package name and URI // Regexp for validating package name and URI
package_name_regexp = '[a-z0-9_][a-z0-9_\-]*', package_uri_regexp = /^https?:\/\/.*?([a-z0-9_][a-z0-9_\-]*).js$/,
package_uri_regexp = new RegExp('^https?://.*?(' + package_name_regexp + ').js$', 'i'); package_name_regexp = /^[a-z0-9_][a-z0-9_\-]*$/;
package_name_regexp = new RegExp('^' + package_name_regexp + '$', 'i'); package_uri_regexp = new RegExp(package_uri_regexp, 'i');
package_name_regexp = new RegExp(package_name_regexp, 'i');
window.iodide = new IODide(); window.iodide = new IODide();
IODide.prototype.addOutputHandler = function () { IODide.prototype.addOutputHandler = function () {
return; return;
}; };
function sideEffectDiv(sideEffectClass, reportSideEffect) {
// appends a side effect div to the side effect area
var div = document.createElement("div");
div.setAttribute("class", sideEffectClass);
if (reportSideEffect === undefined) {
div.setAttribute("style", "display:");
}
document.body.appendChild(div);
return div;
}
// Copied from jio // Copied from jio
function ajax(param) { function ajax(param) {
var xhr = new XMLHttpRequest(); var xhr = new XMLHttpRequest();
...@@ -132,28 +129,28 @@ ...@@ -132,28 +129,28 @@
FS = pyodide._module.FS; FS = pyodide._module.FS;
function recurseDir(rootpath) { function recurseDir(rootpath) {
var entry, dirs; var i, entry, dirs, path;
try { try {
dirs = FS.readdir(rootpath); dirs = FS.readdir(rootpath);
} catch { } catch (e) {
return; return;
} }
for (entry of dirs) {
if (entry.startsWith('.')) { for (i = 0; i < dirs.length; i += 1) {
continue; entry = dirs[i];
} if (!entry.startsWith('.')) {
const path = rootpath + entry; const path = rootpath + entry;
if (entry.endsWith('.so')) { if (entry.endsWith('.so')) {
if (Module['preloadedWasm'][path] === undefined) { if (Module.preloadedWasm[path] === undefined) {
queue.push(function () { queue.push(function () {
return Module['loadWebAssemblyModule']( return Module.loadWebAssemblyModule(
FS.readFile(path), { FS.readFile(path), {
loadAsync: true loadAsync: true
} }
) )
}) })
.push(function (module) { .push(function (module) {
Module['preloadedWasm'][path] = module; Module.preloadedWasm[path] = module;
}); });
} }
} else if (FS.isDir(FS.lookupPath(path).node.mode)) { } else if (FS.isDir(FS.lookupPath(path).node.mode)) {
...@@ -161,6 +158,7 @@ ...@@ -161,6 +158,7 @@
} }
} }
} }
}
recurseDir('/'); recurseDir('/');
...@@ -187,7 +185,7 @@ ...@@ -187,7 +185,7 @@
package_uri = 'default channel'; package_uri = 'default channel';
} }
if (package_name in loadedPackages) { if (loadedPackages.indexOf(package_name) !== -1) {
if (package_uri !== loadedPackages[package_name]) { if (package_uri !== loadedPackages[package_name]) {
throw new Error( throw new Error(
"URI mismatch, attempting to load package " + "URI mismatch, attempting to load package " +
...@@ -198,9 +196,9 @@ ...@@ -198,9 +196,9 @@
} else { } else {
toLoad[package_name] = package_uri; toLoad[package_name] = package_uri;
if (packages.hasOwnProperty(package_name)) { if (packages.hasOwnProperty(package_name)) {
for (k in packages[package_name]) { for (k = 0; k < packages[package_name].length; k += 1) {
subpackage = packages[package_name][k]; subpackage = packages[package_name][k];
if (!(subpackage in loadedPackages) && !(subpackage in toLoad)) { if (loadedPackages.indexOf(subpackage) === -1 && toLoad.indexOf(subpackage) === -1) {
queue.push(subpackage); queue.push(subpackage);
} }
} }
...@@ -211,13 +209,14 @@ ...@@ -211,13 +209,14 @@
} }
if (Object.keys(toLoad).length === 0) { if (Object.keys(toLoad).length === 0) {
console.log('No new packages to load'); // No new packages to load
return; return;
} }
pyodide.monitorRunDependencies = function (n) { pyodide.monitorRunDependencies = function (n) {
if (n === 0) { if (n === 0) {
for (package_name in toLoad) { for (k = 0; k < toLoad.length; k += 1) {
package_name = toLoad[k];
loadedPackages[package_name] = toLoad[package_name]; loadedPackages[package_name] = toLoad[package_name];
} }
delete pyodide.monitorRunDependencies; delete pyodide.monitorRunDependencies;
...@@ -225,7 +224,6 @@ ...@@ -225,7 +224,6 @@
return preloadWasm() return preloadWasm()
.push(function () { .push(function () {
defer.resolve(); defer.resolve();
console.log('Loaded ' + packageList);
return; return;
}); });
} }
...@@ -235,7 +233,9 @@ ...@@ -235,7 +233,9 @@
defer.reject(e); defer.reject(e);
} }
for (package_name in toLoad) { packageList = Object.keys(toLoad);
for (k = 0; k < packageList.length; k += 1) {
package_name = packageList[k];
script = document.createElement('script'); script = document.createElement('script');
package_uri = toLoad[package_name]; package_uri = toLoad[package_name];
if (package_uri === 'default channel') { if (package_uri === 'default channel') {
...@@ -300,6 +300,20 @@ ...@@ -300,6 +300,20 @@
throw new Error('Unsupported cell: ' + cell._type); throw new Error('Unsupported cell: ' + cell._type);
} }
function renderCodeblock(result_text) {
var div = document.createElement('div'),
pre = document.createElement('pre'),
result = document.createElement('code');
div.classList.add('code-block');
if (result_text !== undefined) {
result.innerHTML = result_text;
pre.appendChild(result);
div.appendChild(pre);
document.body.appendChild(div);
}
}
function executeJSCell(line_list) { function executeJSCell(line_list) {
// console.info('eval', line_list); // console.info('eval', line_list);
var text = line_list.join('\n'), var text = line_list.join('\n'),
...@@ -443,9 +457,8 @@ ...@@ -443,9 +457,8 @@
function executeMarkdownCell(line_list) { function executeMarkdownCell(line_list) {
var renderer = new marked.Renderer(); var renderer = new marked.Renderer();
return new RSVP.Promise(function (resolve, reject) { return new RSVP.Promise(function (resolve, reject) {
marked(line_list.join('\n'), { marked(line_list.join('\n'),
renderer: renderer {renderer: renderer},
},
function (err, content) { function (err, content) {
if (err) { if (err) {
reject(err); reject(err);
...@@ -465,7 +478,7 @@ ...@@ -465,7 +478,7 @@
return ajax({ return ajax({
url: "pyodide.asm.wasm", url: "pyodide.asm.wasm",
dataType: "arraybuffer" dataType: "arraybuffer"
}) });
}) })
.push(function (evt) { .push(function (evt) {
return WebAssembly.instantiate(evt.target.response, info); return WebAssembly.instantiate(evt.target.response, info);
...@@ -479,34 +492,6 @@ ...@@ -479,34 +492,6 @@
return queue; return queue;
} }
function renderCodeblock(result_text) {
var div = document.createElement('div'),
pre = document.createElement('pre'),
result = document.createElement('code');
div.classList.add('code-block');
if (result_text !== undefined) {
result.innerHTML = result_text;
pre.appendChild(result);
div.appendChild(pre);
document.body.appendChild(div);
}
}
function addPyCellStub() {
var div = document.createElement('div'),
pre = document.createElement('pre'),
result = document.createElement('code');
div.setAttribute("id", py_div_id_prefix + py_div_id_count);
py_div_id_count += 1;
div.classList.add('code-block');
result.innerHTML = "Loading pyodide";
pre.appendChild(result);
div.appendChild(pre);
document.body.appendChild(div);
}
function executePyCell(line_list) { function executePyCell(line_list) {
var result, code_text = line_list.join('\n'); var result, code_text = line_list.join('\n');
result = window.pyodide.runPython(code_text); result = window.pyodide.runPython(code_text);
...@@ -523,9 +508,9 @@ ...@@ -523,9 +508,9 @@
return defer.promise; return defer.promise;
} }
Module.checkABI = function(ABI_number) { Module.checkABI = function (ABI_number) {
if (ABI_number !== parseInt('1')) { if (ABI_number !== parseInt('1', 10)) {
var ABI_mismatch_exception = `ABI numbers differ. Expected 1, got ${ABI_number}`; var ABI_mismatch_exception = 'ABI numbers differ. Expected 1, got ' + ABI_number;
console.error(ABI_mismatch_exception); console.error(ABI_mismatch_exception);
throw ABI_mismatch_exception; throw ABI_mismatch_exception;
} }
...@@ -561,9 +546,6 @@ ...@@ -561,9 +546,6 @@
window.pyodide.loadedPackages = []; window.pyodide.loadedPackages = [];
window.pyodide._module.packages = json; window.pyodide._module.packages = json;
return; return;
})
.push(undefined, function (error) {
console.log(error);
}); });
return queue; return queue;
} }
...@@ -607,7 +589,7 @@ ...@@ -607,7 +589,7 @@
queue.push(function () { queue.push(function () {
return executePyCell(cell._line_list); return executePyCell(cell._line_list);
}); });
return queue return queue;
} }
return executeUnknownCellType(cell); return executeUnknownCellType(cell);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment