calcium-lang
Version:
Calcium language interpreter
25 lines • 775 B
JavaScript
import { retrieveValue } from "../util";
import { createList, createStr } from "../factory";
import { NotIterable } from "../error";
/**
* built-in `list()` function
* @param args accept an argument that is iterable
* @param env
* @returns a list object
*/
const list = (args, env) => {
const src = retrieveValue(args[0], env);
if (typeof src === "string") {
return createList(Array.from(src).map((v) => createStr(v)));
}
else if (Array.isArray(src)) {
return createList(Array.from(src));
}
else if (src && typeof src === "object") {
// src is a "dict" object.
return createList(Object.keys(src).map((v) => createStr(v)));
}
throw new NotIterable();
};
export default list;
//# sourceMappingURL=list.js.map