aboutsummaryrefslogtreecommitdiff
path: root/node_modules/string-template
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/string-template')
-rw-r--r--node_modules/string-template/.npmignore4
-rw-r--r--node_modules/string-template/.travis.yml7
-rw-r--r--node_modules/string-template/LICENCE19
-rw-r--r--node_modules/string-template/Readme.md103
-rw-r--r--node_modules/string-template/compile.js143
-rw-r--r--node_modules/string-template/index.js34
-rw-r--r--node_modules/string-template/package.json57
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"
+ ]
+ }
+}