diff options
Diffstat (limited to 'node_modules/balanced-match')
| -rw-r--r-- | node_modules/balanced-match/.npmignore | 5 | ||||
| -rw-r--r-- | node_modules/balanced-match/LICENSE.md | 21 | ||||
| -rw-r--r-- | node_modules/balanced-match/README.md | 91 | ||||
| -rw-r--r-- | node_modules/balanced-match/index.js | 59 | ||||
| -rw-r--r-- | node_modules/balanced-match/package.json | 81 | 
5 files changed, 257 insertions, 0 deletions
diff --git a/node_modules/balanced-match/.npmignore b/node_modules/balanced-match/.npmignore new file mode 100644 index 0000000..ae5d8c3 --- /dev/null +++ b/node_modules/balanced-match/.npmignore @@ -0,0 +1,5 @@ +test +.gitignore +.travis.yml +Makefile +example.js diff --git a/node_modules/balanced-match/LICENSE.md b/node_modules/balanced-match/LICENSE.md new file mode 100644 index 0000000..2cdc8e4 --- /dev/null +++ b/node_modules/balanced-match/LICENSE.md @@ -0,0 +1,21 @@ +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +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/balanced-match/README.md b/node_modules/balanced-match/README.md new file mode 100644 index 0000000..08e918c --- /dev/null +++ b/node_modules/balanced-match/README.md @@ -0,0 +1,91 @@ +# balanced-match + +Match balanced string pairs, like `{` and `}` or `<b>` and `</b>`. Supports regular expressions as well! + +[](http://travis-ci.org/juliangruber/balanced-match) +[](https://www.npmjs.org/package/balanced-match) + +[](https://ci.testling.com/juliangruber/balanced-match) + +## Example + +Get the first matching pair of braces: + +```js +var balanced = require('balanced-match'); + +console.log(balanced('{', '}', 'pre{in{nested}}post')); +console.log(balanced('{', '}', 'pre{first}between{second}post')); +console.log(balanced(/\s+\{\s+/, /\s+\}\s+/, 'pre  {   in{nest}   }  post')); +``` + +The matches are: + +```bash +$ node example.js +{ start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' } +{ start: 3, +  end: 9, +  pre: 'pre', +  body: 'first', +  post: 'between{second}post' } +{ start: 3, end: 17, pre: 'pre', body: 'in{nest}', post: 'post' } +``` + +## API + +### var m = balanced(a, b, str) + +For the first non-nested matching pair of `a` and `b` in `str`, return an +object with those keys: + +* **start** the index of the first match of `a` +* **end** the index of the matching `b` +* **pre** the preamble, `a` and `b` not included +* **body** the match, `a` and `b` not included +* **post** the postscript, `a` and `b` not included + +If there's no match, `undefined` will be returned. + +If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`. + +### var r = balanced.range(a, b, str) + +For the first non-nested matching pair of `a` and `b` in `str`, return an +array with indexes: `[ <a index>, <b index> ]`. + +If there's no match, `undefined` will be returned. + +If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]` and `{a}}` will match `[0, 2]`. + +## Installation + +With [npm](https://npmjs.org) do: + +```bash +npm install balanced-match +``` + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +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/balanced-match/index.js b/node_modules/balanced-match/index.js new file mode 100644 index 0000000..1685a76 --- /dev/null +++ b/node_modules/balanced-match/index.js @@ -0,0 +1,59 @@ +'use strict'; +module.exports = balanced; +function balanced(a, b, str) { +  if (a instanceof RegExp) a = maybeMatch(a, str); +  if (b instanceof RegExp) b = maybeMatch(b, str); + +  var r = range(a, b, str); + +  return r && { +    start: r[0], +    end: r[1], +    pre: str.slice(0, r[0]), +    body: str.slice(r[0] + a.length, r[1]), +    post: str.slice(r[1] + b.length) +  }; +} + +function maybeMatch(reg, str) { +  var m = str.match(reg); +  return m ? m[0] : null; +} + +balanced.range = range; +function range(a, b, str) { +  var begs, beg, left, right, result; +  var ai = str.indexOf(a); +  var bi = str.indexOf(b, ai + 1); +  var i = ai; + +  if (ai >= 0 && bi > 0) { +    begs = []; +    left = str.length; + +    while (i >= 0 && !result) { +      if (i == ai) { +        begs.push(i); +        ai = str.indexOf(a, i + 1); +      } else if (begs.length == 1) { +        result = [ begs.pop(), bi ]; +      } else { +        beg = begs.pop(); +        if (beg < left) { +          left = beg; +          right = bi; +        } + +        bi = str.indexOf(b, i + 1); +      } + +      i = ai < bi && ai >= 0 ? ai : bi; +    } + +    if (begs.length) { +      result = [ left, right ]; +    } +  } + +  return result; +} diff --git a/node_modules/balanced-match/package.json b/node_modules/balanced-match/package.json new file mode 100644 index 0000000..89369e1 --- /dev/null +++ b/node_modules/balanced-match/package.json @@ -0,0 +1,81 @@ +{ +  "_args": [ +    [ +      "balanced-match@1.0.0", +      "/home/dstaesse/git/website" +    ] +  ], +  "_development": true, +  "_from": "balanced-match@1.0.0", +  "_id": "balanced-match@1.0.0", +  "_inBundle": false, +  "_integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", +  "_location": "/balanced-match", +  "_phantomChildren": {}, +  "_requested": { +    "type": "version", +    "registry": true, +    "raw": "balanced-match@1.0.0", +    "name": "balanced-match", +    "escapedName": "balanced-match", +    "rawSpec": "1.0.0", +    "saveSpec": null, +    "fetchSpec": "1.0.0" +  }, +  "_requiredBy": [ +    "/brace-expansion" +  ], +  "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", +  "_spec": "1.0.0", +  "_where": "/home/dstaesse/git/website", +  "author": { +    "name": "Julian Gruber", +    "email": "mail@juliangruber.com", +    "url": "http://juliangruber.com" +  }, +  "bugs": { +    "url": "https://github.com/juliangruber/balanced-match/issues" +  }, +  "dependencies": {}, +  "description": "Match balanced character pairs, like \"{\" and \"}\"", +  "devDependencies": { +    "matcha": "^0.7.0", +    "tape": "^4.6.0" +  }, +  "homepage": "https://github.com/juliangruber/balanced-match", +  "keywords": [ +    "match", +    "regexp", +    "test", +    "balanced", +    "parse" +  ], +  "license": "MIT", +  "main": "index.js", +  "name": "balanced-match", +  "repository": { +    "type": "git", +    "url": "git://github.com/juliangruber/balanced-match.git" +  }, +  "scripts": { +    "bench": "make bench", +    "test": "make test" +  }, +  "testling": { +    "files": "test/*.js", +    "browsers": [ +      "ie/8..latest", +      "firefox/20..latest", +      "firefox/nightly", +      "chrome/25..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" +    ] +  }, +  "version": "1.0.0" +}  | 
