Git Product home page Git Product logo

Comments (6)

xogeny avatar xogeny commented on July 16, 2024

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.

Allam76 avatar Allam76 commented on July 16, 2024

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.

xogeny avatar xogeny commented on July 16, 2024

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.

Allam76 avatar Allam76 commented on July 16, 2024

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.

xogeny avatar xogeny commented on July 16, 2024

@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.

andrew-coleman avatar andrew-coleman commented on July 16, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.