zspecza / common-tags

🔖 Useful template literal tags for dealing with strings in ES2015+
Other
2k stars 61 forks source link

`commaListsAnd` returns undefined values when using function format #217

Open pdehaan opened 2 years ago

pdehaan commented 2 years ago

Not sure if I'm using this correctly, but commaListsAnd returns undefined values when using function format.

const tags = require("common-tags");

const bar = ["one", "two", "three"];
console.log("1.", tags.commaListsAnd`${bar}`); // 1. one, two and three
console.log("2.", tags.commaListsAnd(bar)); // 2. oneundefinedtwoundefinedthree

I saw https://github.com/zspecza/common-tags#using-tags-on-regular-string-literals and wasn't sure if that worked w/ all tags, or just certain ones. I also tried w/ safeHtml() and got unexpected results, so I'm sure this might just be user error:

const someUnsafeString = `
<a href="script:alert('ok, computer')">
  Some link
    </a>
`;

console.log("3.", tags.safeHtml`${someUnsafeString}`);
console.log("4.", tags.safeHtml(someUnsafeString));

OUTPUT

3. &lt;a href=&quot;script:alert(&#x27;ok, computer&#x27;)&quot;&gt;   Some link     &lt;/a&gt;
4. <a href="script:alert('ok, computer')">
  Some link
    </a>