UNPKG

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
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'}`;