| var Module = {}; |
| var verbose_mode = false; |
| var text_buffer = ""; |
| |
| Module["printErr"] = Module["print"] = function(text) { |
| if (verbose_mode) |
| console.log(text); |
| text_buffer += text + "\n"; |
| } |
| |
| importScripts('yosys.js'); |
| |
| onmessage = function(e) { |
| var request = e.data[0]; |
| var response = { "idx": request.idx, "args": [] }; |
| |
| if (request.mode == "run") { |
| response["errmsg"] = ""; |
| try { |
| text_buffer = ""; |
| Module.ccall('run', '', ['string'], [request.cmd]); |
| } catch (e) { |
| response.errmsg = Module.ccall('errmsg', 'string', [], []); |
| } |
| response.args.push(text_buffer); |
| response.args.push(response.errmsg); |
| text_buffer = ""; |
| } |
| |
| if (request.mode == "read_file") { |
| try { |
| response.args.push(FS.readFile(request.filename, {encoding: 'utf8'})); |
| } catch (e) { } |
| } |
| |
| if (request.mode == "write_file") { |
| try { |
| FS.writeFile(request.filename, request.text, {encoding: 'utf8'}); |
| } catch (e) { } |
| } |
| |
| if (request.mode == "read_dir") { |
| try { |
| response.args.push(FS.readdir(request.dirname)); |
| } catch (e) { } |
| } |
| |
| if (request.mode == "remove_file") { |
| try { |
| FS.unlink(request.filename); |
| } catch (e) { } |
| } |
| |
| if (request.mode == "verbose") { |
| if (request.value) |
| console.log(text_buffer); |
| verbose_mode = request.value; |
| } |
| |
| postMessage([response]); |
| } |
| |
| postMessage([{ "idx": 0, "args": [] }]); |