Giter VIP home page Giter VIP logo

Comments (6)

rkh avatar rkh commented on September 25, 2024

I'd love this feature, btw. It would require a more complex (thus potentially slower) data structure, since you'd actually have to generate a new Pattern object from the Expander.

I think building a separate PartialExpander along side Expander would allow people to opt into the added computational and/or memory cost (I think it would be very easy to sacrifice memory for performance).

from mustermann.

plexus avatar plexus commented on September 25, 2024

Care to pair on this? Friday maybe, or next week?

from mustermann.

rkh avatar rkh commented on September 25, 2024

I'd like to. I'm pretty busy right now until I get back from Israel November 8, unfortunately.

from mustermann.

plexus avatar plexus commented on September 25, 2024

ok, no rush. I'll ping you in a couple weeks then :)

from mustermann.

rkh avatar rkh commented on September 25, 2024

Which features do you expect?

Things that could be possible but will influence the API, internals and performance:

  1. Generating URI template strings.
  2. Generating objects that support further expanding.
  3. Generating full pattern objects (ie, that support matching).
  4. Generating string representations in the actual pattern type (ie, expand /:a/:b to /foo/:b).

Of these, 2 would probably be easiest to implement (since it's just a proxy) and can be combined with any of the other, 1 is likely what you want. 3 should be feasible, 4 might be too much work for a feature people will rarely if ever use.

The most complex pattern type to implement this for would be URI templates itself (at least if level 4 expansion is the goal), it would share quite some logic with the full expansion, which also has some broken edge cases right now (see #4 and #5).

I could also imagine a partial expander to use the same logic as the full expander, but this might come at high memory cost (though I'm not 100% sure that's true, since for patterns with a reasonable number of variables, keeping the AST around would probably use more memory - the expander currently only needs the AST when generating expansion rules).

from mustermann.

plexus avatar plexus commented on September 25, 2024

Links in Yaks have the option to only expand none, all, or some of the placeholders

link :self, '/api/posts/{id}'
link "/rel/comment", '/api/posts/{id}/comments/{comment_id}', expand: [:id]
link "/rel/search", '/api/search{?q}', expand: false

Which would render as (using HAL as an example)

"_links": {
  "self": {"href": "/api/posts/7"},
  "/rel/comment": {"href": "/api/posts/7/comments/{comment_id}", "template": true},
  "/rel/search": {"href": "/api/serach{?q}", "template": true},
}

So I guess that's 4?

from mustermann.

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.