Comments (2)
Good questions.
First, in order to convert native JavaScript objects into interpreter objects, we're going to need access to the interpreter. One way to do this is to move the API function definitions inside the init
function, so they have access to the interpreter
variable.
const init = function (interpreter, globalObject) {
const funcs = {
sq: (x) => x * x,
sq2: (args) => {
console.log(`sq2`, { args: args });
return args.x * args.x;
},
times: (a1, a2) => {
console.log(`times`, { a1, a2 });
return a1 * a2;
}
};
const scope = interpreter.nativeToPseudo({});
interpreter.setProperty(globalObject, 'scope', scope);
for (const key in funcs) {
if (typeof funcs[key] === 'function') {
interpreter.setProperty(
scope,
key,
interpreter.createNativeFunction((args) => funcs[key](args))
);
}
}
interpreter.setProperty(
globalObject,
'setOutput',
interpreter.createNativeFunction(outputWrapper)
);
};
With that done, now we can convert the JS-Interpreter object args
into a native JavaScript object:
sq2: (args) => {
args = interpreter.pseudoToNative(args);
console.log(`sq2`, { args: args });
return args.x * args.x;
},
And finally, we need to simplify your loop for defining these functions, so that it doesn't force a definition with a single argument:
interpreter.createNativeFunction(funcs[key])
Hope this helps!
from js-interpreter.
Thanks a lot for the quick response. I will try it out
from js-interpreter.
Related Issues (20)
- Add: Support for cloudflare workers HOT 4
- import momentjs library HOT 3
- This repo is being mocked in r/ProgrammerHumor. HOT 1
- detect when the interpreter is waiting for an async function callback HOT 4
- JS-Interpreter errors and script errors distinction HOT 4
- Replace string with regexp return undefined HOT 2
- [QUESTION] How to throw exception from createAsyncFunction ? HOT 1
- Include in REACT typescript ? HOT 4
- How to get the function in the return value HOT 2
- Viability as an Expression/Predicate Interpreter? HOT 1
- A named function, existing as a variable in its own local scope, shadows the global declaration HOT 3
- Can we use destructuring? HOT 2
- Try catch syntax does not work correctly when using native syntax HOT 2
- Bug report about error message HOT 9
- Do you plan to support function replacer in JSON.stringify? HOT 3
- Make js-interpreter ready for node and NPM HOT 3
- IPC between sandbox and parent process (Node.js) HOT 2
- Tasks created through createTask_ (such as when using setTimeout) are incorrectly interpreted as throwing their return values. HOT 2
- Notion of preload HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from js-interpreter.