12345678910111213141516171819202122232425262728293031323334353637 |
- var utils = require('../utils')
- , nodes = require('../nodes')
- , Compiler = require('../visitor/compiler');
- /**
- * Return a `Literal` with the given `fmt`, and
- * variable number of arguments.
- *
- * @param {String} fmt
- * @param {Node} ...
- * @return {Literal}
- * @api public
- */
- (module.exports = function s(fmt){
- fmt = utils.unwrap(fmt).nodes[0];
- utils.assertString(fmt);
- var self = this
- , str = fmt.string
- , args = arguments
- , i = 1;
- // format
- str = str.replace(/%(s|d)/g, function(_, specifier){
- var arg = args[i++] || nodes.null;
- switch (specifier) {
- case 's':
- return new Compiler(arg, self.options).compile();
- case 'd':
- arg = utils.unwrap(arg).first;
- if ('unit' != arg.nodeName) throw new Error('%d requires a unit');
- return arg.val;
- }
- });
- return new nodes.Literal(str);
- }).raw = true;
|