Compare commits

..

No commits in common. "0eaefb2b48f9530e2b830f8e5e7222dd63c7e906" and "c365eff6a7ecad1f0ba9783e36122aca5d168446" have entirely different histories.

14 changed files with 40 additions and 51 deletions

View File

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

View File

@ -510,8 +510,8 @@ class Mscript {
* @param line {string} String containing set statement * @param line {string} String containing set statement
*/ */
set_state(line) { set_state(line) {
//console.log(`set_state called: ${line}`);
const update = {}; const update = {};
let dist = 0;
if (line.startsWith('SET CAM2')) { if (line.startsWith('SET CAM2')) {
update.cam2 = parseInt(line.split('SET CAM2')[1]); update.cam2 = parseInt(line.split('SET CAM2')[1]);
} }
@ -530,13 +530,18 @@ class Mscript {
else if (line.startsWith('SET PROJ')) { else if (line.startsWith('SET PROJ')) {
update.proj = parseInt(line.split('SET PROJ')[1]); update.proj = parseInt(line.split('SET PROJ')[1]);
} }
//console.log(JSON.stringify(update));
if (this.rec > -1) { if (this.rec > -1) {
this.fail(`Line "${line}" is invalid inside of a loop`); for (let key of Object.keys(update)) {
return; this.loops[this.rec][key] = update[key];
}
} }
for (let key of Object.keys(update)) { else {
this[key] = update[key]; for (let key of Object.keys(update)) {
this[key] = update[key];
}
} }
console.dir(JSON.stringify(this));
} }
/** /**
* Return the last loop * Return the last loop
@ -664,8 +669,7 @@ class Mscript {
*/ */
update(cmd, val = 1) { update(cmd, val = 1) {
if (cmd === 'END') { if (cmd === 'END') {
//squashes down loops into the previous one until //I don't understand this loop
//the base is reached. val is never not 1, though.
for (let i = 0; i < val; i++) { for (let i = 0; i < val; i++) {
if (this.rec === 0) { if (this.rec === 0) {
this.cam += this.loops[this.rec].cam; this.cam += this.loops[this.rec].cam;

File diff suppressed because one or more lines are too long

View File

@ -140,14 +140,7 @@ PF 1`;
compile() { compile() {
const data = this.editor.getValue(); const data = this.editor.getValue();
const mscript = new mscript_1.default(); const mscript = new mscript_1.default();
let output = null; const output = mscript.interpret(data);
try {
output = mscript.interpret(data);
}
catch (err) {
mse.console.print(err.toString());
return;
}
const len = output.arr.length; const len = output.arr.length;
const cam2 = typeof output.cam2 !== 'undefined' ? `, CAM2 : ${output.cam2}` : ''; const cam2 = typeof output.cam2 !== 'undefined' ? `, CAM2 : ${output.cam2}` : '';
const proj2 = typeof output.proj2 !== 'undefined' ? `, PROJ2 : ${output.proj2}` : ''; 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", "name": "mcopy-app",
"version": "1.8.138", "version": "1.8.136",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {

View File

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

View File

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

View File

@ -126,16 +126,12 @@ LOOP 10
PF PF
END`; END`;
it('Should fail when SET state within LOOP', () => { it('Should SET state within LOOP', () => {
let errorCaught = false; const obj = mscript.interpret(script2)
try { assert.ok(typeof obj === 'object', 'Mscript produced an object response');
const obj = mscript.interpret(script2); assert.ok(obj.success, 'Mscript labeled output success');
} catch (err) { assert.equal(obj.cam, 10, 'Camera state ends at 10');
//fail silently assert.equal(obj.proj, 11, 'Projector state should be 11');
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.138", "version": "1.8.136",
"ext_port": 1111, "ext_port": 1111,
"profiles": { "profiles": {
"mcopy": { "mcopy": {

4
package-lock.json generated
View File

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

View File

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

View File

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

View File

@ -577,8 +577,8 @@ export default class Mscript {
* @param line {string} String containing set statement * @param line {string} String containing set statement
*/ */
private set_state (line : string) { private set_state (line : string) {
//console.log(`set_state called: ${line}`);
const update : MscriptUpdatedState = {}; const update : MscriptUpdatedState = {};
let dist : number = 0;
if (line.startsWith('SET CAM2')) { if (line.startsWith('SET CAM2')) {
update.cam2 = parseInt(line.split('SET CAM2')[1]); update.cam2 = parseInt(line.split('SET CAM2')[1]);
} else if (line.startsWith('SET CAMERA2')) { } else if (line.startsWith('SET CAMERA2')) {
@ -592,13 +592,17 @@ export default class Mscript {
} else if (line.startsWith('SET PROJ')) { } else if (line.startsWith('SET PROJ')) {
update.proj = parseInt(line.split('SET PROJ')[1]); update.proj = parseInt(line.split('SET PROJ')[1]);
} }
//console.log(JSON.stringify(update));
if (this.rec > -1) { if (this.rec > -1) {
this.fail(`Line "${line}" is invalid inside of a loop`); for (let key of Object.keys(update)) {
return; (this.loops[this.rec] as any)[key] = (update as any)[key];
} }
for (let key of Object.keys(update)) { } else {
(this as any)[key] = (update as any)[key]; for (let key of Object.keys(update)) {
(this as any)[key] = (update as any)[key];
}
} }
console.dir(JSON.stringify(this));
} }
/** /**
* Return the last loop * Return the last loop
@ -726,8 +730,7 @@ export default class Mscript {
*/ */
private update (cmd : string, val : number = 1) { private update (cmd : string, val : number = 1) {
if (cmd === 'END') { if (cmd === 'END') {
//squashes down loops into the previous one until //I don't understand this loop
//the base is reached. val is never not 1, though.
for (let i = 0; i < val; i++) { for (let i = 0; i < val; i++) {
if (this.rec === 0) { if (this.rec === 0) {
this.cam += this.loops[this.rec].cam; this.cam += this.loops[this.rec].cam;