tcl-js
Version:
tcl-js is a tcl intepreter written completely in Typescript. It is meant to replicate the tcl-sh interpreter as closely as possible.
54 lines • 2.15 kB
JavaScript
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "../types", "./basic", "../tclerror"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var types_1 = require("../types");
var basic_1 = require("./basic");
var tclerror_1 = require("../tclerror");
function Load(scope) {
scope.defineProc('incr', function (interpreter, orgs, command, helpers) {
var args = orgs;
var varName = args[0].getValue();
var increment = 1;
if (args[1]) {
if (!args[1].isNumber())
throw new tclerror_1.TclError("expected integer but got \"" + args[1].getValue() + "\"");
else
increment = args[1].getNumber();
}
var out;
var solved = basic_1.solveVar(varName, helpers);
var fetched = interpreter.getScope().resolve(solved.name);
if (!fetched) {
out = new types_1.TclSimple(increment, solved.name);
}
else {
if (!(fetched instanceof types_1.TclSimple))
return helpers.sendHelp('wtype');
if (!fetched.isNumber())
throw new tclerror_1.TclError("expected integer but got \"" + fetched.getValue() + "\"");
out = new types_1.TclSimple(fetched.getNumber() + increment, fetched.getName());
}
interpreter.setVariable(solved.name, solved.key, out);
return out;
}, {
arguments: {
pattern: 'incr variable ?increment?',
amount: {
start: 1,
end: 2,
},
simpleOnly: true,
},
});
}
exports.Load = Load;
});
//# sourceMappingURL=operations.js.map