UNPKG

logolite

Version:

Lite Virtual Logger and Writer

43 lines (42 loc) 1.52 kB
'use strict'; const argPattern = /(\{|\$\{|\#\{)[\s]*([0-9]+|[a-zA-Z_][0-9a-zA-Z_\.]*[0-9a-zA-Z_])[\s]*(\})/g; const notFoundValue = process.env.LOGOLITE_FORMAT_NOT_FOUND_VALUE || 'not_found_value'; const stringifyFailed = process.env.LOGOLITE_STRINGIFY_FAILED_VALUE || 'stringify_failed'; function transform(a) { let b; if (arguments.length === 2 && typeof arguments[1] === "object") { b = arguments[1]; } else { b = Array.prototype.slice.call(arguments, 1); } if (!b || !b.hasOwnProperty) b = {}; return a.replace(argPattern, function h(c, d, f, g, e) { if (a[e - 1] === "{" && d === "{" && a[e + c.length] === "}") { return f; // transform {{variable}} to {variable} } else if (a[e - 1] === "$" && d === "${") { return "{" + f + "}"; // transform $${variable} to ${variable} } else if (a[e - 1] === "#" && d === "#{") { return "{" + f + "}"; // transform ##{variable} to #{variable} } else { let a = b.hasOwnProperty(f) ? b[f] : null; if (a === null || a === undefined) { let c = f.split('.'); if (c.length > 1) { a = c.reduce(function (a, b) { return a && a.hasOwnProperty(b) ? a[b] : null; }, b); } } if (a === null || a === undefined) return notFoundValue; if (typeof a === "object") return stringify(a); return a; } }); } function stringify(a) { try { return JSON.stringify(a); } catch (a) {} return stringifyFailed; } module.exports = transform;