swahili-lang
Version:
A new programming language with semantics borrowed from the Swahili language to help teach programming concepts to Swahili speaking students.
48 lines (44 loc) • 1.22 kB
JavaScript
const SWString = require('../../../types/string');
const SWNumber = require('../../../types/number');
const SWBoolean = require('../../../types/boolean');
const RTResult = require('../../../runtimeResult');
const { RTError } = require('../../../error');
/**
* Casts a value to a SWNumber
* @param {SWBuiltInFunction} inst the instance of the built in function
* @param {Context} executionContext the calling context
*/
function Nambari(inst, executionContext) {
let res = new RTResult();
let kitu = executionContext.symbolTable.get('kitu');
if (!kitu)
return res.failure(
new RTError(
inst.posStart,
inst.posEnd,
`Parameter 'kitu' is required`,
executionContext
)
);
try {
if (
kitu instanceof SWString ||
kitu instanceof SWNumber ||
kitu instanceof SWBoolean
) {
return res.success(new SWNumber(Number(kitu.value)));
} else {
throw new Error('Illegal conversion');
}
} catch (err) {
return res.failure(
new RTError(
inst.posStart,
inst.posEnd,
`Illegal conversion`,
executionContext
)
);
}
}
module.exports = { method: Nambari, args: ['kitu'] };