Commit 88f427e1 authored by Boxiang Sun's avatar Boxiang Sun

Amend the code to meet the JSLint requirement

parent 1a47bd9e
......@@ -2,61 +2,60 @@
/*jslint nomen: true, indent: 2, maxerr: 3 */
(function (window) {
"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 === false) {
if (reportSideEffect === undefined) {
div.setAttribute("style", "display:");
}
document.body.appendChild(div);
return div;
}
var IODide = function createIODide() {
var iodide = {
addOutputHandler: function (renderer) {
// TODO: seems this function was deprecated...
},
output: {
text: (s, reportSideEffect = false) => {
text: function (s, reportSideEffect) {
var i, div, line_list;
console.log("Inside output.text");
console.log(s);
for (const line of s.toString().split("\n")) {
const div = sideEffectDiv("side-effect-print", reportSideEffect);
div.innerText = line;
line_list = s.toString().split("\n");
for (i = 0; i < line_list.length; i += 1) {
div = sideEffectDiv("side-effect-print", reportSideEffect);
div.innerText = line_list[i];
}
},
element: (nodeType, reportSideEffect = true) => {
console.log("Inside output.element");
const div = sideEffectDiv("side-effect-element", reportSideEffect);
const node = document.createElement(nodeType);
element: function (nodeType, reportSideEffect) {
var div, node;
div = sideEffectDiv("side-effect-element", reportSideEffect);
node = document.createElement(nodeType);
div.append(node);
console.log(node);
return node;
}
}
};
return iodide;
},
JSMDCell = function createJSMDCell(type, line_list) {
this._type = type;
this._line_list = line_list;
},
split_line_regex = /[\r\n|\n|\r]/,
cell_type_regexp = /^\%\% (\w+)\b/,
language_type_regexp = /\{[\S\s]+\}/,
is_pyodide_loaded = false,
Module = {},
packages,
loadedPackages = new Array(),
// Regexp for validating package name and URI
package_name_regexp = '[a-z0-9_][a-z0-9_\-]*',
package_uri_regexp = new RegExp('^https?://.*?(' + package_name_regexp + ').js$', 'i');
JSMDCell = function createJSMDCell(type, line_list) {
this._type = type;
this._line_list = line_list;
},
split_line_regex = /[\r\n|\n|\r]/,
cell_type_regexp = /^\%\% (\w+)\b/,
language_type_regexp = /\{[\S\s]+\}/,
is_pyodide_loaded = false,
Module = {},
packages,
loadedPackages = [],
// Regexp for validating package name and URI
package_name_regexp = '[a-z0-9_][a-z0-9_\-]*',
package_uri_regexp = new RegExp('^https?://.*?(' + package_name_regexp + ').js$', 'i');
package_name_regexp = new RegExp('^' + package_name_regexp + '$', 'i');
window.iodide = new IODide();
IODide.prototype.addOutputHandler = function () {
return;
};
......@@ -109,79 +108,91 @@
// Generate a unique package name from URI
if (package_name_regexp.test(package_uri)) {
return package_uri;
} else if (package_uri_regexp.test(package_uri)) {
let match = package_uri_regexp.exec(package_uri);
}
if (package_uri_regexp.test(package_uri)) {
var match = package_uri_regexp.exec(package_uri);
// Get the regexp group corresponding to the package name
return match[1];
} else {
return null;
}
return null;
}
function pyodideLoadPackage(names) {
// DFS to find all dependencies of the requested packages
let packages = window.pyodide.packages.dependencies;
let queue = new Array(names);
let toLoad = new Array();
var queue, toLoad, package_uri, package_name, k,
subpackage, promise, packageList, script;
packages = window.pyodide.packages.dependencies;
queue = new Array(names);
toLoad = [];
while (queue.length) {
let package_uri = queue.pop();
package_uri = queue.pop();
package_name = _uri_to_package_name(package_uri);
const package_name = _uri_to_package_name(package_uri);
if (package_name === null) {
throw new Error("Invalid package name or URI " + package_uri);
}
if (package_name == null) {
throw new Error(`Invalid package name or URI '${package_uri}'`);
} else if (package_name == package_uri) {
if (package_name === package_uri) {
package_uri = 'default channel';
}
console.log(`Loading ${package_name} from ${package_uri}`);
console.log("Loading " + package_name + " from " + package_uri);
console.log("Loaded packages");
console.log(loadedPackages);
if (package_name in loadedPackages) {
if (package_uri != loadedPackages[package_name]) {
if (package_uri !== loadedPackages[package_name]) {
throw new Error(
`URI mismatch, attempting to load package ` +
`${package_name} from ${package_uri} while it is already ` +
`loaded from ${loadedPackages[package_name]}!`);
"URI mismatch, attempting to load package " +
package_name + " from " + package_uri + " while it is already " +
"loaded from " + loadedPackages[package_name] + " ! "
);
}
} else {
toLoad[package_name] = package_uri;
if (packages.hasOwnProperty(package_name)) {
packages[package_name].forEach((subpackage) => {
for (k in packages[package_name]) {
subpackage = packages[package_name][k];
if (!(subpackage in loadedPackages) && !(subpackage in toLoad)) {
queue.push(subpackage);
}
});
}
} else {
console.log(`Unknown package '${package_name}'`);
console.log("Unknown package " + package_name);
}
}
}
let promise = new Promise((resolve, reject) => {
promise = new RSVP.Promise(function (resolve, reject) {
if (Object.keys(toLoad).length === 0) {
resolve('No new packages to load');
}
pyodide.monitorRunDependencies = (n) => {
pyodide.monitorRunDependencies = function (n) {
if (n === 0) {
for (let package_name in toLoad) {
for (package_name in toLoad) {
loadedPackages[package_name] = toLoad[package_name];
}
delete pyodide.monitorRunDependencies;
const packageList = Array.from(Object.keys(toLoad)).join(', ');
resolve(`Loaded ${packageList}`);
packageList = Array.from(Object.keys(toLoad)).join(', ');
resolve("Loaded " + packageList);
}
};
for (let package_name in toLoad) {
let script = document.createElement('script');
let package_uri = toLoad[package_name];
if (package_uri == 'default channel') {
script.src = `${package_name}.js`;
function script_reject(e) {
reject(e);
}
for (package_name in toLoad) {
script = document.createElement('script');
package_uri = toLoad[package_name];
if (package_uri === 'default channel') {
script.src = package_name + ".js";
} else {
script.src = `${package_uri}`;
script.src = package_uri;
}
script.onerror = (e) => { reject(e); };
script.onerror = script_reject;
document.body.appendChild(script);
}
......@@ -425,8 +436,6 @@
function executePyCell(line_list) {
var result, code_text = line_list.join('\n');
result = pyodide.runPython(code_text);
console.log("Result is");
console.log(result);
renderCodeblock(result);
}
......@@ -451,25 +460,25 @@
Module.instantiateWasm = loadPyodide;
window.Module = Module;
})
.push(function () {
return loadJSResource('pyodide.asm.data.js');
})
.push(function () {
return loadJSResource('pyodide.asm.js');
})
.push(function () {
return pyodideSetting();
})
.push(function () {
return fetch(`packages.json`)
})
.push(function (response) {
return response.json();
})
.push(function (json) {
window.pyodide.packages = json;
return;
});
.push(function () {
return loadJSResource('pyodide.asm.data.js');
})
.push(function () {
return loadJSResource('pyodide.asm.js');
})
.push(function () {
return pyodideSetting();
})
.push(function () {
return fetch('packages.json');
})
.push(function (response) {
return response.json();
})
.push(function (json) {
window.pyodide.packages = json;
return;
});
return queue;
}
......@@ -506,9 +515,9 @@
queue.push(function () {
return initPyodide();
})
.push(function () {
return pyodideLoadPackage('matplotlib');
});
.push(function () {
return pyodideLoadPackage('matplotlib');
});
is_pyodide_loaded = true;
}
queue.push(function () {
......
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