Comments (6)
It isn't entirely clear to me what the semantics of what you propose would be. Is there some reason you can't simply bind this function and use it in your expressions directly?
from jsonata.
In my understanding a mixin is supposed to replace the standard code without altering the code itself. The purpose is to have custom extensions to standard code without having to worry every time the standard code gets upgraded.
If I changed something inside jsonata, then I would have to modify every time I upgrade. This concept is supposed to avoid that propblem. So a simple function can't do it since I want to change standard code.
Hope this is clear.
Martin
Example use in jsonata:
function evaluateName(expr, input, environment) {
// lookup the 'name' item in the input
var result;
var mixins = environment.lookup('mixins');
if(mixins && mixins.evaluateName) return mixins.evaluateName(expr, input, environment);
If mixin exist, it is called instead of the default implementation.
usage:
expression.evaluate(input,{},(rej,res)=>{
if(rej) reject(rej);
resolve(res);
},mixins);
from jsonata.
I think I understand what you mean here. I had some similar use cases which is what brought me here. I think the best approach here would be to actually implement some kind of API for developers to override the various tree walking functions. I've initiated a discussion with @mattbaileyuk and @andrew-coleman about this to get their feedback. If they are not opposed to the idea, I could write a prototype of what I have in mind.
from jsonata.
Great! Wonderful idea! A central approach would be fantastic.
I also have a minimal approach that works for my limited needs. In fact, that is the one you see above. Might be useful as an inspiration.
Many thanks for your effort!
from jsonata.
@Allam76 Glad you like the idea. No need to thank me for my effort since I haven't actually made any effort yet. That's going to depend on the feedback I get from @mattbaileyuk and @andrew-coleman. 😃
from jsonata.
Closing this issue. Sounds like @xogeny's implementation might address this which will hopefully be the basis for the next major version of JSONata.
from jsonata.
Related Issues (20)
- How to return the value from jsonata instead of promise/async HOT 3
- Dry run, return expected schema for a given input schema
- How to handle undefined value HOT 2
- $formatDateTime(millis, picture [, timezone]) and $parseDateTime(timestamp, picture) HOT 1
- Clarification : Is there Any Feature for Apply Break or Continue in Looping HOT 1
- parallel map
- switch case or if else
- Truthiness of numbers is completely random
- Help resolve current pinning to 1.8.6 for JSONata-Wrapper (possibly ducktape compatibility)
- Reserved Tokens Documentation
- ($.some_non_existent_key != 'anything') evaluates to false HOT 3
- $string(number) capped at precision-15
- Error handling and asynchronous behavior in evaluate function
- Rounding number without "Round half to even"
- There isn't a uuid() function for JSONata HOT 2
- Hard spaces in documentation not rendered correctly
- Security contact for JSONata HOT 4
- default query on try.jsonata.org HOT 1
- is 2.0.4 a fake release? HOT 4
- Multi-level JSON processing: Unwrapping Objects
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 jsonata.