String identity template tag
Isiah Meadows
isiahmeadows at gmail.com
Thu Dec 13 08:28:50 UTC 2018
To me, `String.tag` seems more descriptive of the syntactic location
(the template *tag*) than the semantics it carries.
-----
Isiah Meadows
contact at isiahmeadows.com
www.isiahmeadows.com
On Thu, Dec 13, 2018 at 2:53 AM Andrea Giammarchi
<andrea.giammarchi at gmail.com> wrote:
>
> I agree with Mark, and I wonder why `String.tag` is not the obvious choice here, since every interpolation is also coerced as String
>
> On Thu, Dec 13, 2018 at 9:34 AM Isiah Meadows <isiahmeadows at gmail.com> wrote:
>>
>> I mean equivalence to untagged behavior, if that helps.
>>
>> FWIW, as stated previously, I'm not married to the name.
>> On Wed, Dec 12, 2018 at 20:31 Mark Miller <erights at gmail.com> wrote:
>>>
>>>
>>> On Wed, Dec 12, 2018 at 5:24 PM Isiah Meadows <isiahmeadows at gmail.com> wrote:
>>>>
>>>> The template is being expanded as if the template itself is untagged.
>>>
>>>
>>> Does this mean that you describe what tagged templates do, or what untagged templates do, as "expanding" something? If so, what is the intuition behind that prior usage of "expand"?
>>>
>>>
>>>>
>>>> The point of this is a template tag that just does the default untagged behavior of coercing all expressions to strings and joining the whole thing together.
>>>
>>>
>>> I certainly agree that the name should suggest equivalence to the default untagged behavior. I just never would have thought to describe that behavior as "expanding" something. What is it expanded into?
>>>
>>>
>>>>
>>>> On Wed, Dec 12, 2018 at 20:21 Mark Miller <erights at gmail.com> wrote:
>>>>>
>>>>> What is the intuition behind "expand"? What is being expanded, and what is it expanding into?
>>>>>
>>>>>
>>>>>
>>>>> On Tue, Dec 11, 2018 at 10:59 PM Isiah Meadows <isiahmeadows at gmail.com> wrote:
>>>>>>
>>>>>> Those names a little too generic for my liking here. What about
>>>>>> `String.expand(template, ...params)`?
>>>>>>
>>>>>> And also, let's not try to bake a traditional template engine into the
>>>>>> JS spec - syntactic template strings already work well enough.
>>>>>>
>>>>>> -----
>>>>>>
>>>>>> Isiah Meadows
>>>>>> contact at isiahmeadows.com
>>>>>> www.isiahmeadows.com
>>>>>>
>>>>>> On Wed, Dec 12, 2018 at 1:13 AM Michael Luder-Rosefield
>>>>>> <rosyatrandom at gmail.com> wrote:
>>>>>> >
>>>>>> > Why not String.tag or .tagged?
>>>>>> >
>>>>>> > While we're at it, is there any good reason not to have something like this:
>>>>>> >
>>>>>> > ```
>>>>>> > String.template = (template : String, taggerFn=String.identity/tag/tagged : Function) => (keys : Array | Object) => taggerFn(template, (keys is Array) ? ...keys : keys)
>>>>>> > // apologies for pseudo-semi-functional code
>>>>>> > // having keys be an object allows template to be filled by key name rather than just index
>>>>>> > ```
>>>>>> > This would make templates closer to the traditional usage, where the template comes first and is later passed values to be filled in with. Having the taggerFn as an argument allows for things like Isiah's escape-then-apply tagging examples.
>>>>>> >
>>>>>> >
>>>>>> > On Wed, 12 Dec 2018 at 12:51 Isiah Meadows <isiahmeadows at gmail.com> wrote:
>>>>>> >>
>>>>>> >> I'm not married to `identity`, and I agree the name is probably not
>>>>>> >> ideal. I'm more concerned about functionality, though.
>>>>>> >>
>>>>>> >> -----
>>>>>> >>
>>>>>> >> Isiah Meadows
>>>>>> >> contact at isiahmeadows.com
>>>>>> >> www.isiahmeadows.com
>>>>>> >>
>>>>>> >> On Tue, Dec 11, 2018 at 5:41 AM T.J. Crowder
>>>>>> >> <tj.crowder at farsightsoftware.com> wrote:
>>>>>> >> >
>>>>>> >> > On Mon, Dec 10, 2018 at 7:08 PM Isiah Meadows
>>>>>> >> > <isiahmeadows at gmail.com> wrote:
>>>>>> >> > >
>>>>>> >> > > It'd be *way* easier to construct simple template tags if there was a
>>>>>> >> > > built-in identity tag
>>>>>> >> >
>>>>>> >> > Wholeheartedly agree, a couple of months ago I considered posting something very similar, both for utility reasons and in hopes that it would be an optimization target (being a standard operation).
>>>>>> >> >
>>>>>> >> > I find the name `identity` unilluminating, though, partially because it's not quite the same meaning as the usual "identity" function (`function identity(x) { return x; }`), though it's close. `assemble`?
>>>>>> >> >
>>>>>> >> > -- T.J. Crowder
>>>>>> >> _______________________________________________
>>>>>> >> es-discuss mailing list
>>>>>> >> es-discuss at mozilla.org
>>>>>> >> https://mail.mozilla.org/listinfo/es-discuss
>>>>>> _______________________________________________
>>>>>> es-discuss mailing list
>>>>>> es-discuss at mozilla.org
>>>>>> https://mail.mozilla.org/listinfo/es-discuss
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Cheers,
>>>>> --MarkM
>>>
>>>
>>>
>>> --
>>> Cheers,
>>> --MarkM
>>
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
More information about the es-discuss
mailing list