ember-computed-template-string icon indicating copy to clipboard operation
ember-computed-template-string copied to clipboard

Consider using RegExp and CPM instead of a Babel transform

Open SaladFork opened this issue 9 years ago • 1 comments

I recently watched (and enjoyed!) @serenaf's talk about this addon at EmberCamp London 2016.

I had an idea for how this might be doable without having to resort to a Babel transform (which I had a few concerns about) while still maintaining the same interface. I gave it a shot and was able to get this to work using a computed property macro and a RegExp.

The idea behind my approach relies on three observations:

The approach is then to create a computed property macro which:

  • Constructs and uses a regular expression to get all properties/paths in the passed template string, then
  • Uses those properties (after a uniq to avoid duplication) as the dependent keys of the generated computed property, and finally
  • Uses String.prototype.replace to replace instances of ${property} with the get() lookup of those properties.

You can see my solution in a twiddle (source). For the tests I copied the tests in this project's tests/unit/custom-replace-call-paths-test.js, and they seem to all pass.

SaladFork avatar Sep 20 '16 21:09 SaladFork

Due to #17, I'm unable to use ember-computed-template-string, so I used @SaladFork's solution as a local module. It works fine. :+1:

lolmaus avatar Feb 02 '17 10:02 lolmaus