conditional-tag
Version:
Clean, easily readable conditional statements in template literals/strings for Node.js and browsers. Provides `if` / `elseif` / `else` and `switch` / `case` / `default` syntax options.
74 lines (51 loc) • 1.57 kB
JavaScript
import { _ } from './index.js';
import { inspect } from 'node:util';
import isArrowFunc from '#lib/is-arrow-func.js';
class Juhui {
str = 'foo:';
a(str) {
console.log('called');
return this.str + str;
}
}
const j = new Juhui();
function test(str = '') {
console.log('called');
return 'gustav ' + str;
}
function asyncTest(str = '') {
console.log('async called');
return Promise.resolve('donald ' + str);
}
// console.log(_`das ist ${_if(false)}true${_else}false <${_ => j.a('bar')}>${_endif}.`);
// const html = await _`${_.switch(1)}<ul>
// ${_.case(1)}
// <li>First</li>
// ${_.case(2)}
// <li>Second</li>
// ${_.default}
// <li>Third ${() => test('gans')}</li>
// ${_.endswitch}
// <li>Last</li>
// </ul>`;
// console.log(html);
// console.log(await _.a`Das ist ${_if(true)}true ${() => asyncTest('gans')}${_else}false.`);
// console.log(await _.async`Das ist ${_.if(true)}true ${ () => test() }${_.else}false.`);
console.log(_`${_.if(false)} not rendered ${test()}`)
// console.log(isArrowFunc(j.a));
// console.log(isArrowFunc(test));
// console.log(isArrowFunc(asyncTest));
// console.log(isArrowFunc(Math.min));
// console.log(isArrowFunc(Juhui));
// console.log(isArrowFunc(j));
// console.log(isArrowFunc(function() { return null; }));
// console.log(isArrowFunc(() => null));
// async function f(strings, ...expr) {
// return strings.join('+');
// }
// console.log(await f`das ist ein test.`);
// function t(strings, ...exprs) {
// console.log(strings.length);
// console.log(exprs.length);
// }
// t`${'juhui'}`;