diff options
author | Minteck <contact@minteck.org> | 2022-06-04 08:51:01 +0200 |
---|---|---|
committer | Minteck <contact@minteck.org> | 2022-06-04 08:51:01 +0200 |
commit | 383285ecd5292bf9a825e05904955b937de84cc9 (patch) | |
tree | 0a53b6f02c1604b078044567c03dc1b6c944c8c2 /node_modules/string-template | |
download | equestriadb-383285ecd5292bf9a825e05904955b937de84cc9.tar.gz equestriadb-383285ecd5292bf9a825e05904955b937de84cc9.tar.bz2 equestriadb-383285ecd5292bf9a825e05904955b937de84cc9.zip |
Initial commit
Diffstat (limited to 'node_modules/string-template')
-rw-r--r-- | node_modules/string-template/.npmignore | 4 | ||||
-rw-r--r-- | node_modules/string-template/.travis.yml | 7 | ||||
-rw-r--r-- | node_modules/string-template/LICENCE | 19 | ||||
-rw-r--r-- | node_modules/string-template/Readme.md | 103 | ||||
-rw-r--r-- | node_modules/string-template/compile.js | 143 | ||||
-rw-r--r-- | node_modules/string-template/index.js | 34 | ||||
-rw-r--r-- | node_modules/string-template/package.json | 57 |
7 files changed, 367 insertions, 0 deletions
diff --git a/node_modules/string-template/.npmignore b/node_modules/string-template/.npmignore new file mode 100644 index 0000000..f1250e5 --- /dev/null +++ b/node_modules/string-template/.npmignore @@ -0,0 +1,4 @@ +support +test +examples +*.sock diff --git a/node_modules/string-template/.travis.yml b/node_modules/string-template/.travis.yml new file mode 100644 index 0000000..57c94b2 --- /dev/null +++ b/node_modules/string-template/.travis.yml @@ -0,0 +1,7 @@ +language: node_js +node_js: + - "0.10" +before_script: + - npm install + - npm install istanbul coveralls +script: npm run travis-test diff --git a/node_modules/string-template/LICENCE b/node_modules/string-template/LICENCE new file mode 100644 index 0000000..a5609a1 --- /dev/null +++ b/node_modules/string-template/LICENCE @@ -0,0 +1,19 @@ +Copyright (c) 2013 Matt Esch. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/string-template/Readme.md b/node_modules/string-template/Readme.md new file mode 100644 index 0000000..9b976e9 --- /dev/null +++ b/node_modules/string-template/Readme.md @@ -0,0 +1,103 @@ +# string-template + +[![build status][1]][2] [![dependency status][3]][4] [![coverage report][9]][10] [![stability index][15]][16] + +[![npm stats][13]][14] + +[![browser support][5]][6] + + A simple string template function based on named or indexed arguments + +## Example + +```js +var format = require("string-template") +var greeting + +// Format using an object hash with keys matching [0-9a-zA-Z]+ + +greeting = format("Hello {name}, you have {count} unread messages", { + name: "Robert", + count: 12 +}) +// greeting -> "Hello Robert, you have 12 unread messages" + + +// Format using a number indexed array + +greeting = format("Hello {0}, you have {1} unread messages", ["Robert", 12]) +// greeting -> "Hello Robert, you have 12 unread messages" + + +// Format using optional arguments + +greeting = format("Hello {0}, you have {1} unread messages", + "Robert", + 12) +// greeting -> "Hello Robert, you have 12 unread messages" + + +// Escape {} pairs by using double {{}} + +var text = format("{{0}}") +// text -> "{0}" + +``` + +## Compiling templates + +`string-template` exposes two template compiling options for when you need the +additional performance. Arguments passed to the compiled template are of the +same structure as the main `string-template` function, so either a single +object/array or a list of arguments. + +```js +var compile = require("string-template/compile") + +var greetingTemplate = compile("Hello {0}, you have {1} unread messages") + +var greeting = greetingTemplate("Robert", 12) +// -> "Hello Robert, you have 12 unread messages" +``` + +Passing a truthy second argument to `compile` will opt into using `new Function` +to generate a function. The function returned contains a literal string +concatenation statement, interleaving the correct arguments you have passed in. + +```js +var compile = require("string-template/compile") + +var greetingTemplate = compile("Hello {0}, you have {1} unread messages", true) +// -> greetingTemplate generated using new Function + +var greeting = greetingTemplate(["Robert", 12]) +// -> "Hello Robert, you have 12 unread messages" +``` + +## Installation + +`npm install string-template` + +## Contributors + + - Matt-Esch + +## MIT Licenced + + [1]: https://secure.travis-ci.org/Matt-Esch/string-template.png + [2]: https://travis-ci.org/Matt-Esch/string-template + [3]: https://david-dm.org/Matt-Esch/string-template.png + [4]: https://david-dm.org/Matt-Esch/string-template + [5]: https://ci.testling.com/Matt-Esch/string-template.png + [6]: https://ci.testling.com/Matt-Esch/string-template + [9]: https://coveralls.io/repos/Matt-Esch/string-template/badge.png + [10]: https://coveralls.io/r/Matt-Esch/string-template + [13]: https://nodei.co/npm/string-template.png?downloads=true&stars=true + [14]: https://nodei.co/npm/string-template + [15]: http://hughsk.github.io/stability-badges/dist/unstable.svg + [16]: http://github.com/hughsk/stability-badges + + [7]: https://badge.fury.io/js/string-template.png + [8]: https://badge.fury.io/js/string-template + [11]: https://gemnasium.com/Matt-Esch/string-template.png + [12]: https://gemnasium.com/Matt-Esch/string-template diff --git a/node_modules/string-template/compile.js b/node_modules/string-template/compile.js new file mode 100644 index 0000000..18a48bf --- /dev/null +++ b/node_modules/string-template/compile.js @@ -0,0 +1,143 @@ +var template = require("./index") + +var whitespaceRegex = /["'\\\n\r\u2028\u2029]/g +var nargs = /\{[0-9a-zA-Z]+\}/g + +var replaceTemplate = +" var args\n" + +" var result\n" + +" if (arguments.length === 1 && typeof arguments[0] === \"object\") {\n" + +" args = arguments[0]\n" + +" } else {\n" + +" args = arguments" + +" }\n\n" + +" if (!args || !(\"hasOwnProperty\" in args)) {\n" + +" args = {}\n" + +" }\n\n" + +" return {0}" + +var literalTemplate = "\"{0}\"" +var argTemplate = "(result = args.hasOwnProperty(\"{0}\") ? " + + "args[\"{0}\"] : null, \n " + + "(result === null || result === undefined) ? \"\" : result)" + +module.exports = compile + +function compile(string, inline) { + var replacements = string.match(nargs) + var interleave = string.split(nargs) + var replace = [] + + for (var i = 0; i < interleave.length; i++) { + var current = interleave[i]; + var replacement = replacements[i]; + var escapeLeft = current.charAt(current.length - 1) + var escapeRight = (interleave[i + 1] || "").charAt(0) + + if (replacement) { + replacement = replacement.substring(1, replacement.length - 1) + } + + if (escapeLeft === "{" && escapeRight === "}") { + replace.push(current + replacement) + } else { + replace.push(current); + if (replacement) { + replace.push({ name: replacement }) + } + } + } + + var prev = [""] + + for (var j = 0; j < replace.length; j++) { + var curr = replace[j] + + if (String(curr) === curr) { + var top = prev[prev.length - 1] + + if (String(top) === top) { + prev[prev.length - 1] = top + curr + } else { + prev.push(curr) + } + } else { + prev.push(curr) + } + } + + replace = prev + + if (inline) { + for (var k = 0; k < replace.length; k++) { + var token = replace[k] + + if (String(token) === token) { + replace[k] = template(literalTemplate, escape(token)) + } else { + replace[k] = template(argTemplate, escape(token.name)) + } + } + + var replaceCode = replace.join(" +\n ") + var compiledSource = template(replaceTemplate, replaceCode) + return new Function(compiledSource) + } + + return function template() { + var args + + if (arguments.length === 1 && typeof arguments[0] === "object") { + args = arguments[0] + } else { + args = arguments + } + + if (!args || !("hasOwnProperty" in args)) { + args = {} + } + + var result = [] + + for (var i = 0; i < replace.length; i++) { + if (i % 2 === 0) { + result.push(replace[i]) + } else { + var argName = replace[i].name + var arg = args.hasOwnProperty(argName) ? args[argName] : null + if (arg !== null || arg !== undefined) { + result.push(arg) + } + } + } + + return result.join("") + } +} + +function escape(string) { + string = '' + string; + + return string.replace(whitespaceRegex, escapedWhitespace); +} + +function escapedWhitespace(character) { + // Escape all characters not included in SingleStringCharacters and + // DoubleStringCharacters on + // http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4 + switch (character) { + case '"': + case "'": + case '\\': + return '\\' + character + // Four possible LineTerminator characters need to be escaped: + case '\n': + return '\\n' + case '\r': + return '\\r' + case '\u2028': + return '\\u2028' + case '\u2029': + return '\\u2029' + } +} diff --git a/node_modules/string-template/index.js b/node_modules/string-template/index.js new file mode 100644 index 0000000..012cec2 --- /dev/null +++ b/node_modules/string-template/index.js @@ -0,0 +1,34 @@ +var nargs = /\{([0-9a-zA-Z]+)\}/g +var slice = Array.prototype.slice + +module.exports = template + +function template(string) { + var args + + if (arguments.length === 2 && typeof arguments[1] === "object") { + args = arguments[1] + } else { + args = slice.call(arguments, 1) + } + + if (!args || !args.hasOwnProperty) { + args = {} + } + + return string.replace(nargs, function replaceArg(match, i, index) { + var result + + if (string[index - 1] === "{" && + string[index + match.length] === "}") { + return i + } else { + result = args.hasOwnProperty(i) ? args[i] : null + if (result === null || result === undefined) { + return "" + } + + return result + } + }) +} diff --git a/node_modules/string-template/package.json b/node_modules/string-template/package.json new file mode 100644 index 0000000..3225fca --- /dev/null +++ b/node_modules/string-template/package.json @@ -0,0 +1,57 @@ +{ + "name": "string-template", + "version": "0.2.1", + "description": "A simple string template function based on named or indexed arguments", + "keywords": [ + "template", + "string", + "format", + "replace", + "arguments" + ], + "author": "Matt-Esch <matt@mattesch.info>", + "repository": "git://github.com/Matt-Esch/string-template.git", + "main": "index", + "homepage": "https://github.com/Matt-Esch/string-template", + "contributors": [ + { + "name": "Matt-Esch" + } + ], + "bugs": { + "url": "https://github.com/Matt-Esch/string-template/issues", + "email": "matt@mattesch.info" + }, + "dependencies": {}, + "devDependencies": { + "tape": "~1.1.1" + }, + "licenses": [ + { + "type": "MIT", + "url": "http://github.com/Matt-Esch/string-template/raw/master/LICENSE" + } + ], + "scripts": { + "test": "node ./test/index.js", + "travis-test": "istanbul cover ./test/index.js && ((cat coverage/lcov.info | coveralls) || exit 0)", + "cover": "istanbul cover --report none --print detail ./test/index.js", + "view-cover": "istanbul report html && google-chrome ./coverage/index.html" + }, + "testling": { + "files": "test/index.js", + "browsers": [ + "ie/8..latest", + "firefox/16..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + } +} |