When mscript compilation fails, throw error in console.

This commit is contained in:
Matt McWilliams 2024-10-14 12:12:39 -04:00
parent b51b7e8481
commit 0eaefb2b48
11 changed files with 35 additions and 17 deletions

View File

@ -1,5 +1,5 @@
{
"version": "1.8.137",
"version": "1.8.138",
"ext_port": 1111,
"profiles": {
"mcopy": {

View File

@ -140,7 +140,14 @@ PF 1`;
compile() {
const data = this.editor.getValue();
const mscript = new mscript_1.default();
const output = mscript.interpret(data);
let output = null;
try {
output = mscript.interpret(data);
}
catch (err) {
mse.console.print(err.toString());
return;
}
const len = output.arr.length;
const cam2 = typeof output.cam2 !== 'undefined' ? `, CAM2 : ${output.cam2}` : '';
const proj2 = typeof output.proj2 !== 'undefined' ? `, PROJ2 : ${output.proj2}` : '';

File diff suppressed because one or more lines are too long

2
app/package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "mcopy-app",
"version": "1.8.137",
"version": "1.8.138",
"lockfileVersion": 2,
"requires": true,
"packages": {

View File

@ -1,6 +1,6 @@
{
"name": "mcopy-app",
"version": "1.8.137",
"version": "1.8.138",
"description": "GUI for the mcopy small gauge film optical printer platform",
"main": "main.js",
"scripts": {

View File

@ -162,7 +162,14 @@ PF 1`;
compile () {
const data : string = this.editor.getValue();
const mscript : Mscript = new Mscript();
const output : any = mscript.interpret(data);
let output : any = null;
try {
output = mscript.interpret(data);
this.raw = '';
} catch (err) {
mse.console.print(err.toString());
return;
}
const len : number = output.arr.length;
const cam2 : string = typeof output.cam2 !== 'undefined' ? `, CAM2 : ${output.cam2}` : '';
const proj2 : string = typeof output.proj2 !== 'undefined' ? `, PROJ2 : ${output.proj2}` : '';

View File

@ -126,12 +126,16 @@ LOOP 10
PF
END`;
it('Should SET state within LOOP', () => {
const obj = mscript.interpret(script2)
assert.ok(typeof obj === 'object', 'Mscript produced an object response');
assert.ok(obj.success, 'Mscript labeled output success');
assert.equal(obj.cam, 10, 'Camera state ends at 10');
assert.equal(obj.proj, 11, 'Projector state should be 11');
it('Should fail when SET state within LOOP', () => {
let errorCaught = false;
try {
const obj = mscript.interpret(script2);
} catch (err) {
//fail silently
errorCaught = true;
}
assert.ok(typeof obj === 'undefined', 'Mscript fails to produce an output object');
assert.ok(errorCaught, 'Error should be thrown by script');
});
});

View File

@ -1,5 +1,5 @@
{
"version": "1.8.137",
"version": "1.8.138",
"ext_port": 1111,
"profiles": {
"mcopy": {

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{
"name": "mcopy",
"version": "1.8.137",
"version": "1.8.138",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "mcopy",
"version": "1.8.137",
"version": "1.8.138",
"license": "MIT",
"dependencies": {
"alert": "file:app/lib/alert",

View File

@ -1,6 +1,6 @@
{
"name": "mcopy",
"version": "1.8.137",
"version": "1.8.138",
"description": "Small gauge film optical printer platform",
"main": "build.js",
"directories": {

View File

@ -1,5 +1,5 @@
{
"version": "1.8.137",
"version": "1.8.138",
"ext_port": 1111,
"profiles": {
"mcopy": {