I don't know what you mean by tags. I guess this is outside my experience
area. I'd love to know the use case. Hope I'm not bothering you or anyone
else reading this thread

On Fri, 16 Aug 2019, 21:00 Jordan Harband, <[email protected]> wrote:

> Can you elaborate a bit more on how this is a *common* case in the wider
> ecosystem?
>
> On Fri, Aug 16, 2019 at 5:29 AM Andrea Giammarchi <
> [email protected]> wrote:
>
>> early reply .... "which otehr cases"? this is just an example:
>>
>> [2019, 08, 16, 14, 28, 30].map(i => i < 10 ? ('0' + i) :
>> i).joinWith('--T::.');
>>
>> On Fri, Aug 16, 2019 at 2:24 PM Andrea Giammarchi <
>> [email protected]> wrote:
>>
>>> `this ${Symbol('throws')} an error`, so anything that cannot be
>>> represented as string should throw too, as it is for `[1, 2,
>>> 3].join(Symbol())`.
>>>
>>> In few words, everything described as parameter for the
>>> `Array.prototype.join(param)` should be described as the iterable value,
>>> nothng new to add, nothing different to expect.
>>>
>>> The template literal as is returns a string, but if you use tags, as
>>> functions, you deal with an array and a collection or extra values (0 to
>>> template.length - 1).
>>>
>>> The current way to flatten a template via tag, used already in various
>>> projects for a reason or another, is the following one:
>>>
>>> ```js
>>> function tag2str(template) {
>>>   let str = template[0];
>>>   for (let i = 1, t = template.length; i < t; i++)
>>>     str += arguments[i] + template[i];
>>>   return str;
>>> }
>>> ```
>>>
>>> I am proposing to simplify this common case with something that could be
>>> used for other cases too.
>>>
>>>
>>>
>>>
>>>
>>> On Fri, Aug 16, 2019 at 1:17 PM Naveen Chawla <[email protected]>
>>> wrote:
>>>
>>>> Cool.
>>>>
>>>> I get it now apart from the "templated string" example. I'm not very
>>>> knowledgable about templated strings but on the face it looks like
>>>> 'a${x}b${y}' already inserts x and y into the string, so I'm not sure what
>>>> else is happening with your proposed method? Clearly I've missed something.
>>>>
>>>> Apart from that, how would you handle arrays that whose values are not
>>>> all strings?
>>>>
>>>> For naming is still think "weave" would be OK from what I know so far
>>>>
>>>> On Fri, 16 Aug 2019 at 11:08, Andrea Giammarchi <
>>>> [email protected]> wrote:
>>>>
>>>>> given an array, it joins it through the values of the iterable
>>>>> argument, without ever resulting to undefined
>>>>>
>>>>> ['a', 'b', 'c'].joinWith(['-']) would produce "a-b-c"
>>>>>
>>>>> ['a', 'b', 'c'].joinWith([1, 2]) would produce "a1b2c"
>>>>>
>>>>> ['a', 'b', 'c'].joinWith('012') would produce "a0b1c"
>>>>> note the string, as iterable, is acceptable too
>>>>>
>>>>> const tag = (template, ...values) => template.joinWith(values);
>>>>> tag`a${Math.random()}b${Math.random()}`; would fill the gap between a
>>>>> and b, or b and c, with the value returned by the two Math.random()
>>>>>
>>>>> ['a', 'b', 'c', 'd'].joinWith('01'); would produce "a0b1c0d" so that
>>>>> there's never an `undefined
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Fri, Aug 16, 2019 at 12:01 PM Naveen Chawla <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> I'm just not seeing what it's supposed to do. If you could give a
>>>>>> brief explanation of the array method, and the string method then of 
>>>>>> course
>>>>>> I would get it. I know it would seem obvious to you from the examples
>>>>>> alone, it's just not to me.
>>>>>>
>>>>>> On Fri, 16 Aug 2019 at 08:32, Andrea Giammarchi <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Just to re-state: zip from lowdash, does **not** do what my proposed
>>>>>>> method does ... anything that won't produce the following result is not
>>>>>>> what I'm proposing
>>>>>>>
>>>>>>> console.log(['a', 'b', 'c', 'd'].joinWith([1, 2]));
>>>>>>> // a1b2c1d
>>>>>>>
>>>>>>> function tag2str(template, ...values) {
>>>>>>>   return template.joinWith(values);
>>>>>>> }
>>>>>>>
>>>>>>> tag2str`a${1}b${2}c`;
>>>>>>> // "a1b2c"
>>>>>>>
>>>>>>> On Fri, Aug 16, 2019 at 5:57 AM Isiah Meadows <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> For that, I'd rather see an `interleave` that just rotates through
>>>>>>>> all
>>>>>>>> its arguments. It'd be basically sugar for `.zip().flat()`, but an
>>>>>>>> implementation could optimize the heck out of it. (In particular,
>>>>>>>> they
>>>>>>>> could iterate through them one-by-one and only allocate once, not in
>>>>>>>> the hot loop, so it'd be fast.)
>>>>>>>>
>>>>>>>> I at one point had it in my list of wishlist proposals, but it
>>>>>>>> somehow
>>>>>>>> disappeared. I've since recreated it:
>>>>>>>>
>>>>>>>> https://github.com/isiahmeadows/es-stdlib-proposals/blob/master/proposals/array/interleave.md
>>>>>>>>
>>>>>>>> -----
>>>>>>>>
>>>>>>>> Isiah Meadows
>>>>>>>> [email protected]
>>>>>>>> www.isiahmeadows.com
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Aug 15, 2019 at 1:12 PM Andrea Giammarchi
>>>>>>>> <[email protected]> wrote:
>>>>>>>> >
>>>>>>>> > That;s not useful for template literals tags though
>>>>>>>> >
>>>>>>>> > _.zip(['a', 'b', 'c'], [1, 2]);
>>>>>>>> > [["a", 1], ["b", 2], ["c", undefined]]
>>>>>>>> >
>>>>>>>> > it basically does nothing I've proposed ... any other name
>>>>>>>> suggestion?
>>>>>>>> >
>>>>>>>> > On Thu, Aug 15, 2019 at 3:40 PM Michał Wadas <
>>>>>>>> [email protected]> wrote:
>>>>>>>> >>
>>>>>>>> >> https://lodash.com/docs/#zip
>>>>>>>> >> https://docs.python.org/3/library/functions.html#zip
>>>>>>>> >>
>>>>>>>> >> On Thu, 15 Aug 2019, 15:34 Andrea Giammarchi, <
>>>>>>>> [email protected]> wrote:
>>>>>>>> >>>
>>>>>>>> >>> the suggested name is just ... suggested, I don't have strong
>>>>>>>> opinion on it, it just `join` values through other values
>>>>>>>> >>> what's `Array.zip` ? I've no idea
>>>>>>>> >>>
>>>>>>>> >>>
>>>>>>>> >>> On Thu, Aug 15, 2019 at 12:53 PM Michał Wadas <
>>>>>>>> [email protected]> wrote:
>>>>>>>> >>>>
>>>>>>>> >>>> I would rather see Array.zip, it covers this use case.
>>>>>>>> >>>>
>>>>>>>> >>>> On Thu, 15 Aug 2019, 10:50 Andrea Giammarchi, <
>>>>>>>> [email protected]> wrote:
>>>>>>>> >>>>>
>>>>>>>> >>>>>
>>>>>>>> >>>>> I wonder if there's any interest in adding another handy
>>>>>>>> Array method as joinWith could be:
>>>>>>>> >>>>>
>>>>>>>> >>>>> ```js
>>>>>>>> >>>>> // proposal example
>>>>>>>> >>>>> Array.prototype.joinWith = function (values) {
>>>>>>>> >>>>>   const {length} = this;
>>>>>>>> >>>>>   if (length < 2)
>>>>>>>> >>>>>     return this.join('');
>>>>>>>> >>>>>   const out = [this[0]];
>>>>>>>> >>>>>   const len = values.length;
>>>>>>>> >>>>>   for (let i = 1; i < length; i++) {
>>>>>>>> >>>>>     console.log(i, len);
>>>>>>>> >>>>>     out.push(values[(i - 1) % len], this[i]);
>>>>>>>> >>>>>   }
>>>>>>>> >>>>>   return out.join('');
>>>>>>>> >>>>> };
>>>>>>>> >>>>> ```
>>>>>>>> >>>>>
>>>>>>>> >>>>> The goal is to simplify joining array entries through not the
>>>>>>>> same value, example:
>>>>>>>> >>>>>
>>>>>>>> >>>>> ```js
>>>>>>>> >>>>> console.log(['a', 'b', 'c', 'd'].joinWith([1, 2]));
>>>>>>>> >>>>> // a1b2c1d
>>>>>>>> >>>>>
>>>>>>>> >>>>> function tag2str(template, ...values) {
>>>>>>>> >>>>>   return template.joinWith(values);
>>>>>>>> >>>>> }
>>>>>>>> >>>>>
>>>>>>>> >>>>> tag2str`a${1}b${2}c`;
>>>>>>>> >>>>> // "a1b2c"
>>>>>>>> >>>>> ```
>>>>>>>> >>>>>
>>>>>>>> >>>>> Throughts?
>>>>>>>> >>>>> _______________________________________________
>>>>>>>> >>>>> es-discuss mailing list
>>>>>>>> >>>>> [email protected]
>>>>>>>> >>>>> https://mail.mozilla.org/listinfo/es-discuss
>>>>>>>> >
>>>>>>>> > _______________________________________________
>>>>>>>> > es-discuss mailing list
>>>>>>>> > [email protected]
>>>>>>>> > https://mail.mozilla.org/listinfo/es-discuss
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> es-discuss mailing list
>>>>>>> [email protected]
>>>>>>> https://mail.mozilla.org/listinfo/es-discuss
>>>>>>>
>>>>>> _______________________________________________
>> es-discuss mailing list
>> [email protected]
>> https://mail.mozilla.org/listinfo/es-discuss
>>
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to