diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 000000000..f247c19e0
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,3223 @@
+{
+ "name": "Ruby",
+ "version": "0.15.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@types/mocha": {
+ "version": "2.2.44",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.44.tgz",
+ "integrity": "sha512-k2tWTQU8G4+iSMvqKi0Q9IIsWAp/n8xzdZS4Q4YVIltApoMA00wFBFdlJnmoaK1/z7B0Cy0yPe6GgXteSmdUNw==",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "6.0.92",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.92.tgz",
+ "integrity": "sha512-awEYSSTn7dauwVCYSx2CJaPTu0Z1Ht2oR1b2AD3CYao6ZRb+opb6EL43fzmD7eMFgMHzTBWSUzlWSD+S8xN0Nw==",
+ "dev": true
+ },
+ "ajv": {
+ "version": "5.5.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz",
+ "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=",
+ "requires": {
+ "co": "4.6.0",
+ "fast-deep-equal": "1.0.0",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.3.1"
+ }
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ },
+ "archy": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
+ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
+ "dev": true
+ },
+ "arr-diff": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "requires": {
+ "arr-flatten": "1.1.0"
+ }
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
+ },
+ "array-differ": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
+ "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE="
+ },
+ "array-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
+ "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=",
+ "dev": true
+ },
+ "array-slice": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
+ "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
+ "dev": true
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "requires": {
+ "array-uniq": "1.0.3"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY="
+ },
+ "array-unique": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM="
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
+ },
+ "asn1": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
+ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
+ },
+ "assert-plus": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
+ "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ="
+ },
+ "async": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
+ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
+ "requires": {
+ "lodash": "4.17.4"
+ }
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ },
+ "aws-sign2": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
+ "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8="
+ },
+ "aws4": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
+ "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4="
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
+ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
+ "optional": true,
+ "requires": {
+ "tweetnacl": "0.14.5"
+ }
+ },
+ "beeper": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz",
+ "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak="
+ },
+ "block-stream": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ },
+ "boom": {
+ "version": "2.10.1",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
+ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+ "requires": {
+ "hoek": "2.16.3"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
+ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+ "requires": {
+ "expand-range": "1.8.2",
+ "preserve": "0.2.0",
+ "repeat-element": "1.1.2"
+ }
+ },
+ "browser-stdout": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz",
+ "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8="
+ },
+ "buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI="
+ },
+ "caseless": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
+ "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c="
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "clone": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz",
+ "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8="
+ },
+ "clone-buffer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
+ "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg="
+ },
+ "clone-stats": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
+ "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE="
+ },
+ "cloneable-readable": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.0.0.tgz",
+ "integrity": "sha1-pikNQT8hemEjL5XkWP84QYz7ARc=",
+ "requires": {
+ "inherits": "2.0.3",
+ "process-nextick-args": "1.0.7",
+ "through2": "2.0.3"
+ }
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
+ },
+ "coffee-script": {
+ "version": "1.12.7",
+ "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz",
+ "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==",
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
+ "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
+ "requires": {
+ "delayed-stream": "1.0.0"
+ }
+ },
+ "commander": {
+ "version": "2.12.2",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz",
+ "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA=="
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ },
+ "convert-source-map": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
+ "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU="
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "cryptiles": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
+ "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
+ "requires": {
+ "boom": "2.10.1"
+ }
+ },
+ "cson-parser": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/cson-parser/-/cson-parser-2.0.1.tgz",
+ "integrity": "sha512-06Z/arU/l0SMC2UGEGZ7TIz8JLw9fvgD0ItI3tmoNH23Sxt5y9lEdXRN0oaeuXqQV+NBYh4JpsEuNIMxZfMVqA==",
+ "dev": true,
+ "requires": {
+ "coffee-script": "1.12.7"
+ }
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "requires": {
+ "assert-plus": "1.0.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ }
+ }
+ },
+ "dateformat": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz",
+ "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI="
+ },
+ "debug": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+ "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
+ "dev": true,
+ "requires": {
+ "ms": "0.7.1"
+ }
+ },
+ "deep-assign": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz",
+ "integrity": "sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s=",
+ "requires": {
+ "is-obj": "1.0.1"
+ }
+ },
+ "defaults": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
+ "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
+ "dev": true,
+ "requires": {
+ "clone": "1.0.3"
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+ },
+ "deprecated": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz",
+ "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=",
+ "dev": true
+ },
+ "detect-file": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz",
+ "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=",
+ "dev": true,
+ "requires": {
+ "fs-exists-sync": "0.1.0"
+ }
+ },
+ "diff": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz",
+ "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=",
+ "dev": true
+ },
+ "duplexer": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
+ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E="
+ },
+ "duplexer2": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
+ "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
+ "requires": {
+ "readable-stream": "1.1.14"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ }
+ }
+ },
+ "duplexify": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz",
+ "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==",
+ "requires": {
+ "end-of-stream": "1.4.0",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3",
+ "stream-shift": "1.0.0"
+ }
+ },
+ "ecc-jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
+ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+ "optional": true,
+ "requires": {
+ "jsbn": "0.1.1"
+ }
+ },
+ "end-of-stream": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz",
+ "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=",
+ "requires": {
+ "once": "1.4.0"
+ }
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+ },
+ "event-stream": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz",
+ "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=",
+ "requires": {
+ "duplexer": "0.1.1",
+ "from": "0.1.7",
+ "map-stream": "0.1.0",
+ "pause-stream": "0.0.11",
+ "split": "0.3.3",
+ "stream-combiner": "0.0.4",
+ "through": "2.3.8"
+ }
+ },
+ "expand-brackets": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "requires": {
+ "is-posix-bracket": "0.1.1"
+ }
+ },
+ "expand-range": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+ "requires": {
+ "fill-range": "2.2.3"
+ }
+ },
+ "expand-tilde": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz",
+ "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=",
+ "dev": true,
+ "requires": {
+ "os-homedir": "1.0.2"
+ }
+ },
+ "extend": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "extglob": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "requires": {
+ "is-extglob": "1.0.0"
+ },
+ "dependencies": {
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
+ }
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
+ },
+ "fancy-log": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz",
+ "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=",
+ "requires": {
+ "chalk": "1.1.3",
+ "time-stamp": "1.1.0"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz",
+ "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8="
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
+ },
+ "fd-slicer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
+ "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
+ "requires": {
+ "pend": "1.2.0"
+ }
+ },
+ "filename-regex": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY="
+ },
+ "fill-range": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
+ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
+ "requires": {
+ "is-number": "2.1.0",
+ "isobject": "2.1.0",
+ "randomatic": "1.1.7",
+ "repeat-element": "1.1.2",
+ "repeat-string": "1.6.1"
+ }
+ },
+ "find-index": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz",
+ "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=",
+ "dev": true
+ },
+ "findup-sync": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz",
+ "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=",
+ "dev": true,
+ "requires": {
+ "detect-file": "0.1.0",
+ "is-glob": "2.0.1",
+ "micromatch": "2.3.11",
+ "resolve-dir": "0.1.1"
+ },
+ "dependencies": {
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "1.0.0"
+ }
+ }
+ }
+ },
+ "fined": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz",
+ "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "2.0.2",
+ "is-plain-object": "2.0.4",
+ "object.defaults": "1.1.0",
+ "object.pick": "1.3.0",
+ "parse-filepath": "1.0.1"
+ },
+ "dependencies": {
+ "expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "1.0.1"
+ }
+ }
+ }
+ },
+ "first-chunk-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz",
+ "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04="
+ },
+ "flagged-respawn": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz",
+ "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=",
+ "dev": true
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
+ },
+ "for-own": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "requires": {
+ "for-in": "1.0.2"
+ }
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
+ },
+ "form-data": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
+ "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
+ "requires": {
+ "asynckit": "0.4.0",
+ "combined-stream": "1.0.5",
+ "mime-types": "2.1.17"
+ }
+ },
+ "from": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz",
+ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4="
+ },
+ "fs-exists-sync": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz",
+ "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=",
+ "dev": true
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+ },
+ "fstream": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
+ "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "inherits": "2.0.3",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.2"
+ }
+ },
+ "gaze": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz",
+ "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=",
+ "dev": true,
+ "requires": {
+ "globule": "0.1.0"
+ }
+ },
+ "generate-function": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
+ "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ="
+ },
+ "generate-object-property": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
+ "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
+ "requires": {
+ "is-property": "1.0.2"
+ }
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "requires": {
+ "assert-plus": "1.0.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ }
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "glob-base": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+ "requires": {
+ "glob-parent": "2.0.0",
+ "is-glob": "2.0.1"
+ },
+ "dependencies": {
+ "glob-parent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "requires": {
+ "is-glob": "2.0.1"
+ }
+ },
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "requires": {
+ "is-extglob": "1.0.0"
+ }
+ }
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "requires": {
+ "is-glob": "3.1.0",
+ "path-dirname": "1.0.2"
+ }
+ },
+ "glob-stream": {
+ "version": "5.3.5",
+ "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz",
+ "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=",
+ "requires": {
+ "extend": "3.0.1",
+ "glob": "5.0.15",
+ "glob-parent": "3.1.0",
+ "micromatch": "2.3.11",
+ "ordered-read-streams": "0.3.0",
+ "through2": "0.6.5",
+ "to-absolute-glob": "0.1.1",
+ "unique-stream": "2.2.1"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "requires": {
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ },
+ "through2": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
+ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
+ "requires": {
+ "readable-stream": "1.0.34",
+ "xtend": "4.0.1"
+ }
+ }
+ }
+ },
+ "glob-watcher": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz",
+ "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=",
+ "dev": true,
+ "requires": {
+ "gaze": "0.5.2"
+ }
+ },
+ "glob2base": {
+ "version": "0.0.12",
+ "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz",
+ "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=",
+ "dev": true,
+ "requires": {
+ "find-index": "0.1.1"
+ }
+ },
+ "global-modules": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz",
+ "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=",
+ "dev": true,
+ "requires": {
+ "global-prefix": "0.1.5",
+ "is-windows": "0.2.0"
+ }
+ },
+ "global-prefix": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz",
+ "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "1.0.1",
+ "ini": "1.3.5",
+ "is-windows": "0.2.0",
+ "which": "1.3.0"
+ }
+ },
+ "globule": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz",
+ "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=",
+ "dev": true,
+ "requires": {
+ "glob": "3.1.21",
+ "lodash": "1.0.2",
+ "minimatch": "0.2.14"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "3.1.21",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
+ "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "1.2.3",
+ "inherits": "1.0.2",
+ "minimatch": "0.2.14"
+ }
+ },
+ "graceful-fs": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
+ "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=",
+ "dev": true
+ },
+ "inherits": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz",
+ "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=",
+ "dev": true
+ },
+ "lodash": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz",
+ "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
+ "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "2.7.3",
+ "sigmund": "1.0.1"
+ }
+ }
+ }
+ },
+ "glogg": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz",
+ "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=",
+ "requires": {
+ "sparkles": "1.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
+ },
+ "growl": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz",
+ "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=",
+ "dev": true
+ },
+ "gulp": {
+ "version": "3.9.1",
+ "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz",
+ "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=",
+ "dev": true,
+ "requires": {
+ "archy": "1.0.0",
+ "chalk": "1.1.3",
+ "deprecated": "0.0.1",
+ "gulp-util": "3.0.8",
+ "interpret": "1.1.0",
+ "liftoff": "2.3.0",
+ "minimist": "1.2.0",
+ "orchestrator": "0.3.8",
+ "pretty-hrtime": "1.0.3",
+ "semver": "4.3.6",
+ "tildify": "1.2.0",
+ "v8flags": "2.1.1",
+ "vinyl-fs": "0.3.14"
+ },
+ "dependencies": {
+ "clone": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
+ "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
+ "dev": true
+ },
+ "glob": {
+ "version": "4.5.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz",
+ "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=",
+ "dev": true,
+ "requires": {
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "2.0.10",
+ "once": "1.4.0"
+ }
+ },
+ "glob-stream": {
+ "version": "3.1.18",
+ "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz",
+ "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=",
+ "dev": true,
+ "requires": {
+ "glob": "4.5.3",
+ "glob2base": "0.0.12",
+ "minimatch": "2.0.10",
+ "ordered-read-streams": "0.1.0",
+ "through2": "0.6.5",
+ "unique-stream": "1.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz",
+ "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=",
+ "dev": true,
+ "requires": {
+ "natives": "1.1.1"
+ }
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
+ "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.8"
+ }
+ },
+ "ordered-read-streams": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz",
+ "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "semver": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
+ "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ },
+ "strip-bom": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz",
+ "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=",
+ "dev": true,
+ "requires": {
+ "first-chunk-stream": "1.0.0",
+ "is-utf8": "0.2.1"
+ }
+ },
+ "through2": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
+ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.0.34",
+ "xtend": "4.0.1"
+ }
+ },
+ "unique-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz",
+ "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=",
+ "dev": true
+ },
+ "vinyl": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
+ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
+ "dev": true,
+ "requires": {
+ "clone": "0.2.0",
+ "clone-stats": "0.0.1"
+ }
+ },
+ "vinyl-fs": {
+ "version": "0.3.14",
+ "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz",
+ "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=",
+ "dev": true,
+ "requires": {
+ "defaults": "1.0.3",
+ "glob-stream": "3.1.18",
+ "glob-watcher": "0.0.6",
+ "graceful-fs": "3.0.11",
+ "mkdirp": "0.5.1",
+ "strip-bom": "1.0.0",
+ "through2": "0.6.5",
+ "vinyl": "0.4.6"
+ }
+ }
+ }
+ },
+ "gulp-chmod": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/gulp-chmod/-/gulp-chmod-2.0.0.tgz",
+ "integrity": "sha1-AMOQuSigeZslGsz2MaoJ4BzGKZw=",
+ "requires": {
+ "deep-assign": "1.0.0",
+ "stat-mode": "0.2.2",
+ "through2": "2.0.3"
+ }
+ },
+ "gulp-filter": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-5.0.1.tgz",
+ "integrity": "sha512-5olRzAhFdXB2klCu1lnazP65aO9YdA/5WfC9VdInIc8PrUeDIoZfaA3Edb0yUBGhVdHv4eHKL9Fg5tUoEJ9z5A==",
+ "requires": {
+ "gulp-util": "3.0.8",
+ "multimatch": "2.1.0",
+ "streamfilter": "1.0.7"
+ }
+ },
+ "gulp-gunzip": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/gulp-gunzip/-/gulp-gunzip-1.0.0.tgz",
+ "integrity": "sha1-FbdBFF6Dqcb1CIYkG1fMWHHxUak=",
+ "requires": {
+ "through2": "0.6.5",
+ "vinyl": "0.4.6"
+ },
+ "dependencies": {
+ "clone": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
+ "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8="
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ },
+ "through2": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
+ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
+ "requires": {
+ "readable-stream": "1.0.34",
+ "xtend": "4.0.1"
+ }
+ },
+ "vinyl": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
+ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
+ "requires": {
+ "clone": "0.2.0",
+ "clone-stats": "0.0.1"
+ }
+ }
+ }
+ },
+ "gulp-remote-src": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/gulp-remote-src/-/gulp-remote-src-0.4.3.tgz",
+ "integrity": "sha1-VyjP1kNDPdSEXd7wlp8PlxoqtKE=",
+ "requires": {
+ "event-stream": "3.3.4",
+ "node.extend": "1.1.6",
+ "request": "2.79.0",
+ "through2": "2.0.3",
+ "vinyl": "2.0.2"
+ },
+ "dependencies": {
+ "clone-stats": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
+ "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA="
+ },
+ "replace-ext": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
+ "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs="
+ },
+ "request": {
+ "version": "2.79.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
+ "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
+ "requires": {
+ "aws-sign2": "0.6.0",
+ "aws4": "1.6.0",
+ "caseless": "0.11.0",
+ "combined-stream": "1.0.5",
+ "extend": "3.0.1",
+ "forever-agent": "0.6.1",
+ "form-data": "2.1.4",
+ "har-validator": "2.0.6",
+ "hawk": "3.1.3",
+ "http-signature": "1.1.1",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.17",
+ "oauth-sign": "0.8.2",
+ "qs": "6.3.2",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.3.3",
+ "tunnel-agent": "0.4.3",
+ "uuid": "3.1.0"
+ }
+ },
+ "vinyl": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.0.2.tgz",
+ "integrity": "sha1-CjcT2NTpIhxY8QyhbAEWyeJe2nw=",
+ "requires": {
+ "clone": "1.0.3",
+ "clone-buffer": "1.0.0",
+ "clone-stats": "1.0.0",
+ "cloneable-readable": "1.0.0",
+ "is-stream": "1.1.0",
+ "remove-trailing-separator": "1.1.0",
+ "replace-ext": "1.0.0"
+ }
+ }
+ }
+ },
+ "gulp-sourcemaps": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz",
+ "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=",
+ "requires": {
+ "convert-source-map": "1.5.1",
+ "graceful-fs": "4.1.11",
+ "strip-bom": "2.0.0",
+ "through2": "2.0.3",
+ "vinyl": "1.2.0"
+ },
+ "dependencies": {
+ "vinyl": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
+ "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
+ "requires": {
+ "clone": "1.0.3",
+ "clone-stats": "0.0.1",
+ "replace-ext": "0.0.1"
+ }
+ }
+ }
+ },
+ "gulp-symdest": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/gulp-symdest/-/gulp-symdest-1.1.0.tgz",
+ "integrity": "sha1-wWUyBzLRks5W/ZQnH/oSMjS/KuA=",
+ "requires": {
+ "event-stream": "3.3.4",
+ "mkdirp": "0.5.1",
+ "queue": "3.1.0",
+ "vinyl-fs": "2.4.4"
+ }
+ },
+ "gulp-typescript": {
+ "version": "2.14.1",
+ "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-2.14.1.tgz",
+ "integrity": "sha1-vADt8u5x8JvaU/0dC4c7VxNx1N4=",
+ "dev": true,
+ "requires": {
+ "gulp-util": "3.0.8",
+ "source-map": "0.5.7",
+ "through2": "2.0.3",
+ "typescript": "1.8.10",
+ "vinyl-fs": "2.4.4"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "typescript": {
+ "version": "1.8.10",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-1.8.10.tgz",
+ "integrity": "sha1-tHXW4N/wv1DyluXKbvn7tccyDx4=",
+ "dev": true
+ }
+ }
+ },
+ "gulp-untar": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/gulp-untar/-/gulp-untar-0.0.6.tgz",
+ "integrity": "sha1-1r3v3n6ajgVMnxYjhaB4LEvnQAA=",
+ "requires": {
+ "event-stream": "3.3.4",
+ "gulp-util": "3.0.8",
+ "streamifier": "0.1.1",
+ "tar": "2.2.1",
+ "through2": "2.0.3"
+ }
+ },
+ "gulp-util": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz",
+ "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=",
+ "requires": {
+ "array-differ": "1.0.0",
+ "array-uniq": "1.0.3",
+ "beeper": "1.1.1",
+ "chalk": "1.1.3",
+ "dateformat": "2.2.0",
+ "fancy-log": "1.3.0",
+ "gulplog": "1.0.0",
+ "has-gulplog": "0.1.0",
+ "lodash._reescape": "3.0.0",
+ "lodash._reevaluate": "3.0.0",
+ "lodash._reinterpolate": "3.0.0",
+ "lodash.template": "3.6.2",
+ "minimist": "1.2.0",
+ "multipipe": "0.1.2",
+ "object-assign": "3.0.0",
+ "replace-ext": "0.0.1",
+ "through2": "2.0.3",
+ "vinyl": "0.5.3"
+ }
+ },
+ "gulp-vinyl-zip": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/gulp-vinyl-zip/-/gulp-vinyl-zip-2.1.0.tgz",
+ "integrity": "sha1-JOQGhdwFtxSZlSRQmeBZAmO+ja0=",
+ "requires": {
+ "event-stream": "3.3.4",
+ "queue": "4.4.2",
+ "through2": "2.0.3",
+ "vinyl": "2.1.0",
+ "vinyl-fs": "2.4.4",
+ "yauzl": "2.9.1",
+ "yazl": "2.4.3"
+ },
+ "dependencies": {
+ "clone": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz",
+ "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs="
+ },
+ "clone-stats": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
+ "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA="
+ },
+ "queue": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/queue/-/queue-4.4.2.tgz",
+ "integrity": "sha512-fSMRXbwhMwipcDZ08enW2vl+YDmAmhcNcr43sCJL8DIg+CFOsoRLG23ctxA+fwNk1w55SePSiS7oqQQSgQoVJQ==",
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ },
+ "replace-ext": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
+ "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs="
+ },
+ "vinyl": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz",
+ "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=",
+ "requires": {
+ "clone": "2.1.1",
+ "clone-buffer": "1.0.0",
+ "clone-stats": "1.0.0",
+ "cloneable-readable": "1.0.0",
+ "remove-trailing-separator": "1.1.0",
+ "replace-ext": "1.0.0"
+ }
+ }
+ }
+ },
+ "gulplog": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
+ "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
+ "requires": {
+ "glogg": "1.0.0"
+ }
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
+ },
+ "har-validator": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
+ "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
+ "requires": {
+ "chalk": "1.1.3",
+ "commander": "2.12.2",
+ "is-my-json-valid": "2.16.1",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
+ },
+ "has-gulplog": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz",
+ "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=",
+ "requires": {
+ "sparkles": "1.0.0"
+ }
+ },
+ "hawk": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
+ "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
+ "requires": {
+ "boom": "2.10.1",
+ "cryptiles": "2.0.5",
+ "hoek": "2.16.3",
+ "sntp": "1.0.9"
+ }
+ },
+ "he": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
+ "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0="
+ },
+ "hoek": {
+ "version": "2.16.3",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
+ "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
+ },
+ "homedir-polyfill": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
+ "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=",
+ "dev": true,
+ "requires": {
+ "parse-passwd": "1.0.0"
+ }
+ },
+ "http-signature": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
+ "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+ "requires": {
+ "assert-plus": "0.2.0",
+ "jsprim": "1.4.1",
+ "sshpk": "1.13.1"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+ "dev": true
+ },
+ "interpret": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
+ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
+ "dev": true
+ },
+ "is": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz",
+ "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU="
+ },
+ "is-absolute": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz",
+ "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=",
+ "dev": true,
+ "requires": {
+ "is-relative": "0.2.1",
+ "is-windows": "0.2.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ },
+ "is-dotfile": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+ "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE="
+ },
+ "is-equal-shallow": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
+ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+ "requires": {
+ "is-primitive": "2.0.0"
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+ },
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ },
+ "is-my-json-valid": {
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz",
+ "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==",
+ "requires": {
+ "generate-function": "2.0.0",
+ "generate-object-property": "1.2.0",
+ "jsonpointer": "4.0.1",
+ "xtend": "4.0.1"
+ }
+ },
+ "is-number": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8="
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "is-posix-bracket": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
+ "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q="
+ },
+ "is-primitive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU="
+ },
+ "is-property": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
+ "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ="
+ },
+ "is-relative": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz",
+ "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=",
+ "dev": true,
+ "requires": {
+ "is-unc-path": "0.1.2"
+ }
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ },
+ "is-unc-path": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz",
+ "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=",
+ "dev": true,
+ "requires": {
+ "unc-path-regex": "0.1.2"
+ }
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI="
+ },
+ "is-valid-glob": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz",
+ "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4="
+ },
+ "is-windows": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz",
+ "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+ },
+ "jade": {
+ "version": "0.26.3",
+ "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz",
+ "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=",
+ "dev": true,
+ "requires": {
+ "commander": "0.6.1",
+ "mkdirp": "0.3.0"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz",
+ "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz",
+ "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=",
+ "dev": true
+ }
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "optional": true
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+ },
+ "json-schema-traverse": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
+ },
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+ "requires": {
+ "jsonify": "0.0.0"
+ }
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
+ },
+ "jsonpointer": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
+ "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk="
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ }
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ },
+ "lazystream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
+ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
+ "requires": {
+ "readable-stream": "2.3.3"
+ }
+ },
+ "liftoff": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz",
+ "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=",
+ "dev": true,
+ "requires": {
+ "extend": "3.0.1",
+ "findup-sync": "0.4.3",
+ "fined": "1.1.0",
+ "flagged-respawn": "0.3.2",
+ "lodash.isplainobject": "4.0.6",
+ "lodash.isstring": "4.0.1",
+ "lodash.mapvalues": "4.6.0",
+ "rechoir": "0.6.2",
+ "resolve": "1.5.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.4",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
+ },
+ "lodash._basecopy": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
+ "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY="
+ },
+ "lodash._basetostring": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz",
+ "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U="
+ },
+ "lodash._basevalues": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz",
+ "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc="
+ },
+ "lodash._getnative": {
+ "version": "3.9.1",
+ "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
+ "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U="
+ },
+ "lodash._isiterateecall": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz",
+ "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw="
+ },
+ "lodash._reescape": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz",
+ "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo="
+ },
+ "lodash._reevaluate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz",
+ "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0="
+ },
+ "lodash._reinterpolate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
+ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0="
+ },
+ "lodash._root": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz",
+ "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI="
+ },
+ "lodash.escape": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
+ "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=",
+ "requires": {
+ "lodash._root": "3.0.1"
+ }
+ },
+ "lodash.isarguments": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
+ "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo="
+ },
+ "lodash.isarray": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
+ "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U="
+ },
+ "lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
+ },
+ "lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
+ "dev": true
+ },
+ "lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=",
+ "dev": true
+ },
+ "lodash.keys": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
+ "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
+ "requires": {
+ "lodash._getnative": "3.9.1",
+ "lodash.isarguments": "3.1.0",
+ "lodash.isarray": "3.0.4"
+ }
+ },
+ "lodash.mapvalues": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz",
+ "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=",
+ "dev": true
+ },
+ "lodash.restparam": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz",
+ "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU="
+ },
+ "lodash.template": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz",
+ "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
+ "requires": {
+ "lodash._basecopy": "3.0.1",
+ "lodash._basetostring": "3.0.1",
+ "lodash._basevalues": "3.0.0",
+ "lodash._isiterateecall": "3.0.9",
+ "lodash._reinterpolate": "3.0.0",
+ "lodash.escape": "3.2.0",
+ "lodash.keys": "3.1.2",
+ "lodash.restparam": "3.6.1",
+ "lodash.templatesettings": "3.1.1"
+ }
+ },
+ "lodash.templatesettings": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz",
+ "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
+ "requires": {
+ "lodash._reinterpolate": "3.0.0",
+ "lodash.escape": "3.2.0"
+ }
+ },
+ "lru-cache": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
+ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=",
+ "dev": true
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true
+ },
+ "map-stream": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz",
+ "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ="
+ },
+ "merge-stream": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
+ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
+ "requires": {
+ "readable-stream": "2.3.3"
+ }
+ },
+ "micromatch": {
+ "version": "2.3.11",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+ "requires": {
+ "arr-diff": "2.0.0",
+ "array-unique": "0.2.1",
+ "braces": "1.8.5",
+ "expand-brackets": "0.1.5",
+ "extglob": "0.3.2",
+ "filename-regex": "2.0.1",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1",
+ "kind-of": "3.2.2",
+ "normalize-path": "2.1.1",
+ "object.omit": "2.0.1",
+ "parse-glob": "3.0.4",
+ "regex-cache": "0.4.4"
+ },
+ "dependencies": {
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "requires": {
+ "is-extglob": "1.0.0"
+ }
+ }
+ }
+ },
+ "mime-db": {
+ "version": "1.30.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
+ "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE="
+ },
+ "mime-types": {
+ "version": "2.1.17",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
+ "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
+ "requires": {
+ "mime-db": "1.30.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "requires": {
+ "brace-expansion": "1.1.8"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+ }
+ }
+ },
+ "mocha": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz",
+ "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=",
+ "dev": true,
+ "requires": {
+ "commander": "2.3.0",
+ "debug": "2.2.0",
+ "diff": "1.4.0",
+ "escape-string-regexp": "1.0.2",
+ "glob": "3.2.11",
+ "growl": "1.9.2",
+ "jade": "0.26.3",
+ "mkdirp": "0.5.1",
+ "supports-color": "1.2.0",
+ "to-iso-string": "0.0.2"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz",
+ "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz",
+ "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=",
+ "dev": true
+ },
+ "glob": {
+ "version": "3.2.11",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
+ "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "minimatch": "0.3.0"
+ }
+ },
+ "minimatch": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
+ "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "2.7.3",
+ "sigmund": "1.0.1"
+ }
+ },
+ "supports-color": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz",
+ "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=",
+ "dev": true
+ }
+ }
+ },
+ "ms": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+ "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
+ "dev": true
+ },
+ "multimatch": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz",
+ "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=",
+ "requires": {
+ "array-differ": "1.0.0",
+ "array-union": "1.0.2",
+ "arrify": "1.0.1",
+ "minimatch": "3.0.4"
+ }
+ },
+ "multipipe": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz",
+ "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=",
+ "requires": {
+ "duplexer2": "0.0.2"
+ }
+ },
+ "natives": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.1.tgz",
+ "integrity": "sha512-8eRaxn8u/4wN8tGkhlc2cgwwvOLMLUMUn4IYTexMgWd+LyUDfeXVkk2ygQR0hvIHbJQXgHujia3ieUUDwNGkEA==",
+ "dev": true
+ },
+ "node.extend": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.6.tgz",
+ "integrity": "sha1-p7iCyC1sk6SGOlUEvV3o7IYli5Y=",
+ "requires": {
+ "is": "3.2.1"
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "requires": {
+ "remove-trailing-separator": "1.1.0"
+ }
+ },
+ "oauth-sign": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
+ "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
+ },
+ "object-assign": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
+ "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I="
+ },
+ "object.defaults": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
+ "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
+ "dev": true,
+ "requires": {
+ "array-each": "1.0.1",
+ "array-slice": "1.1.0",
+ "for-own": "1.0.0",
+ "isobject": "3.0.1"
+ },
+ "dependencies": {
+ "for-own": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+ "dev": true,
+ "requires": {
+ "for-in": "1.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "object.omit": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+ "requires": {
+ "for-own": "0.1.5",
+ "is-extendable": "0.1.1"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "requires": {
+ "isobject": "3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "orchestrator": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz",
+ "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "0.1.5",
+ "sequencify": "0.0.7",
+ "stream-consume": "0.1.0"
+ },
+ "dependencies": {
+ "end-of-stream": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz",
+ "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=",
+ "dev": true,
+ "requires": {
+ "once": "1.3.3"
+ }
+ },
+ "once": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
+ "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ }
+ }
+ },
+ "ordered-read-streams": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz",
+ "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=",
+ "requires": {
+ "is-stream": "1.1.0",
+ "readable-stream": "2.3.3"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true
+ },
+ "parse-filepath": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz",
+ "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=",
+ "dev": true,
+ "requires": {
+ "is-absolute": "0.2.6",
+ "map-cache": "0.2.2",
+ "path-root": "0.1.1"
+ }
+ },
+ "parse-glob": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+ "requires": {
+ "glob-base": "0.3.0",
+ "is-dotfile": "1.0.3",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1"
+ },
+ "dependencies": {
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "requires": {
+ "is-extglob": "1.0.0"
+ }
+ }
+ }
+ },
+ "parse-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+ "dev": true
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA="
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+ },
+ "path-parse": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
+ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
+ "dev": true
+ },
+ "path-root": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
+ "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
+ "dev": true,
+ "requires": {
+ "path-root-regex": "0.1.2"
+ }
+ },
+ "path-root-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
+ "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=",
+ "dev": true
+ },
+ "pause-stream": {
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
+ "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
+ "requires": {
+ "through": "2.3.8"
+ }
+ },
+ "pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "requires": {
+ "pinkie": "2.0.4"
+ }
+ },
+ "preserve": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks="
+ },
+ "pretty-hrtime": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
+ "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+ },
+ "qs": {
+ "version": "6.3.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz",
+ "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw="
+ },
+ "querystringify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz",
+ "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs="
+ },
+ "queue": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/queue/-/queue-3.1.0.tgz",
+ "integrity": "sha1-bEnQHwCeIlZ4h4nyv/rGuLmZBYU=",
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ },
+ "randomatic": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
+ "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
+ "requires": {
+ "is-number": "3.0.0",
+ "kind-of": "4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ },
+ "rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
+ "dev": true,
+ "requires": {
+ "resolve": "1.5.0"
+ }
+ },
+ "regex-cache": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
+ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
+ "requires": {
+ "is-equal-shallow": "0.1.3"
+ }
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
+ },
+ "repeat-element": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
+ "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo="
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
+ },
+ "replace-ext": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
+ "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ="
+ },
+ "request": {
+ "version": "2.83.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
+ "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==",
+ "requires": {
+ "aws-sign2": "0.7.0",
+ "aws4": "1.6.0",
+ "caseless": "0.12.0",
+ "combined-stream": "1.0.5",
+ "extend": "3.0.1",
+ "forever-agent": "0.6.1",
+ "form-data": "2.3.1",
+ "har-validator": "5.0.3",
+ "hawk": "6.0.2",
+ "http-signature": "1.2.0",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.17",
+ "oauth-sign": "0.8.2",
+ "performance-now": "2.1.0",
+ "qs": "6.5.1",
+ "safe-buffer": "5.1.1",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.3.3",
+ "tunnel-agent": "0.6.0",
+ "uuid": "3.1.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
+ },
+ "boom": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
+ "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
+ "requires": {
+ "hoek": "4.2.0"
+ }
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+ },
+ "cryptiles": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
+ "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
+ "requires": {
+ "boom": "5.2.0"
+ },
+ "dependencies": {
+ "boom": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
+ "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
+ "requires": {
+ "hoek": "4.2.0"
+ }
+ }
+ }
+ },
+ "form-data": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz",
+ "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=",
+ "requires": {
+ "asynckit": "0.4.0",
+ "combined-stream": "1.0.5",
+ "mime-types": "2.1.17"
+ }
+ },
+ "har-validator": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
+ "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
+ "requires": {
+ "ajv": "5.5.1",
+ "har-schema": "2.0.0"
+ }
+ },
+ "hawk": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
+ "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
+ "requires": {
+ "boom": "4.3.1",
+ "cryptiles": "3.1.2",
+ "hoek": "4.2.0",
+ "sntp": "2.1.0"
+ }
+ },
+ "hoek": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz",
+ "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ=="
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "requires": {
+ "assert-plus": "1.0.0",
+ "jsprim": "1.4.1",
+ "sshpk": "1.13.1"
+ }
+ },
+ "qs": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
+ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
+ },
+ "sntp": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
+ "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
+ "requires": {
+ "hoek": "4.2.0"
+ }
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ }
+ }
+ },
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
+ },
+ "resolve": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz",
+ "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==",
+ "dev": true,
+ "requires": {
+ "path-parse": "1.0.5"
+ }
+ },
+ "resolve-dir": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz",
+ "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "1.2.2",
+ "global-modules": "0.2.3"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+ "requires": {
+ "glob": "7.1.2"
+ }
+ },
+ "ruby-method-locate": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/ruby-method-locate/-/ruby-method-locate-0.0.5.tgz",
+ "integrity": "sha1-9qBGlDV4Uz28zs0+V6Fqfh890a4="
+ },
+ "run-sequence": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/run-sequence/-/run-sequence-2.2.0.tgz",
+ "integrity": "sha512-xW5DmUwdvoyYQUMPKN8UW7TZSFs7AxtT59xo1m5y91jHbvwGlGgOmdV1Yw5P68fkjf3aHUZ4G1o1mZCtNe0qtw==",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "gulp-util": "3.0.8"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
+ },
+ "semver": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
+ "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg=="
+ },
+ "sequencify": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz",
+ "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=",
+ "dev": true
+ },
+ "sigmund": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
+ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
+ "dev": true
+ },
+ "sntp": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
+ "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
+ "requires": {
+ "hoek": "2.16.3"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "source-map-support": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz",
+ "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==",
+ "requires": {
+ "source-map": "0.6.1"
+ }
+ },
+ "sparkles": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz",
+ "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM="
+ },
+ "split": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
+ "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=",
+ "requires": {
+ "through": "2.3.8"
+ }
+ },
+ "sshpk": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
+ "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
+ "requires": {
+ "asn1": "0.2.3",
+ "assert-plus": "1.0.0",
+ "bcrypt-pbkdf": "1.0.1",
+ "dashdash": "1.14.1",
+ "ecc-jsbn": "0.1.1",
+ "getpass": "0.1.7",
+ "jsbn": "0.1.1",
+ "tweetnacl": "0.14.5"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ }
+ }
+ },
+ "stat-mode": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz",
+ "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI="
+ },
+ "stream-combiner": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
+ "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
+ "requires": {
+ "duplexer": "0.1.1"
+ }
+ },
+ "stream-consume": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz",
+ "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=",
+ "dev": true
+ },
+ "stream-shift": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
+ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI="
+ },
+ "streamfilter": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-1.0.7.tgz",
+ "integrity": "sha512-Gk6KZM+yNA1JpW0KzlZIhjo3EaBJDkYfXtYSbOwNIQ7Zd6006E6+sCFlW1NDvFG/vnXhKmw6TJJgiEQg/8lXfQ==",
+ "requires": {
+ "readable-stream": "2.3.3"
+ }
+ },
+ "streamifier": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz",
+ "integrity": "sha1-l+mNj6TRBdYqJpHR3AfoINuN/E8="
+ },
+ "string_decoder": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
+ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "stringstream": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
+ "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "requires": {
+ "is-utf8": "0.2.1"
+ }
+ },
+ "strip-bom-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz",
+ "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=",
+ "requires": {
+ "first-chunk-stream": "1.0.0",
+ "strip-bom": "2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ },
+ "tar": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
+ "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
+ "requires": {
+ "block-stream": "0.0.9",
+ "fstream": "1.0.11",
+ "inherits": "2.0.3"
+ }
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
+ },
+ "through2": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
+ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
+ "requires": {
+ "readable-stream": "2.3.3",
+ "xtend": "4.0.1"
+ }
+ },
+ "through2-filter": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz",
+ "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=",
+ "requires": {
+ "through2": "2.0.3",
+ "xtend": "4.0.1"
+ }
+ },
+ "tildify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz",
+ "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=",
+ "dev": true,
+ "requires": {
+ "os-homedir": "1.0.2"
+ }
+ },
+ "time-stamp": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
+ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM="
+ },
+ "to-absolute-glob": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz",
+ "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=",
+ "requires": {
+ "extend-shallow": "2.0.1"
+ }
+ },
+ "to-iso-string": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz",
+ "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=",
+ "dev": true
+ },
+ "tough-cookie": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
+ "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
+ "requires": {
+ "punycode": "1.4.1"
+ }
+ },
+ "tunnel-agent": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
+ "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us="
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+ "optional": true
+ },
+ "typescript": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz",
+ "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=",
+ "dev": true
+ },
+ "unc-path-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
+ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
+ "dev": true
+ },
+ "unique-stream": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz",
+ "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=",
+ "requires": {
+ "json-stable-stringify": "1.0.1",
+ "through2-filter": "2.0.0"
+ }
+ },
+ "url-parse": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz",
+ "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==",
+ "requires": {
+ "querystringify": "1.0.0",
+ "requires-port": "1.0.0"
+ }
+ },
+ "user-home": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
+ "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=",
+ "dev": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "uuid": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
+ "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g=="
+ },
+ "v8flags": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz",
+ "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=",
+ "dev": true,
+ "requires": {
+ "user-home": "1.1.1"
+ }
+ },
+ "vali-date": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz",
+ "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY="
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "requires": {
+ "assert-plus": "1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "1.3.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ }
+ }
+ },
+ "vinyl": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz",
+ "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
+ "requires": {
+ "clone": "1.0.3",
+ "clone-stats": "0.0.1",
+ "replace-ext": "0.0.1"
+ }
+ },
+ "vinyl-fs": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz",
+ "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=",
+ "requires": {
+ "duplexify": "3.5.1",
+ "glob-stream": "5.3.5",
+ "graceful-fs": "4.1.11",
+ "gulp-sourcemaps": "1.6.0",
+ "is-valid-glob": "0.3.0",
+ "lazystream": "1.0.0",
+ "lodash.isequal": "4.5.0",
+ "merge-stream": "1.0.1",
+ "mkdirp": "0.5.1",
+ "object-assign": "4.1.1",
+ "readable-stream": "2.3.3",
+ "strip-bom": "2.0.0",
+ "strip-bom-stream": "1.0.0",
+ "through2": "2.0.3",
+ "through2-filter": "2.0.0",
+ "vali-date": "1.0.0",
+ "vinyl": "1.2.0"
+ },
+ "dependencies": {
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ },
+ "vinyl": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
+ "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
+ "requires": {
+ "clone": "1.0.3",
+ "clone-stats": "0.0.1",
+ "replace-ext": "0.0.1"
+ }
+ }
+ }
+ },
+ "vinyl-source-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-1.1.0.tgz",
+ "integrity": "sha1-RMvlEIIFJ53rDFZTwJSiiHk4sas=",
+ "requires": {
+ "through2": "0.6.5",
+ "vinyl": "0.4.6"
+ },
+ "dependencies": {
+ "clone": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
+ "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8="
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ },
+ "through2": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
+ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
+ "requires": {
+ "readable-stream": "1.0.34",
+ "xtend": "4.0.1"
+ }
+ },
+ "vinyl": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
+ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
+ "requires": {
+ "clone": "0.2.0",
+ "clone-stats": "0.0.1"
+ }
+ }
+ }
+ },
+ "vscode": {
+ "version": "1.1.10",
+ "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.10.tgz",
+ "integrity": "sha512-MvFXXSGuhw0Q6GC6dQrnRc0ES+63wpttGIoYGBMQnoS9JFCCNC/rWfX0lBCHJyuKL2Q8CYg0ROsMEHbHVwEtVw==",
+ "requires": {
+ "glob": "7.1.2",
+ "gulp-chmod": "2.0.0",
+ "gulp-filter": "5.0.1",
+ "gulp-gunzip": "1.0.0",
+ "gulp-remote-src": "0.4.3",
+ "gulp-symdest": "1.1.0",
+ "gulp-untar": "0.0.6",
+ "gulp-vinyl-zip": "2.1.0",
+ "mocha": "4.0.1",
+ "request": "2.83.0",
+ "semver": "5.4.1",
+ "source-map-support": "0.5.0",
+ "url-parse": "1.2.0",
+ "vinyl-source-stream": "1.1.0"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
+ "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ=="
+ },
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "diff": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz",
+ "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww=="
+ },
+ "growl": {
+ "version": "1.10.3",
+ "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz",
+ "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q=="
+ },
+ "mocha": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.0.1.tgz",
+ "integrity": "sha512-evDmhkoA+cBNiQQQdSKZa2b9+W2mpLoj50367lhy+Klnx9OV8XlCIhigUnn1gaTFLQCa0kdNhEGDr0hCXOQFDw==",
+ "requires": {
+ "browser-stdout": "1.3.0",
+ "commander": "2.11.0",
+ "debug": "3.1.0",
+ "diff": "3.3.1",
+ "escape-string-regexp": "1.0.5",
+ "glob": "7.1.2",
+ "growl": "1.10.3",
+ "he": "1.1.1",
+ "mkdirp": "0.5.1",
+ "supports-color": "4.4.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "supports-color": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "vscode-debugadapter": {
+ "version": "1.25.0",
+ "resolved": "https://registry.npmjs.org/vscode-debugadapter/-/vscode-debugadapter-1.25.0.tgz",
+ "integrity": "sha512-tsOtNNKKTbnQanARdkFfUxI8qKVKba+QHOKWC1reDDeeyvzoNKkLMGkL/xsiKn5vQDeaP3zFBcLY8Ysak9GrvQ==",
+ "requires": {
+ "vscode-debugprotocol": "1.25.0"
+ }
+ },
+ "vscode-debugadapter-testsupport": {
+ "version": "1.25.0",
+ "resolved": "https://registry.npmjs.org/vscode-debugadapter-testsupport/-/vscode-debugadapter-testsupport-1.25.0.tgz",
+ "integrity": "sha512-6E2N7CoH7B0KEDvI9mFVFt4H+dRFDhtj3PmLVjNojfZ1VZZS2yfhE0XO0E5Axdhef3zTpUU6WZoeOOMVFGZGIg==",
+ "dev": true,
+ "requires": {
+ "vscode-debugprotocol": "1.25.0"
+ }
+ },
+ "vscode-debugprotocol": {
+ "version": "1.25.0",
+ "resolved": "https://registry.npmjs.org/vscode-debugprotocol/-/vscode-debugprotocol-1.25.0.tgz",
+ "integrity": "sha512-e1EUy/5npqa0NlAwRCUu8A9LnVRf6tkwiPQcCLyUFCC9o2GxcAqH5Va4mqXDoxQ58ar3zODivKQeRb3z1KH7WA=="
+ },
+ "which": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
+ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
+ "dev": true,
+ "requires": {
+ "isexe": "2.0.0"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "xmldom": {
+ "version": "0.1.27",
+ "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz",
+ "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk="
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
+ },
+ "yauzl": {
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.1.tgz",
+ "integrity": "sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=",
+ "requires": {
+ "buffer-crc32": "0.2.13",
+ "fd-slicer": "1.0.1"
+ }
+ },
+ "yazl": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.4.3.tgz",
+ "integrity": "sha1-7CblzIfVYBud+EMtvdPNLlFzoHE=",
+ "requires": {
+ "buffer-crc32": "0.2.13"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
index c568f1c9b..15173040e 100644
--- a/package.json
+++ b/package.json
@@ -46,34 +46,37 @@
"url": "https://github.com/rubyide/vscode-ruby/issues"
},
"dependencies": {
- "vscode": "^1.1.4",
- "ruby-method-locate": "*",
- "vscode-debugprotocol": "^1.19.0",
- "vscode-debugadapter": "^1.19.0",
- "xmldom": "^0.1.19",
+ "async": "^2.3.0",
"lodash": "^4.17.3",
"minimatch": "^3.0.3",
- "async": "^2.3.0"
+ "ruby-method-locate": "*",
+ "vscode": "^1.1.4",
+ "vscode-debugadapter": "^1.19.0",
+ "vscode-debugprotocol": "^1.19.0",
+ "xmldom": "^0.1.19"
},
"devDependencies": {
+ "@types/mocha": "^2.2.33",
+ "@types/node": "^6.0.50",
+ "cson-parser": "^2.0.1",
"gulp": "^3.9.0",
- "gulp-util": "^3.0.5",
- "gulp-typescript": "^2.12.0",
"gulp-sourcemaps": "^1.6.0",
- "run-sequence": "*",
+ "gulp-typescript": "^2.12.0",
+ "gulp-util": "^3.0.5",
"mocha": "^2.4.5",
- "vscode-debugadapter-testsupport": "^1.19.0",
+ "run-sequence": "*",
"typescript": "^2.1.5",
"vscode": "^1.1.4",
- "@types/mocha": "^2.2.33",
- "@types/node": "^6.0.50"
+ "vscode-debugadapter-testsupport": "^1.19.0"
},
"scripts": {
"vscode:prepublish": "tsc -p ./src",
"compile": "tsc -p ./src",
"watch": "tsc -w -p ./src",
"test-debugger": "node ./node_modules/mocha/bin/mocha --timeout 15000 -u tdd ./out/debugger/tests/*.js",
- "postinstall": "node ./node_modules/vscode/bin/install"
+ "postinstall": "node ./node_modules/vscode/bin/install",
+ "update-all-grammars": "node scripts/update-all-grammars",
+ "update-grammar": "node scripts/update-grammar atom/language-ruby"
},
"activationEvents": [
"onLanguage:ruby",
@@ -324,12 +327,12 @@
{
"language": "ruby",
"scopeName": "source.ruby",
- "path": "./syntaxes/ruby.tmLanguage"
+ "path": "./syntaxes/ruby.cson.json"
},
{
"language": "erb",
"scopeName": "text.html.erb",
- "path": "./syntaxes/erb.tmLanguage"
+ "path": "./syntaxes/erb.cson.json"
}
],
"debuggers": [
diff --git a/scripts/update-all-grammars.js b/scripts/update-all-grammars.js
new file mode 100644
index 000000000..f9535dce0
--- /dev/null
+++ b/scripts/update-all-grammars.js
@@ -0,0 +1,28 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *
+ * Modified for use in vscode-ruby
+ * Original file here: https://github.com/Microsoft/vscode/blob/master/build/npm/update-all-grammars.js
+ *--------------------------------------------------------------------------------------------*/
+
+const cp = require('child_process');
+const npm = process.platform === 'win32' ? 'npm.cmd' : 'npm';
+
+function updateGrammar(grammar) {
+ const result = cp.spawnSync(npm, ['run', 'update-grammar', grammar], {
+ stdio: 'inherit'
+ });
+
+ if (result.error || result.status !== 0) {
+ process.exit(1);
+ }
+}
+
+const extensions = [
+ 'erb',
+ 'gemfile',
+ 'ruby'
+];
+
+extensions.forEach(extension => updateGrammar(extension));
\ No newline at end of file
diff --git a/scripts/update-grammar.js b/scripts/update-grammar.js
new file mode 100644
index 000000000..22702072e
--- /dev/null
+++ b/scripts/update-grammar.js
@@ -0,0 +1,149 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *
+ * Modified for use in vscode-ruby
+ * Original file here: https://github.com/Microsoft/vscode/blob/master/build/npm/update-grammar.js
+ *--------------------------------------------------------------------------------------------*/
+
+'use strict';
+
+var path = require('path');
+var fs = require('fs');
+var cson = require('cson-parser');
+var https = require('https');
+var url = require('url');
+
+function getOptions(urlString) {
+ var _url = url.parse(urlString);
+ var headers = {
+ 'User-Agent': 'VSCode'
+ };
+ var token = process.env['GITHUB_TOKEN'];
+ if (token) {
+ headers['Authorization'] = 'token ' + token
+ }
+ return {
+ protocol: _url.protocol,
+ host: _url.host,
+ port: _url.port,
+ path: _url.path,
+ headers: headers
+ };
+}
+
+function download(url, redirectCount) {
+ return new Promise((c, e) => {
+ var content = '';
+ https.get(getOptions(url), function (response) {
+ response.on('data', function (data) {
+ content += data.toString();
+ }).on('end', function () {
+ let count = redirectCount || 0;
+ if (count < 5 && response.statusCode >= 300 && response.statusCode <= 303 || response.statusCode === 307) {
+ let location = response.headers['location'];
+ if (location) {
+ console.log("Redirected " + url + " to " + location);
+ download(location, count+1).then(c, e);
+ return;
+ }
+ }
+ c(content);
+ });
+ }).on('error', function (err) {
+ e(err.message);
+ });
+ });
+}
+
+function grammarToTmLanguage(grammar) {
+ grammar = grammar.toLowerCase();
+ switch(grammar) {
+ case 'ruby':
+ var file = 'ruby.cson';
+ break;
+ case 'gemfile':
+ file = 'gemfile.cson';
+ break;
+ case 'erb':
+ file = 'html (ruby - erb).cson';
+ break;
+ }
+
+ return 'grammars/' + file;
+}
+
+function getCommitSha(repoId, repoPath) {
+ var commitInfo = 'https://api.github.com/repos/' + repoId + '/commits?path=' + repoPath;
+ return download(commitInfo).then(function (content) {
+ try {
+ let lastCommit = JSON.parse(content)[0];
+ return Promise.resolve({
+ commitSha: lastCommit.sha,
+ commitDate: lastCommit.commit.author.date
+ });
+ } catch (e) {
+ console.error("Failed extracting the SHA: " + content);
+ return Promise.resolve(null);
+ }
+ }, function () {
+ console.error('Failed loading ' + commitInfo);
+ return Promise.resolve(null);
+ });
+}
+
+exports.update = function (repoId, repoPath, dest, modifyGrammar, version = 'master') {
+ var contentPath = 'https://raw.githubusercontent.com/' + repoId + `/${version}/` + repoPath;
+ console.log('Reading from ' + contentPath);
+ return download(contentPath).then(function (content) {
+ var ext = path.extname(repoPath);
+ var grammar;
+ if (ext === '.cson') {
+ grammar = cson.parse(content);
+ } else {
+ console.error('Unknown file extension: ' + ext);
+ return;
+ }
+ if (modifyGrammar) {
+ modifyGrammar(grammar);
+ }
+ return getCommitSha(repoId, repoPath).then(function (info) {
+ let result = {
+ information_for_contributors: [
+ 'This file has been converted from https://github.com/' + repoId + '/blob/master/' + repoPath,
+ 'If you want to provide a fix or improvement, please create a pull request against the original repository.',
+ 'Once accepted there, we are happy to receive an update request.'
+ ]
+ };
+
+ if (info) {
+ result.version = 'https://github.com/' + repoId + '/commit/' + info.commitSha;
+ }
+ for (let key in grammar) {
+ if (!result.hasOwnProperty(key)) {
+ result[key] = grammar[key];
+ }
+ }
+
+ try {
+ fs.writeFileSync(dest, JSON.stringify(result, null, '\t'));
+ if (info) {
+ console.log('Updated ' + path.basename(dest) + ' to ' + repoId + '@' + info.commitSha.substr(0, 7) + ' (' + info.commitDate.substr(0, 10) + ')');
+ } else {
+ console.log('Updated ' + path.basename(dest));
+ }
+ } catch (e) {
+ console.error(e);
+ }
+ });
+
+ }, console.error);
+};
+
+if (path.basename(process.argv[1]).indexOf('update-grammar') !== -1) {
+ let repo = process.argv[2];
+ let grammar = process.argv[3];
+ let outputFile = path.join('syntaxes', grammar + '.cson.json');
+ let repoFile = grammarToTmLanguage(grammar);
+ exports.update(repo, repoFile, outputFile);
+}
diff --git a/syntaxes/erb.cson.json b/syntaxes/erb.cson.json
new file mode 100644
index 000000000..d9f99b529
--- /dev/null
+++ b/syntaxes/erb.cson.json
@@ -0,0 +1,160 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/atom/language-ruby/blob/master/grammars/html (ruby - erb).cson",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/atom/language-ruby/commit/94b56c2f7a835e9cfb0be6240efcd0be6c3fb45b",
+ "name": "HTML (Ruby - ERB)",
+ "scopeName": "text.html.erb",
+ "fileTypes": [
+ "rhtml",
+ "html.erb"
+ ],
+ "injections": {
+ "text.html.erb - (meta.embedded.block.erb | meta.embedded.line.erb | meta.tag | comment), meta.tag string.quoted": {
+ "patterns": [
+ {
+ "begin": "(^\\s*)(?=<%+#(?![^%]*%>))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.comment.leading.erb"
+ }
+ },
+ "end": "(?!\\G)(\\s*$\\n)?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.comment.trailing.erb"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "begin": "(^\\s*)(?=<%(?![^%]*%>))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.leading.erb"
+ }
+ },
+ "end": "(?!\\G)(\\s*$\\n)?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.trailing.erb"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tags"
+ }
+ ]
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#tags"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "text.html.basic"
+ }
+ ],
+ "repository": {
+ "comment": {
+ "patterns": [
+ {
+ "begin": "<%+#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.erb"
+ }
+ },
+ "end": "%>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.erb"
+ }
+ },
+ "name": "comment.block.erb"
+ }
+ ]
+ },
+ "tags": {
+ "patterns": [
+ {
+ "begin": "<%+(?!>)[-=]?(?![^%]*%>)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.erb"
+ }
+ },
+ "contentName": "source.ruby.embedded.erb",
+ "end": "-?%>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.erb"
+ },
+ "1": {
+ "name": "source.ruby"
+ }
+ },
+ "name": "meta.embedded.block.erb",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.erb"
+ }
+ },
+ "match": "(#).*?(?=-?%>)",
+ "name": "comment.line.number-sign.erb"
+ },
+ {
+ "include": "source.ruby"
+ }
+ ]
+ },
+ {
+ "begin": "<%+(?!>)[-=]?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.erb"
+ }
+ },
+ "contentName": "source.ruby.embedded.erb",
+ "end": "-?%>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.erb"
+ },
+ "1": {
+ "name": "source.ruby"
+ }
+ },
+ "name": "meta.embedded.line.erb",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.erb"
+ }
+ },
+ "match": "(#).*?(?=-?%>)",
+ "name": "comment.line.number-sign.erb"
+ },
+ {
+ "include": "source.ruby"
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/syntaxes/erb.tmLanguage b/syntaxes/erb.tmLanguage
deleted file mode 100644
index 1920dee2a..000000000
--- a/syntaxes/erb.tmLanguage
+++ /dev/null
@@ -1,245 +0,0 @@
-
-
-
-
- fileTypes
-
- erb
- rhtm
- rhtml
-
- injections
-
- text.html.erb - (meta.embedded.block.erb | meta.embedded.line.erb | comment)
-
- patterns
-
-
- begin
- (^\s*)(?=<%+#(?![^%]*%>))
- beginCaptures
-
- 0
-
- name
- punctuation.whitespace.comment.leading.erb
-
-
- end
- (?!\G)(\s*$\n)?
- endCaptures
-
- 0
-
- name
- punctuation.whitespace.comment.trailing.erb
-
-
- patterns
-
-
- include
- #comment
-
-
-
-
- begin
- (^\s*)(?=<%(?![^%]*%>))
- beginCaptures
-
- 0
-
- name
- punctuation.whitespace.embedded.leading.erb
-
-
- end
- (?!\G)(\s*$\n)?
- endCaptures
-
- 0
-
- name
- punctuation.whitespace.embedded.trailing.erb
-
-
- patterns
-
-
- include
- #tags
-
-
-
-
- include
- #comment
-
-
- include
- #tags
-
-
-
-
- keyEquivalent
- ^~H
- name
- HTML (Ruby - ERB)
- patterns
-
-
- include
- text.html.basic
-
-
- repository
-
- comment
-
- patterns
-
-
- begin
- <%+#
- beginCaptures
-
- 0
-
- name
- punctuation.definition.comment.begin.erb
-
-
- end
- %>
- endCaptures
-
- 0
-
- name
- punctuation.definition.comment.end.erb
-
-
- name
- comment.block.erb
-
-
-
- tags
-
- patterns
-
-
- begin
- <%+(?!>)[-=]?(?![^%]*%>)
- beginCaptures
-
- 0
-
- name
- punctuation.section.embedded.begin.erb
-
-
- contentName
- source.ruby
- end
- (-?%)>
- endCaptures
-
- 0
-
- name
- punctuation.section.embedded.end.erb
-
- 1
-
- name
- source.ruby
-
-
- name
- meta.embedded.block.erb
- patterns
-
-
- captures
-
- 1
-
- name
- punctuation.definition.comment.erb
-
-
- match
- (#).*?(?=-?%>)
- name
- comment.line.number-sign.erb
-
-
- include
- source.ruby
-
-
-
-
- begin
- <%+(?!>)[-=]?
- beginCaptures
-
- 0
-
- name
- punctuation.section.embedded.begin.erb
-
-
- contentName
- source.ruby
- end
- (-?%)>
- endCaptures
-
- 0
-
- name
- punctuation.section.embedded.end.erb
-
- 1
-
- name
- source.ruby
-
-
- name
- meta.embedded.line.erb
- patterns
-
-
- captures
-
- 1
-
- name
- punctuation.definition.comment.erb
-
-
- match
- (#).*?(?=-?%>)
- name
- comment.line.number-sign.erb
-
-
- include
- source.ruby
-
-
-
-
-
-
- scopeName
- text.html.erb
- uuid
- 13FF9439-15D0-4E74-9A8E-83ABF0BAA5E7
-
-
\ No newline at end of file
diff --git a/syntaxes/ruby.cson.json b/syntaxes/ruby.cson.json
new file mode 100644
index 000000000..673a35bd0
--- /dev/null
+++ b/syntaxes/ruby.cson.json
@@ -0,0 +1,2701 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/atom/language-ruby/blob/master/grammars/ruby.cson",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/atom/language-ruby/commit/3c78983017c34cfc234f73ed48eb6661f27358a4",
+ "name": "Ruby",
+ "scopeName": "source.ruby",
+ "fileTypes": [
+ "Appfile",
+ "Appraisals",
+ "arb",
+ "Berksfile",
+ "Brewfile",
+ "cap",
+ "Capfile",
+ "capfile",
+ "cgi",
+ "cr",
+ "Dangerfile",
+ "Deliverfile",
+ "Fastfile",
+ "fcgi",
+ "gemspec",
+ "Guardfile",
+ "irbrc",
+ "opal",
+ "Podfile",
+ "podspec",
+ "prawn",
+ "pryrc",
+ "Puppetfile",
+ "rabl",
+ "rake",
+ "Rakefile",
+ "Rantfile",
+ "rb",
+ "rbx",
+ "rjs",
+ "ru",
+ "ruby",
+ "Schemafile",
+ "Snapfile",
+ "thor",
+ "Thorfile",
+ "Vagrantfile"
+ ],
+ "firstLineMatch": "(?x)\n# Hashbang\n^\\#!.*(?:\\s|\\/)\n (?:ruby|macruby|rake|jruby|rbx|ruby_executable_hooks)\n(?:$|\\s)\n|\n# Modeline\n(?i:\n # Emacs\n -\\*-(?:\\s*(?=[^:;\\s]+\\s*-\\*-)|(?:.*?[;\\s]|(?<=-\\*-))mode\\s*:\\s*)\n ruby\n (?=[\\s;]|(?]?\\d+|m)?|\\sex)(?=:(?=\\s*set?\\s[^\\n:]+:)|:(?!\\s*set?\\s))(?:(?:\\s|\\s*:\\s*)\\w*(?:\\s*=(?:[^\\n\\\\\\s]|\\\\.)*)?)*[\\s:](?:filetype|ft|syntax)\\s*=\n ruby\n (?=\\s|:|$)\n)",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.class.ruby"
+ },
+ "2": {
+ "name": "entity.name.type.class.ruby"
+ },
+ "4": {
+ "name": "entity.other.inherited-class.ruby"
+ },
+ "5": {
+ "name": "punctuation.separator.inheritance.ruby"
+ },
+ "6": {
+ "name": "variable.other.object.ruby"
+ },
+ "7": {
+ "name": "punctuation.definition.variable.ruby"
+ }
+ },
+ "match": "(?x)\n^\\s*(class)\\s+\n(\n (\n [.a-zA-Z0-9_:]+\n (\\s*(<)\\s*[.a-zA-Z0-9_:]+)? # class A < B\n )\n |\n ((<<)\\s*[.a-zA-Z0-9_:]+) # class << C\n)",
+ "name": "meta.class.ruby"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.module.ruby"
+ },
+ "2": {
+ "name": "entity.name.type.module.ruby"
+ },
+ "3": {
+ "name": "entity.other.inherited-class.module.first.ruby"
+ },
+ "4": {
+ "name": "punctuation.separator.inheritance.ruby"
+ },
+ "5": {
+ "name": "entity.other.inherited-class.module.second.ruby"
+ },
+ "6": {
+ "name": "punctuation.separator.inheritance.ruby"
+ },
+ "7": {
+ "name": "entity.other.inherited-class.module.third.ruby"
+ },
+ "8": {
+ "name": "punctuation.separator.inheritance.ruby"
+ }
+ },
+ "match": "(?x)\n^\\s*(module)\\s+\n(\n ([A-Z]\\w*(::))?\n ([A-Z]\\w*(::))?\n ([A-Z]\\w*(::))*\n [A-Z]\\w*\n)",
+ "name": "meta.module.ruby"
+ },
+ {
+ "comment": "else if is a common mistake carried over from other languages. it works if you put in a second end, but it’s never what you want.",
+ "match": "(?[a-zA-Z_]\\w*(?>[?!])?)(:)(?!:)",
+ "name": "constant.other.symbol.hashkey.ruby"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.ruby"
+ }
+ },
+ "comment": "symbols as hash key (1.8 syntax)",
+ "match": "(?[a-zA-Z_]\\w*(?>[?!])?)(?=\\s*=>)",
+ "name": "constant.other.symbol.hashkey.ruby"
+ },
+ {
+ "comment": "everything being a reserved word, not a value and needing a 'end' is a..",
+ "match": "(?|_|\\*|\\$|\\?|:|\"|-[0adFiIlpv])",
+ "name": "variable.other.readwrite.global.pre-defined.ruby"
+ },
+ {
+ "begin": "\\b(ENV)\\[",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.constant.ruby"
+ }
+ },
+ "end": "]",
+ "name": "meta.environment-variable.ruby",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "match": "\\b[A-Z]\\w*(?=((\\.|::)[A-Za-z]|\\[))",
+ "name": "support.class.ruby"
+ },
+ {
+ "match": "\\b((abort|at_exit|autoload|binding|callcc|caller|caller_locations|chomp|chop|eval|exec|exit|fork|format|gets|global_variables|gsub|lambda|load|local_variables|open|p|print|printf|proc|putc|puts|rand|readline|readlines|select|set_trace_func|sleep|spawn|sprintf|srand|sub|syscall|system|test|trace_var|trap|untrace_var|warn)\\b(?![?!])|autoload\\?|exit!)",
+ "name": "support.function.kernel.ruby"
+ },
+ {
+ "match": "\\b[_A-Z]\\w*\\b",
+ "name": "variable.other.constant.ruby"
+ },
+ {
+ "begin": "(?x)\n(?=def\\b) # optimization to help Oniguruma fail fast\n(?<=^|\\s)(def)\\s+\n(\n (?>[a-zA-Z_]\\w*(?>\\.|::))? # method prefix\n (?> # method name\n [a-zA-Z_]\\w*(?>[?!]|=(?!>))?\n |\n ===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[]=?\n )\n)\n\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.def.ruby"
+ },
+ "2": {
+ "name": "entity.name.function.ruby"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.ruby"
+ }
+ },
+ "comment": "The method pattern comes from the symbol pattern. See there for an explanation.",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.ruby"
+ }
+ },
+ "name": "meta.function.method.with-arguments.ruby",
+ "patterns": [
+ {
+ "begin": "(?![\\s,)])",
+ "end": "(?=,|\\)\\s*$)",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.variable.ruby"
+ },
+ "2": {
+ "name": "constant.other.symbol.hashkey.parameter.function.ruby"
+ },
+ "3": {
+ "name": "punctuation.definition.constant.hashkey.ruby"
+ },
+ "4": {
+ "name": "variable.parameter.function.ruby"
+ }
+ },
+ "match": "\\G([&*]?)(?:([_a-zA-Z]\\w*(:))|([_a-zA-Z]\\w*))"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n(?=def\\b) # optimization to help Oniguruma fail fast\n(?<=^|\\s)(def)\\s+\n(\n (?>[a-zA-Z_]\\w*(?>\\.|::))? # method prefix\n (?> # method name\n [a-zA-Z_]\\w*(?>[?!]|=(?!>))?\n |\n ===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[]=?\n )\n)\n[ \\t]\n(?=[ \\t]*[^\\s#;]) # make sure the following is not comment",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.def.ruby"
+ },
+ "2": {
+ "name": "entity.name.function.ruby"
+ }
+ },
+ "comment": "same as the previous rule, but without parentheses around the arguments",
+ "end": "$",
+ "name": "meta.function.method.with-arguments.ruby",
+ "patterns": [
+ {
+ "begin": "(?![\\s,])",
+ "end": "(?=,|$)",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.variable.ruby"
+ },
+ "2": {
+ "name": "constant.other.symbol.hashkey.parameter.function.ruby"
+ },
+ "3": {
+ "name": "punctuation.definition.constant.hashkey.ruby"
+ },
+ "4": {
+ "name": "variable.parameter.function.ruby"
+ }
+ },
+ "match": "\\G([&*]?)(?:([_a-zA-Z]\\w*(:))|([_a-zA-Z]\\w*))"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.def.ruby"
+ },
+ "3": {
+ "name": "entity.name.function.ruby"
+ }
+ },
+ "comment": " the optional name is just to catch the def also without a method-name",
+ "match": "(?x)\n(?=def\\b) # optimization to help Oniguruma fail fast\n(?<=^|\\s)(def)\\b\n(\n \\s+\n (\n (?>[a-zA-Z_]\\w*(?>\\.|::))? # method prefix\n (?> # method name\n [a-zA-Z_]\\w*(?>[?!]|=(?!>))?\n |\n ===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[]=?\n )\n )\n)?",
+ "name": "meta.function.method.without-arguments.ruby"
+ },
+ {
+ "match": "(?x)\n\\b\n(\n [\\d](?>_?\\d)* # 100_000\n (\\.(?![^[:space:][:digit:]])(?>_?\\d)*)? # fractional part\n ([eE][-+]?\\d(?>_?\\d)*)? # 1.23e-4\n |\n 0\n (?:\n [xX]\\h(?>_?\\h)*|\n [oO]?[0-7](?>_?[0-7])*|\n [bB][01](?>_?[01])*|\n [dD]\\d(?>_?\\d)*\n ) # A base indicator can only be used with an integer\n)\\b",
+ "name": "constant.numeric.ruby"
+ },
+ {
+ "begin": ":'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.symbol.begin.ruby"
+ }
+ },
+ "comment": "symbol literal with '' delimitor",
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.symbol.end.ruby"
+ }
+ },
+ "name": "constant.other.symbol.ruby",
+ "patterns": [
+ {
+ "match": "\\\\['\\\\]",
+ "name": "constant.character.escape.ruby"
+ }
+ ]
+ },
+ {
+ "begin": ":\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.symbol.begin.ruby"
+ }
+ },
+ "comment": "symbol literal with \"\" delimitor",
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.symbol.end.ruby"
+ }
+ },
+ "name": "constant.other.symbol.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "comment": "Needs higher precidence than regular expressions.",
+ "match": "(?|=>|==|=~|!~|!=|;|$|\n if|else|elsif|then|do|end|unless|while|until|or|and\n )\n |\n $\n)",
+ "captures": {
+ "1": {
+ "name": "string.regexp.interpolated.ruby"
+ },
+ "2": {
+ "name": "punctuation.section.regexp.ruby"
+ }
+ },
+ "comment": "regular expression literal with interpolation",
+ "contentName": "string.regexp.interpolated.ruby",
+ "end": "((/[eimnosux]*))",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ }
+ ]
+ },
+ {
+ "begin": "%r{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.regexp.begin.ruby"
+ }
+ },
+ "end": "}[eimnosux]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.regexp.end.ruby"
+ }
+ },
+ "name": "string.regexp.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "include": "#nest_curly_r"
+ }
+ ]
+ },
+ {
+ "begin": "%r\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.regexp.begin.ruby"
+ }
+ },
+ "end": "][eimnosux]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.regexp.end.ruby"
+ }
+ },
+ "name": "string.regexp.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "include": "#nest_brackets_r"
+ }
+ ]
+ },
+ {
+ "begin": "%r\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.regexp.begin.ruby"
+ }
+ },
+ "end": "\\)[eimnosux]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.regexp.end.ruby"
+ }
+ },
+ "name": "string.regexp.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "include": "#nest_parens_r"
+ }
+ ]
+ },
+ {
+ "begin": "%r<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.regexp.begin.ruby"
+ }
+ },
+ "end": ">[eimnosux]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.regexp.end.ruby"
+ }
+ },
+ "name": "string.regexp.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "include": "#nest_ltgt_r"
+ }
+ ]
+ },
+ {
+ "begin": "%r([^\\w])",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.regexp.begin.ruby"
+ }
+ },
+ "end": "\\1[eimnosux]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.regexp.end.ruby"
+ }
+ },
+ "name": "string.regexp.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ }
+ ]
+ },
+ {
+ "begin": "%I\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "constant.other.symbol.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_brackets_i"
+ }
+ ]
+ },
+ {
+ "begin": "%I\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "constant.other.symbol.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_parens_i"
+ }
+ ]
+ },
+ {
+ "begin": "%I<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "constant.other.symbol.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_ltgt_i"
+ }
+ ]
+ },
+ {
+ "begin": "%I{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "constant.other.symbol.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_curly_i"
+ }
+ ]
+ },
+ {
+ "begin": "%I([^\\w])",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "\\1",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "constant.other.symbol.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "%i\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "constant.other.symbol.ruby",
+ "patterns": [
+ {
+ "match": "\\\\]|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "include": "#nest_brackets"
+ }
+ ]
+ },
+ {
+ "begin": "%i\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "constant.other.symbol.ruby",
+ "patterns": [
+ {
+ "match": "\\\\\\)|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "include": "#nest_parens"
+ }
+ ]
+ },
+ {
+ "begin": "%i<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "constant.other.symbol.ruby",
+ "patterns": [
+ {
+ "match": "\\\\>|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "include": "#nest_ltgt"
+ }
+ ]
+ },
+ {
+ "begin": "%i{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "constant.other.symbol.ruby",
+ "patterns": [
+ {
+ "match": "\\\\}|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "include": "#nest_curly"
+ }
+ ]
+ },
+ {
+ "begin": "%i([^\\w])",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "\\1",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "constant.other.symbol.ruby",
+ "patterns": [
+ {
+ "comment": "Cant be named because its not neccesarily an escape.",
+ "match": "\\\\."
+ }
+ ]
+ },
+ {
+ "begin": "%W\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_brackets_i"
+ }
+ ]
+ },
+ {
+ "begin": "%W\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_parens_i"
+ }
+ ]
+ },
+ {
+ "begin": "%W<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_ltgt_i"
+ }
+ ]
+ },
+ {
+ "begin": "%W{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_curly_i"
+ }
+ ]
+ },
+ {
+ "begin": "%W([^\\w])",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "\\1",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "%w\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.ruby",
+ "patterns": [
+ {
+ "match": "\\\\]|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "include": "#nest_brackets"
+ }
+ ]
+ },
+ {
+ "begin": "%w\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.ruby",
+ "patterns": [
+ {
+ "match": "\\\\\\)|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "include": "#nest_parens"
+ }
+ ]
+ },
+ {
+ "begin": "%w<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.ruby",
+ "patterns": [
+ {
+ "match": "\\\\>|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "include": "#nest_ltgt"
+ }
+ ]
+ },
+ {
+ "begin": "%w{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.ruby",
+ "patterns": [
+ {
+ "match": "\\\\}|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "include": "#nest_curly"
+ }
+ ]
+ },
+ {
+ "begin": "%w([^\\w])",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "\\1",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.ruby",
+ "patterns": [
+ {
+ "comment": "Cant be named because its not neccesarily an escape.",
+ "match": "\\\\."
+ }
+ ]
+ },
+ {
+ "begin": "%[Qx]?\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_parens_i"
+ }
+ ]
+ },
+ {
+ "begin": "%[Qx]?\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "end": "]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_brackets_i"
+ }
+ ]
+ },
+ {
+ "begin": "%[Qx]?{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_curly_i"
+ }
+ ]
+ },
+ {
+ "begin": "%[Qx]?<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_ltgt_i"
+ }
+ ]
+ },
+ {
+ "begin": "%[Qx]([^\\w])",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "end": "\\1",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "%([^\\w\\s=])",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "end": "\\1",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "%q\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.ruby",
+ "patterns": [
+ {
+ "match": "\\\\\\)|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "include": "#nest_parens"
+ }
+ ]
+ },
+ {
+ "begin": "%q<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.ruby",
+ "patterns": [
+ {
+ "match": "\\\\>|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "include": "#nest_ltgt"
+ }
+ ]
+ },
+ {
+ "begin": "%q\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "end": "]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.ruby",
+ "patterns": [
+ {
+ "match": "\\\\]|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "include": "#nest_brackets"
+ }
+ ]
+ },
+ {
+ "begin": "%q{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.ruby",
+ "patterns": [
+ {
+ "match": "\\\\}|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "include": "#nest_curly"
+ }
+ ]
+ },
+ {
+ "begin": "%q([^\\w])",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "end": "\\1",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.ruby",
+ "patterns": [
+ {
+ "comment": "Cant be named because its not neccesarily an escape.",
+ "match": "\\\\."
+ }
+ ]
+ },
+ {
+ "begin": "%s\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.symbol.begin.ruby"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.symbol.end.ruby"
+ }
+ },
+ "name": "constant.other.symbol.ruby",
+ "patterns": [
+ {
+ "match": "\\\\\\)|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "include": "#nest_parens"
+ }
+ ]
+ },
+ {
+ "begin": "%s<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.symbol.begin.ruby"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.symbol.end.ruby"
+ }
+ },
+ "name": "constant.other.symbol.ruby",
+ "patterns": [
+ {
+ "match": "\\\\>|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "include": "#nest_ltgt"
+ }
+ ]
+ },
+ {
+ "begin": "%s\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.symbol.begin.ruby"
+ }
+ },
+ "end": "]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.symbol.end.ruby"
+ }
+ },
+ "name": "constant.other.symbol.ruby",
+ "patterns": [
+ {
+ "match": "\\\\]|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "include": "#nest_brackets"
+ }
+ ]
+ },
+ {
+ "begin": "%s{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.symbol.begin.ruby"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.symbol.end.ruby"
+ }
+ },
+ "name": "constant.other.symbol.ruby",
+ "patterns": [
+ {
+ "match": "\\\\}|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "include": "#nest_curly"
+ }
+ ]
+ },
+ {
+ "begin": "%s([^\\w])",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.symbol.begin.ruby"
+ }
+ },
+ "end": "\\1",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.symbol.end.ruby"
+ }
+ },
+ "name": "constant.other.symbol.ruby",
+ "patterns": [
+ {
+ "comment": "Cant be named because its not neccesarily an escape.",
+ "match": "\\\\."
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.ruby"
+ }
+ },
+ "comment": "symbols",
+ "match": "(?x)\n(?\n [$a-zA-Z_]\\w*(?>[?!]|=(?![>=]))?\n |\n ===?|<=>|>[>=]?|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[]=?\n |\n @@?[a-zA-Z_]\\w*\n)",
+ "name": "constant.other.symbol.ruby"
+ },
+ {
+ "begin": "^=begin",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.ruby"
+ }
+ },
+ "comment": "multiline comments",
+ "end": "^=end",
+ "name": "comment.block.documentation.ruby"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.ruby"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.ruby"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.number-sign.ruby",
+ "patterns": [
+ {
+ "include": "#yard"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "comment": "\n\t\t\tmatches questionmark-letters.\n\n\t\t\texamples (1st alternation = hex):\n\t\t\t?\\x1 ?\\x61\n\n\t\t\texamples (2nd alternation = octal):\n\t\t\t?\\0 ?\\07 ?\\017\n\n\t\t\texamples (3rd alternation = escaped):\n\t\t\t?\\n ?\\b\n\n\t\t\texamples (4th alternation = meta-ctrl):\n\t\t\t?\\C-a ?\\M-a ?\\C-\\M-\\C-\\M-a\n\n\t\t\texamples (4th alternation = normal):\n\t\t\t?a ?A ?0 \n\t\t\t?* ?\" ?( \n\t\t\t?. ?#\n\t\t\t\n\t\t\t\n\t\t\tthe negative lookbehind prevents against matching\n\t\t\tp(42.tainted?)\n\t\t\t",
+ "match": "(?<<[-~](\"?)((?:[_\\w]+_|)HTML)\\b\\1))",
+ "comment": "Heredoc with embedded html",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.html",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)HTML)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "text.html",
+ "end": "^\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "text.html.basic"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)XML)\\b\\1))",
+ "comment": "Heredoc with embedded xml",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.xml",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)XML)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "text.xml",
+ "end": "^\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "text.xml"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)SQL)\\b\\1))",
+ "comment": "Heredoc with embedded sql",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.sql",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)SQL)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "source.sql",
+ "end": "^\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.sql"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)GRAPHQL)\\b\\1))",
+ "comment": "Heredoc with embedded GraphQL",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.graphql",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)GRAPHQL)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "source.graphql",
+ "end": "^\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.graphql"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)CSS)\\b\\1))",
+ "comment": "Heredoc with embedded css",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.css",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)CSS)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "source.css",
+ "end": "^\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.css"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)CPP)\\b\\1))",
+ "comment": "Heredoc with embedded c++",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.cpp",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)CPP)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "source.cpp",
+ "end": "^\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.cpp"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)C)\\b\\1))",
+ "comment": "Heredoc with embedded c",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.c",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)C)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "source.c",
+ "end": "^\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.c"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)(?:JS|JAVASCRIPT))\\b\\1))",
+ "comment": "Heredoc with embedded javascript",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.js",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)(?:JS|JAVASCRIPT))\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "source.js",
+ "end": "^\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.js"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)JQUERY)\\b\\1))",
+ "comment": "Heredoc with embedded jQuery javascript",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.js.jquery",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)JQUERY)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "source.js.jquery",
+ "end": "^\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.js.jquery"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)(?:SH|SHELL))\\b\\1))",
+ "comment": "Heredoc with embedded shell",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.shell",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)(?:SH|SHELL))\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "source.shell",
+ "end": "^\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.shell"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)LUA)\\b\\1))",
+ "comment": "Heredoc with embedded lua",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.lua",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)LUA)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "source.lua",
+ "end": "^\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.lua"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)RUBY)\\b\\1))",
+ "comment": "Heredoc with embedded ruby",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.ruby",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)RUBY)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "source.ruby",
+ "end": "^\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.ruby"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?>=\\s*<<(\\w+))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "end": "^\\1$",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?>((<<[-~](\\w+),\\s?)*<<[-~](\\w+)))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "comment": "heredoc with multiple inputs and indented terminator",
+ "end": "^\\s*\\4$",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?<={|{\\s|[^A-Za-z0-9_]do|^do|[^A-Za-z0-9_]do\\s|^do\\s)(\\|)",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.variable.ruby"
+ }
+ },
+ "end": "(?",
+ "name": "punctuation.separator.key-value"
+ },
+ {
+ "match": "->",
+ "name": "support.function.kernel.ruby"
+ },
+ {
+ "match": "<<=|%=|&{1,2}=|\\*=|\\*\\*=|\\+=|-=|\\^=|\\|{1,2}=|<<",
+ "name": "keyword.operator.assignment.augmented.ruby"
+ },
+ {
+ "match": "<=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?<=[ \\t])\\?",
+ "name": "keyword.operator.comparison.ruby"
+ },
+ {
+ "match": "(?>",
+ "name": "keyword.operator.other.ruby"
+ },
+ {
+ "match": ";",
+ "name": "punctuation.separator.statement.ruby"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.object.ruby"
+ },
+ {
+ "comment": "Mark as namespace separator if double colons followed by capital letter",
+ "match": "(::)\\s*(?=[A-Z])",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.namespace.ruby"
+ }
+ }
+ },
+ {
+ "comment": "Mark as method separator if double colons not followed by capital letter",
+ "match": "(\\.|::)\\s*(?![A-Z])",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.method.ruby"
+ }
+ }
+ },
+ {
+ "comment": "Must come after method and constant separators to prefer double colons",
+ "match": ":",
+ "name": "punctuation.separator.other.ruby"
+ },
+ {
+ "match": "{",
+ "name": "punctuation.section.scope.begin.ruby"
+ },
+ {
+ "match": "}",
+ "name": "punctuation.section.scope.end.ruby"
+ },
+ {
+ "match": "\\[",
+ "name": "punctuation.section.array.begin.ruby"
+ },
+ {
+ "match": "]",
+ "name": "punctuation.section.array.end.ruby"
+ },
+ {
+ "match": "\\(|\\)",
+ "name": "punctuation.section.function.ruby"
+ }
+ ],
+ "repository": {
+ "escaped_char": {
+ "match": "\\\\(?:[0-7]{1,3}|x[\\da-fA-F]{1,2}|.)",
+ "name": "constant.character.escape.ruby"
+ },
+ "heredoc": {
+ "begin": "^<<[-~]?\\w+",
+ "end": "$",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "interpolated_ruby": {
+ "patterns": [
+ {
+ "begin": "#{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.ruby"
+ }
+ },
+ "contentName": "source.ruby",
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.ruby"
+ }
+ },
+ "name": "meta.embedded.line.ruby",
+ "patterns": [
+ {
+ "include": "#nest_curly_and_self"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.ruby"
+ }
+ },
+ "match": "(#@)[a-zA-Z_]\\w*",
+ "name": "variable.other.readwrite.instance.ruby"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.ruby"
+ }
+ },
+ "match": "(#@@)[a-zA-Z_]\\w*",
+ "name": "variable.other.readwrite.class.ruby"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.ruby"
+ }
+ },
+ "match": "(#\\$)[a-zA-Z_]\\w*",
+ "name": "variable.other.readwrite.global.ruby"
+ }
+ ]
+ },
+ "nest_brackets": {
+ "begin": "\\[",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.ruby"
+ }
+ },
+ "end": "]",
+ "patterns": [
+ {
+ "include": "#nest_brackets"
+ }
+ ]
+ },
+ "nest_brackets_i": {
+ "begin": "\\[",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.ruby"
+ }
+ },
+ "end": "]",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_brackets_i"
+ }
+ ]
+ },
+ "nest_brackets_r": {
+ "begin": "\\[",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.ruby"
+ }
+ },
+ "end": "]",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "include": "#nest_brackets_r"
+ }
+ ]
+ },
+ "nest_curly": {
+ "begin": "{",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.ruby"
+ }
+ },
+ "end": "}",
+ "patterns": [
+ {
+ "include": "#nest_curly"
+ }
+ ]
+ },
+ "nest_curly_and_self": {
+ "patterns": [
+ {
+ "begin": "{",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.ruby"
+ }
+ },
+ "end": "}",
+ "patterns": [
+ {
+ "include": "#nest_curly_and_self"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "nest_curly_i": {
+ "begin": "{",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.ruby"
+ }
+ },
+ "end": "}",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_curly_i"
+ }
+ ]
+ },
+ "nest_curly_r": {
+ "begin": "{",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.ruby"
+ }
+ },
+ "end": "}",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "include": "#nest_curly_r"
+ }
+ ]
+ },
+ "nest_ltgt": {
+ "begin": "<",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.ruby"
+ }
+ },
+ "end": ">",
+ "patterns": [
+ {
+ "include": "#nest_ltgt"
+ }
+ ]
+ },
+ "nest_ltgt_i": {
+ "begin": "<",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.ruby"
+ }
+ },
+ "end": ">",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_ltgt_i"
+ }
+ ]
+ },
+ "nest_ltgt_r": {
+ "begin": "<",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.ruby"
+ }
+ },
+ "end": ">",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "include": "#nest_ltgt_r"
+ }
+ ]
+ },
+ "nest_parens": {
+ "begin": "\\(",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.ruby"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#nest_parens"
+ }
+ ]
+ },
+ "nest_parens_i": {
+ "begin": "\\(",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.ruby"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_parens_i"
+ }
+ ]
+ },
+ "nest_parens_r": {
+ "begin": "\\(",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.ruby"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "include": "#nest_parens_r"
+ }
+ ]
+ },
+ "regex_sub": {
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.arbitrary-repetition.ruby"
+ },
+ "3": {
+ "name": "punctuation.definition.arbitrary-repetition.ruby"
+ }
+ },
+ "match": "({)\\d+(,\\d+)?(})",
+ "name": "string.regexp.arbitrary-repetition.ruby"
+ },
+ {
+ "begin": "\\[(?:\\^?])?",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.character-class.ruby"
+ }
+ },
+ "end": "]",
+ "name": "string.regexp.character-class.ruby",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "\\(\\?#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.ruby"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.ruby"
+ }
+ },
+ "name": "comment.line.number-sign.ruby",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.group.ruby"
+ }
+ },
+ "end": "\\)",
+ "name": "string.regexp.group.ruby",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=^|\\s)(#)\\s(?=[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.ruby"
+ }
+ },
+ "comment": "We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.",
+ "end": "$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.ruby"
+ }
+ },
+ "name": "comment.line.number-sign.ruby"
+ }
+ ]
+ },
+ "yard": {
+ "name": "comment.line.yard.ruby",
+ "patterns": [
+ {
+ "include": "#yard_comment"
+ },
+ {
+ "include": "#yard_name_types"
+ },
+ {
+ "include": "#yard_tag"
+ },
+ {
+ "include": "#yard_types"
+ },
+ {
+ "include": "#yard_directive"
+ }
+ ]
+ },
+ "yard_comment": {
+ "comment": "For YARD tags that follow the tag-comment pattern",
+ "match": "(@)(abstract|api|author|deprecated|example|note|overload|since|todo|version)(?=\\s)(.*)$",
+ "captures": {
+ "1": {
+ "name": "comment.line.keyword.punctuation.yard.ruby"
+ },
+ "2": {
+ "name": "comment.line.keyword.yard.ruby"
+ },
+ "3": {
+ "name": "comment.line.string.yard.ruby"
+ }
+ }
+ },
+ "yard_name_types": {
+ "comment": "For YARD tags that follow the tag-name-types-comment pattern",
+ "match": "(@)(attr|attr_reader|attr_writer|option|param|see|yieldparam)(?=\\s)(\\s+([a-z_][a-zA-Z_]*))?(\\s+((\\[).+(])))?(.*)$",
+ "captures": {
+ "1": {
+ "name": "comment.line.keyword.punctuation.yard.ruby"
+ },
+ "2": {
+ "name": "comment.line.keyword.yard.ruby"
+ },
+ "3": {
+ "name": "comment.line.yard.ruby"
+ },
+ "4": {
+ "name": "comment.line.parameter.yard.ruby"
+ },
+ "5": {
+ "name": "comment.line.yard.ruby"
+ },
+ "6": {
+ "name": "comment.line.type.yard.ruby"
+ },
+ "7": {
+ "name": "comment.line.punctuation.yard.ruby"
+ },
+ "8": {
+ "name": "comment.line.punctuation.yard.ruby"
+ },
+ "9": {
+ "name": "comment.line.string.yard.ruby"
+ }
+ }
+ },
+ "yard_tag": {
+ "comment": "For YARD tags that are just the tag",
+ "match": "(@)(private)$",
+ "captures": {
+ "1": {
+ "name": "comment.line.keyword.punctuation.yard.ruby"
+ },
+ "2": {
+ "name": "comment.line.keyword.yard.ruby"
+ }
+ }
+ },
+ "yard_types": {
+ "comment": "For YARD tags that follow the tag-types-comment pattern",
+ "match": "(@)(raise|return|yield(?:return)?)(?=\\s)(\\s+((\\[).+(])))?(.*)$",
+ "captures": {
+ "1": {
+ "name": "comment.line.keyword.punctuation.yard.ruby"
+ },
+ "2": {
+ "name": "comment.line.keyword.yard.ruby"
+ },
+ "3": {
+ "name": "comment.line.yard.ruby"
+ },
+ "4": {
+ "name": "comment.line.type.yard.ruby"
+ },
+ "5": {
+ "name": "comment.line.punctuation.yard.ruby"
+ },
+ "6": {
+ "name": "comment.line.punctuation.yard.ruby"
+ },
+ "7": {
+ "name": "comment.line.string.yard.ruby"
+ }
+ }
+ },
+ "yard_directive": {
+ "comment": "For YARD directives",
+ "match": "(@!)(attribute|endgroup|group|macro|method|parse|scope|visibility)(\\s+((\\[).+(])))?(?=\\s)(.*)$",
+ "captures": {
+ "1": {
+ "name": "comment.line.keyword.punctuation.yard.ruby"
+ },
+ "2": {
+ "name": "comment.line.keyword.yard.ruby"
+ },
+ "3": {
+ "name": "comment.line.yard.ruby"
+ },
+ "4": {
+ "name": "comment.line.type.yard.ruby"
+ },
+ "5": {
+ "name": "comment.line.punctuation.yard.ruby"
+ },
+ "6": {
+ "name": "comment.line.punctuation.yard.ruby"
+ },
+ "7": {
+ "name": "comment.line.string.yard.ruby"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/syntaxes/ruby.tmLanguage b/syntaxes/ruby.tmLanguage
deleted file mode 100644
index aa7dcf78a..000000000
--- a/syntaxes/ruby.tmLanguage
+++ /dev/null
@@ -1,3752 +0,0 @@
-
-
-
-
-
- comment
-
- TODO: unresolved issues
-
- text:
- "p << end
- print me!
- end"
- symptoms:
- not recognized as a heredoc
- solution:
- there is no way to distinguish perfectly between the << operator and the start
- of a heredoc. Currently, we require assignment to recognize a heredoc. More
- refinement is possible.
- • Heredocs with indented terminators (<<-) are always distinguishable, however.
- • Nested heredocs are not really supportable at present
-
- text:
- print <<-'THERE'
- This is single quoted.
- The above used #{Time.now}
- THERE
- symtoms:
- From Programming Ruby p306; should be a non-interpolated heredoc.
-
- text:
- "a\332a"
- symptoms:
- '\332' is not recognized as slash3.. which should be octal 332.
- solution:
- plain regexp.. should be easy.
-
- text:
- val?(a):p(b)
- val?'a':'b'
- symptoms:
- ':p' is recognized as a symbol.. its 2 things ':' and 'p'.
- :'b' has same problem.
- solution:
- ternary operator rule, precedOence stuff, symbol rule.
- but also consider 'a.b?(:c)' ??
-
- fileTypes
-
- rb
- rbx
- rjs
- Rakefile
- rake
- cgi
- fcgi
- gemspec
- irbrc
- capfile
- ru
- prawn
- jbuilder
- Gemfile
- Guardfile
- Vagrantfile
-
- firstLineMatch
- ^#!/.*\bruby
- foldingStartMarker
- (?x)^
- (\s*+
- (module|class|def(?!.*\bend\s*$)
- |unless|if
- |case
- |begin
- |for|while|until
- |^=begin
- |( "(\\.|[^"])*+" # eat a double quoted string
- | '(\\.|[^'])*+' # eat a single quoted string
- | [^#"'] # eat all but comments and strings
- )*
- ( \s (do|begin|case)
- | (?<!\$)[-+=&|*/~%^<>~] \s*+ (if|unless)
- )
- )\b
- (?! [^;]*+ ; .*? \bend\b )
- |( "(\\.|[^"])*+" # eat a double quoted string
- | '(\\.|[^'])*+' # eat a single quoted string
- | [^#"'] # eat all but comments and strings
- )*
- ( \{ (?! [^}]*+ \} )
- | \[ (?! [^\]]*+ \] )
- )
- ).*$
- | [#] .*? \(fold\) \s*+ $ # Sune’s special marker
-
- foldingStopMarker
- (?x)
- ( (^|;) \s*+ end \s*+ ([#].*)? $
- | (^|;) \s*+ end \. .* $
- | ^ \s*+ [}\]] ,? \s*+ ([#].*)? $
- | [#] .*? \(end\) \s*+ $ # Sune’s special marker
- | ^=end
- )
- keyEquivalent
- ^~R
- name
- Ruby
- patterns
-
-
- captures
-
- 1
-
- name
- keyword.control.class.ruby
-
- 2
-
- name
- entity.name.type.class.ruby
-
- 4
-
- name
- entity.other.inherited-class.ruby
-
- 5
-
- name
- punctuation.separator.inheritance.ruby
-
- 6
-
- name
- variable.other.object.ruby
-
- 7
-
- name
- punctuation.definition.variable.ruby
-
-
- match
- ^\s*(class)\s+(([.a-zA-Z0-9_:]+(\s*(<)\s*[.a-zA-Z0-9_:]+)?)|((<<)\s*[.a-zA-Z0-9_:]+))
- name
- meta.class.ruby
-
-
- captures
-
- 1
-
- name
- keyword.control.module.ruby
-
- 2
-
- name
- entity.name.type.module.ruby
-
- 3
-
- name
- entity.other.inherited-class.module.first.ruby
-
- 4
-
- name
- punctuation.separator.inheritance.ruby
-
- 5
-
- name
- entity.other.inherited-class.module.second.ruby
-
- 6
-
- name
- punctuation.separator.inheritance.ruby
-
- 7
-
- name
- entity.other.inherited-class.module.third.ruby
-
- 8
-
- name
- punctuation.separator.inheritance.ruby
-
-
- match
- ^\s*(module)\s+(([A-Z]\w*(::))?([A-Z]\w*(::))?([A-Z]\w*(::))*[A-Z]\w*)
- name
- meta.module.ruby
-
-
- comment
- else if is a common mistake carried over from other languages. it works if you put in a second end, but it’s never what you want.
- match
- (?<!\.)\belse(\s)+if\b
- name
- invalid.deprecated.ruby
-
-
- captures
-
- 1
-
- name
- punctuation.definition.constant.ruby
-
-
- comment
- symbols as hash key (1.9 syntax)
- match
- (?>[a-zA-Z_]\w*(?>[?!])?)(:)(?!:)
- name
- constant.language.symbol.hashkey.ruby
-
-
- captures
-
- 1
-
- name
- punctuation.definition.constant.ruby
-
-
- comment
- symbols as hash key (1.8 syntax)
- match
- (?<!:)(:)(?>[a-zA-Z_]\w*(?>[?!])?)(?=\s*=>)
- name
- constant.language.symbol.hashkey.ruby
-
-
- comment
- everything being a reserved word, not a value and needing a 'end' is a..
- match
- (?<!\.)\b(BEGIN|begin|case|class|else|elsif|END|end|ensure|for|if|in|module|rescue|then|unless|until|when|while)\b(?![?!])
- name
- keyword.control.ruby
-
-
- comment
- contextual smart pair support for block parameters
- match
- (?<!\.)\bdo\b\s*
- name
- keyword.control.start-block.ruby
-
-
- comment
- contextual smart pair support
- match
- (?<=\{)(\s+)
- name
- meta.syntax.ruby.start-block
-
-
- comment
- as above, just doesn't need a 'end' and does a logic operation
- match
- (?<!\.)\b(and|not|or)\b
- name
- keyword.operator.logical.ruby
-
-
- comment
- just as above but being not a logical operation
- match
- (?<!\.)\b(alias|alias_method|break|next|redo|retry|return|super|undef|yield)\b(?![?!])|\bdefined\?|\bblock_given\?
- name
- keyword.control.pseudo-method.ruby
-
-
- match
- \b(nil|true|false)\b(?![?!])
- name
- constant.language.ruby
-
-
- match
- \b(__(FILE|LINE)__|self)\b(?![?!])
- name
- variable.language.ruby
-
-
- comment
- everything being a method but having a special function is a..
- match
- \b(initialize|new|loop|include|extend|prepend|raise|attr_reader|attr_writer|attr_accessor|attr|catch|throw|private|module_function|public|protected|delegate)\b(?![?!])
- name
- keyword.other.special-method.ruby
-
-
- begin
- \b(require|require_relative|gem|import|java_import)\b
- captures
-
- 1
-
- name
- keyword.ruby
-
-
- end
- $|(?=#|\})
- name
- meta.require.ruby
- patterns
-
-
- include
- $self
-
-
-
-
- captures
-
- 1
-
- name
- punctuation.definition.variable.ruby
-
-
- match
- (@)[a-zA-Z_]\w*
- name
- variable.other.readwrite.instance.ruby
-
-
- captures
-
- 1
-
- name
- punctuation.definition.variable.ruby
-
-
- match
- (@@)[a-zA-Z_]\w*
- name
- variable.other.readwrite.class.ruby
-
-
- captures
-
- 1
-
- name
- punctuation.definition.variable.ruby
-
-
- match
- (\$)[a-zA-Z_]\w*
- name
- variable.other.readwrite.global.ruby
-
-
- captures
-
- 1
-
- name
- punctuation.definition.variable.ruby
-
-
- match
- (\$)(!|@|&|`|'|\+|\d+|~|=|/|\\|,|;|\.|<|>|_|\*|\$|\?|:|"|-[0adFiIlpv])
- name
- variable.other.readwrite.global.pre-defined.ruby
-
-
- begin
- \b(ENV)\[
- beginCaptures
-
- 1
-
- name
- variable.other.constant.ruby
-
-
- end
- \]
- name
- meta.environment-variable.ruby
- patterns
-
-
- include
- $self
-
-
-
-
- match
- \b[A-Z]\w*(?=((\.|::)[A-Za-z]|\[))
- name
- support.class.ruby
-
-
- match
- \b[A-Z]\w*\b
- name
- variable.other.constant.ruby
-
-
- begin
- (?x)
- (?=def\b) # an optimization to help Oniguruma fail fast
- (?<=^|\s)(def)\s+ # the def keyword
- ( (?>[a-zA-Z_]\w*(?>\.|::))? # a method name prefix
- (?>[a-zA-Z_]\w*(?>[?!]|=(?!>))? # the method name
- |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?) ) # …or an operator method
- \s*(\() # the openning parenthesis for arguments
-
- beginCaptures
-
- 1
-
- name
- keyword.control.def.ruby
-
- 2
-
- name
- entity.name.function.ruby
-
- 3
-
- name
- punctuation.definition.parameters.ruby
-
-
- comment
- the method pattern comes from the symbol pattern, see there for a explaination
- contentName
- variable.parameter.function.ruby
- end
- \)
- endCaptures
-
- 0
-
- name
- punctuation.definition.parameters.ruby
-
-
- name
- meta.function.method.with-arguments.ruby
- patterns
-
-
- begin
- (?![\s,)])
- end
- (?=[,)])
- patterns
-
-
- captures
-
- 1
-
- name
- storage.type.variable.ruby
-
- 2
-
- name
- variable.parameter.function.ruby
-
-
- match
- \G([&*]?)([_a-zA-Z][_a-zA-Z0-9]*)
-
-
- include
- $self
-
-
-
-
-
-
- begin
- (?x)
- (?=def\b) # an optimization to help Oniguruma fail fast
- (?<=^|\s)(def)\s+ # the def keyword
- ( (?>[a-zA-Z_]\w*(?>\.|::))? # a method name prefix
- (?>[a-zA-Z_]\w*(?>[?!]|=(?!>))? # the method name
- |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?) ) # …or an operator method
- [ \t] # the space separating the arguments
- (?=[ \t]*[^\s#;]) # make sure arguments and not a comment follow
-
- beginCaptures
-
- 1
-
- name
- keyword.control.def.ruby
-
- 2
-
- name
- entity.name.function.ruby
-
-
- comment
- same as the previous rule, but without parentheses around the arguments
- contentName
- variable.parameter.function.ruby
- end
- $
- name
- meta.function.method.with-arguments.ruby
- patterns
-
-
- begin
- (?![\s,])
- end
- (?=,|$)
- patterns
-
-
- captures
-
- 1
-
- name
- punctuation.definition.variable.ruby
-
-
- match
- \G([&*]?)[_a-zA-Z][_a-zA-Z0-9]*
- name
- variable.parameter.function.ruby
-
-
- include
- $self
-
-
-
-
-
-
- captures
-
- 1
-
- name
- keyword.control.def.ruby
-
- 3
-
- name
- entity.name.function.ruby
-
-
- comment
- the optional name is just to catch the def also without a method-name
- match
- (?x)
- (?=def\b) # an optimization to help Oniguruma fail fast
- (?<=^|\s)(def)\b # the def keyword
- ( \s+ # an optional group of whitespace followed by…
- ( (?>[a-zA-Z_]\w*(?>\.|::))? # a method name prefix
- (?>[a-zA-Z_]\w*(?>[?!]|=(?!>))? # the method name
- |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?) ) )? # …or an operator method
-
- name
- meta.function.method.without-arguments.ruby
-
-
- match
- \b(0[xX]\h(?>_?\h)*|\d(?>_?\d)*(\.(?![^[:space:][:digit:]])(?>_?\d)*)?([eE][-+]?\d(?>_?\d)*)?|0[bB][01]+)\b
- name
- constant.numeric.ruby
-
-
- begin
- :'
- captures
-
- 0
-
- name
- punctuation.definition.constant.ruby
-
-
- end
- '
- name
- constant.language.symbol.single-quoted.ruby
- patterns
-
-
- match
- \\['\\]
- name
- constant.character.escape.ruby
-
-
-
-
- begin
- :"
- captures
-
- 0
-
- name
- punctuation.definition.constant.ruby
-
-
- end
- "
- name
- constant.language.symbol.double-quoted.ruby
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
-
-
- comment
- Needs higher precidence than regular expressions.
- match
- (?<!\()/=
- name
- keyword.operator.assignment.augmented.ruby
-
-
- begin
- '
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- single quoted string (does not allow interpolation)
- end
- '
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.quoted.single.ruby
- patterns
-
-
- match
- \\'|\\\\
- name
- constant.character.escape.ruby
-
-
-
-
- begin
- "
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- double quoted string (allows for interpolation)
- end
- "
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.quoted.double.ruby
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
-
-
- begin
- `
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- execute string (allows for interpolation)
- end
- `
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.interpolated.ruby
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
-
-
- begin
- %x\{
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- execute string (allow for interpolation)
- end
- \}
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.interpolated.ruby
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
- include
- #nest_curly_i
-
-
-
-
- begin
- %x\[
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- execute string (allow for interpolation)
- end
- \]
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.interpolated.ruby
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
- include
- #nest_brackets_i
-
-
-
-
- begin
- %x\<
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- execute string (allow for interpolation)
- end
- \>
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.interpolated.ruby
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
- include
- #nest_ltgt_i
-
-
-
-
- begin
- %x\(
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- execute string (allow for interpolation)
- end
- \)
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.interpolated.ruby
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
- include
- #nest_parens_i
-
-
-
-
- begin
- %x([^\w])
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- execute string (allow for interpolation)
- end
- \1
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.interpolated.ruby
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
-
-
- begin
- (?x)
- (?:
- ^ # beginning of line
- | (?<= # or look-behind on:
- [=>~(?:\[,|&;]
- | [\s;]if\s # keywords
- | [\s;]elsif\s
- | [\s;]while\s
- | [\s;]unless\s
- | [\s;]when\s
- | [\s;]assert_match\s
- | [\s;]or\s # boolean opperators
- | [\s;]and\s
- | [\s;]not\s
- | [\s.]index\s # methods
- | [\s.]scan\s
- | [\s.]sub\s
- | [\s.]sub!\s
- | [\s.]gsub\s
- | [\s.]gsub!\s
- | [\s.]match\s
- )
- | (?<= # or a look-behind with line anchor:
- ^when\s # duplication necessary due to limits of regex
- | ^if\s
- | ^elsif\s
- | ^while\s
- | ^unless\s
- )
- )
- \s*((/))(?![*+{}?])
-
- captures
-
- 1
-
- name
- string.regexp.classic.ruby
-
- 2
-
- name
- punctuation.definition.string.ruby
-
-
- comment
- regular expressions (normal)
- we only start a regexp if the character before it (excluding whitespace)
- is what we think is before a regexp
-
- contentName
- string.regexp.classic.ruby
- end
- ((/[eimnosux]*))
- patterns
-
-
- include
- #regex_sub
-
-
-
-
- begin
- %r\{
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- regular expressions (literal)
- end
- \}[eimnosux]*
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.regexp.mod-r.ruby
- patterns
-
-
- include
- #regex_sub
-
-
- include
- #nest_curly_r
-
-
-
-
- begin
- %r\[
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- regular expressions (literal)
- end
- \][eimnosux]*
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.regexp.mod-r.ruby
- patterns
-
-
- include
- #regex_sub
-
-
- include
- #nest_brackets_r
-
-
-
-
- begin
- %r\(
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- regular expressions (literal)
- end
- \)[eimnosux]*
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.regexp.mod-r.ruby
- patterns
-
-
- include
- #regex_sub
-
-
- include
- #nest_parens_r
-
-
-
-
- begin
- %r\<
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- regular expressions (literal)
- end
- \>[eimnosux]*
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.regexp.mod-r.ruby
- patterns
-
-
- include
- #regex_sub
-
-
- include
- #nest_ltgt_r
-
-
-
-
- begin
- %r([^\w])
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- regular expressions (literal)
- end
- \1[eimnosux]*
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.regexp.mod-r.ruby
- patterns
-
-
- include
- #regex_sub
-
-
-
-
- begin
- %[QWR]?\(
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- literal capable of interpolation ()
- end
- \)
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.quoted.other.literal.upper.ruby
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
- include
- #nest_parens_i
-
-
-
-
- begin
- %[QWR]?\[
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- literal capable of interpolation []
- end
- \]
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.quoted.other.literal.upper.ruby
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
- include
- #nest_brackets_i
-
-
-
-
- begin
- %[QWR]?\<
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- literal capable of interpolation <>
- end
- \>
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.quoted.other.literal.upper.ruby
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
- include
- #nest_ltgt_i
-
-
-
-
- begin
- %[QWR]?\{
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- literal capable of interpolation -- {}
- end
- \}
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.quoted.double.ruby.mod
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
- include
- #nest_curly_i
-
-
-
-
- begin
- %[QWR]([^\w])
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- literal capable of interpolation -- wildcard
- end
- \1
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.quoted.other.literal.upper.ruby
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
-
-
- begin
- %([^\w\s=])
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- literal capable of interpolation -- wildcard
- end
- \1
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.quoted.other.literal.other.ruby
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
-
-
- begin
- %[qws]\(
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- literal incapable of interpolation -- ()
- end
- \)
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.quoted.other.literal.lower.ruby
- patterns
-
-
- match
- \\\)|\\\\
- name
- constant.character.escape.ruby
-
-
- include
- #nest_parens
-
-
-
-
- begin
- %[qws]\<
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- literal incapable of interpolation -- <>
- end
- \>
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.quoted.other.literal.lower.ruby
- patterns
-
-
- match
- \\\>|\\\\
- name
- constant.character.escape.ruby
-
-
- include
- #nest_ltgt
-
-
-
-
- begin
- %[qws]\[
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- literal incapable of interpolation -- []
- end
- \]
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.quoted.other.literal.lower.ruby
- patterns
-
-
- match
- \\\]|\\\\
- name
- constant.character.escape.ruby
-
-
- include
- #nest_brackets
-
-
-
-
- begin
- %[qws]\{
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- literal incapable of interpolation -- {}
- end
- \}
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.quoted.other.literal.lower.ruby
- patterns
-
-
- match
- \\\}|\\\\
- name
- constant.character.escape.ruby
-
-
- include
- #nest_curly
-
-
-
-
- begin
- %[qws]([^\w])
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- literal incapable of interpolation -- wildcard
- end
- \1
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.quoted.other.literal.lower.ruby
- patterns
-
-
- comment
- Cant be named because its not neccesarily an escape.
- match
- \\.
-
-
-
-
- captures
-
- 1
-
- name
- punctuation.definition.constant.ruby
-
-
- comment
- symbols
- match
- (?<!:)(:)(?>[a-zA-Z_]\w*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<[<=]?|<=>|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?|@@?[a-zA-Z_]\w*)
- name
- constant.language.symbol.ruby
-
-
- begin
- %I\{
- beginCaptures
-
- 0
-
- name
- punctuation.definition.constant.begin.ruby
-
-
- comment
- array of symbols (allow for interpolation)
- end
- \}
- endCaptures
-
- 0
-
- name
- punctuation.definition.constant.end.ruby
-
-
- name
- constant.language.symbol.ruby
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
- include
- #nest_curly_i
-
-
-
-
- begin
- %I\(
- beginCaptures
-
- 0
-
- name
- punctuation.definition.constant.begin.ruby
-
-
- comment
- array of symbols (allow for interpolation)
- end
- \)
- endCaptures
-
- 0
-
- name
- punctuation.definition.constant.end.ruby
-
-
- name
- constant.language.symbol.ruby
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
- include
- #nest_parens_i
-
-
-
-
- begin
- %I\[
- beginCaptures
-
- 0
-
- name
- punctuation.definition.constant.begin.ruby
-
-
- comment
- array of symbols (allow for interpolation)
- end
- \]
- endCaptures
-
- 0
-
- name
- punctuation.definition.constant.end.ruby
-
-
- name
- constant.language.symbol.ruby
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
- include
- #nest_brackets_i
-
-
-
-
- begin
- %I\<
- beginCaptures
-
- 0
-
- name
- punctuation.definition.constant.begin.ruby
-
-
- comment
- array of symbols (allow for interpolation)
- end
- \>
- endCaptures
-
- 0
-
- name
- punctuation.definition.constant.end.ruby
-
-
- name
- constant.language.symbol.ruby
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
- include
- #nest_ltgt_i
-
-
-
-
- begin
- %I([^\w])
- beginCaptures
-
- 0
-
- name
- punctuation.definition.constant.begin.ruby
-
-
- comment
- array of symbols (allow for interpolation)
- end
- \1
- endCaptures
-
- 0
-
- name
- punctuation.definition.constant.end.ruby
-
-
- name
- constant.language.symbol.ruby
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
-
-
- begin
- %i\(
- beginCaptures
-
- 0
-
- name
- punctuation.definition.symbol.begin.ruby
-
-
- comment
- literal incapable of interpolation -- ()
- end
- \)
- endCaptures
-
- 0
-
- name
- punctuation.definition.symbol.end.ruby
-
-
- name
- constant.language.symbol.ruby
- patterns
-
-
- match
- \\\)|\\\\
- name
- constant.character.escape.ruby
-
-
- include
- #nest_parens
-
-
-
-
- begin
- %i\<
- beginCaptures
-
- 0
-
- name
- punctuation.definition.symbol.begin.ruby
-
-
- comment
- literal incapable of interpolation -- <>
- end
- \>
- endCaptures
-
- 0
-
- name
- punctuation.definition.symbol.end.ruby
-
-
- name
- constant.language.symbol.ruby
- patterns
-
-
- match
- \\\>|\\\\
- name
- constant.character.escape.ruby
-
-
- include
- #nest_ltgt
-
-
-
-
- begin
- %i\[
- beginCaptures
-
- 0
-
- name
- punctuation.definition.symbol.begin.ruby
-
-
- comment
- literal incapable of interpolation -- []
- end
- \]
- endCaptures
-
- 0
-
- name
- punctuation.definition.symbol.end.ruby
-
-
- name
- constant.language.symbol.ruby
- patterns
-
-
- match
- \\\]|\\\\
- name
- constant.character.escape.ruby
-
-
- include
- #nest_brackets
-
-
-
-
- begin
- %i\{
- beginCaptures
-
- 0
-
- name
- punctuation.definition.symbol.begin.ruby
-
-
- comment
- literal incapable of interpolation -- {}
- end
- \}
- endCaptures
-
- 0
-
- name
- punctuation.definition.symbol.end.ruby
-
-
- name
- constant.language.symbol.ruby
- patterns
-
-
- match
- \\\}|\\\\
- name
- constant.character.escape.ruby
-
-
- include
- #nest_curly
-
-
-
-
- begin
- %i([^\w])
- beginCaptures
-
- 0
-
- name
- punctuation.definition.symbol.begin.ruby
-
-
- comment
- array of symbols incapable of interpolation -- wildcard
- end
- \1
- endCaptures
-
- 0
-
- name
- punctuation.definition.symbol.end.ruby
-
-
- name
- constant.language.symbol.ruby
- patterns
-
-
- comment
- Cant be named because its not neccesarily an escape.
- match
- \\.
-
-
-
-
- captures
-
- 1
-
- name
- punctuation.definition.constant.ruby
-
-
- comment
- symbols
- match
- (?>[a-zA-Z_]\w*(?>[?!])?)(:)(?!:)
- name
- constant.language.symbol.ruby.19syntax
-
-
- begin
- ^=begin
- captures
-
- 0
-
- name
- punctuation.definition.comment.ruby
-
-
- comment
- multiline comments
- end
- ^=end
- name
- comment.block.documentation.ruby
-
-
- begin
- (^[ \t]+)?(?=#)
- beginCaptures
-
- 1
-
- name
- punctuation.whitespace.comment.leading.ruby
-
-
- end
- (?!\G)
- patterns
-
-
- begin
- #
- beginCaptures
-
- 0
-
- name
- punctuation.definition.comment.ruby
-
-
- end
- \n
- name
- comment.line.number-sign.ruby
-
-
-
-
- comment
-
- matches questionmark-letters.
-
- examples (1st alternation = hex):
- ?\x1 ?\x61
-
- examples (2nd alternation = octal):
- ?\0 ?\07 ?\017
-
- examples (3rd alternation = escaped):
- ?\n ?\b
-
- examples (4th alternation = meta-ctrl):
- ?\C-a ?\M-a ?\C-\M-\C-\M-a
-
- examples (4th alternation = normal):
- ?a ?A ?0
- ?* ?" ?(
- ?. ?#
-
-
- the negative lookbehind prevents against matching
- p(42.tainted?)
-
- match
- (?<!\w)\?(\\(x\h{1,2}(?!\h)\b|0[0-7]{0,2}(?![0-7])\b|[^x0MC])|(\\[MC]-)+\w|[^\s\\])
- name
- constant.numeric.ruby
-
-
- begin
- ^__END__\n
- captures
-
- 0
-
- name
- string.unquoted.program-block.ruby
-
-
- comment
- __END__ marker
- contentName
- text.plain
- end
- (?=not)impossible
- patterns
-
-
- begin
- (?=<?xml|<(?i:html\b)|!DOCTYPE (?i:html\b))
- end
- (?=not)impossible
- name
- text.html.embedded.ruby
- patterns
-
-
- include
- text.html.basic
-
-
-
-
-
-
- begin
- (?=(?><<[-~]("?)((?:[_\w]+_|)HTML)\b\1))
- comment
- Heredoc with embedded html
- end
- (?!\G)
- name
- meta.embedded.block.html
- patterns
-
-
- begin
- (?><<[-~]("?)((?:[_\w]+_|)HTML)\b\1)
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- contentName
- text.html
- end
- \s*\2$\n?
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.unquoted.heredoc.ruby
- patterns
-
-
- include
- #heredoc
-
-
- include
- #interpolated_ruby
-
-
- include
- text.html.basic
-
-
- include
- #escaped_char
-
-
-
-
-
-
- begin
- (?=(?><<[-~]("?)((?:[_\w]+_|)SQL)\b\1))
- comment
- Heredoc with embedded sql
- end
- (?!\G)
- name
- meta.embedded.block.sql
- patterns
-
-
- begin
- (?><<[-~]("?)((?:[_\w]+_|)SQL)\b\1)
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- contentName
- source.sql
- end
- \s*\2$\n?
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.unquoted.heredoc.ruby
- patterns
-
-
- include
- #heredoc
-
-
- include
- #interpolated_ruby
-
-
- include
- source.sql
-
-
- include
- #escaped_char
-
-
-
-
-
-
- begin
- (?=(?><<[-~]("?)((?:[_\w]+_|)CSS)\b\1))
- comment
- Heredoc with embedded css
- end
- (?!\G)
- name
- meta.embedded.block.css
- patterns
-
-
- begin
- (?><<[-~]("?)((?:[_\w]+_|)CSS)\b\1)
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- contentName
- source.css
- end
- \s*\2$\n?
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.unquoted.heredoc.ruby
- patterns
-
-
- include
- #heredoc
-
-
- include
- #interpolated_ruby
-
-
- include
- source.css
-
-
- include
- #escaped_char
-
-
-
-
-
-
- begin
- (?=(?><<[-~]("?)((?:[_\w]+_|)CPP)\b\1))
- comment
- Heredoc with embedded c++
- end
- (?!\G)
- name
- meta.embedded.block.c++
- patterns
-
-
- begin
- (?><<[-~]("?)((?:[_\w]+_|)CPP)\b\1)
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- contentName
- source.c++
- end
- \s*\2$\n?
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.unquoted.heredoc.ruby
- patterns
-
-
- include
- #heredoc
-
-
- include
- #interpolated_ruby
-
-
- include
- source.c++
-
-
- include
- #escaped_char
-
-
-
-
-
-
- begin
- (?=(?><<[-~]("?)((?:[_\w]+_|)C)\b\1))
- comment
- Heredoc with embedded c
- end
- (?!\G)
- name
- meta.embedded.block.c
- patterns
-
-
- begin
- (?><<[-~]("?)((?:[_\w]+_|)C)\b\1)
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- contentName
- source.c
- end
- \s*\2$\n?
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.unquoted.heredoc.ruby
- patterns
-
-
- include
- #heredoc
-
-
- include
- #interpolated_ruby
-
-
- include
- source.c
-
-
- include
- #escaped_char
-
-
-
-
-
-
- begin
- (?=(?><<[-~]("?)((?:[_\w]+_|)(?:JS|JAVASCRIPT))\b\1))
- comment
- Heredoc with embedded javascript
- end
- (?!\G)
- name
- meta.embedded.block.js
- patterns
-
-
- begin
- (?><<[-~]("?)((?:[_\w]+_|)(?:JS|JAVASCRIPT))\b\1)
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- contentName
- source.js
- end
- \s*\2$\n?
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.unquoted.heredoc.ruby
- patterns
-
-
- include
- #heredoc
-
-
- include
- #interpolated_ruby
-
-
- include
- source.js
-
-
- include
- #escaped_char
-
-
-
-
-
-
- begin
- (?=(?><<[-~]("?)((?:[_\w]+_|)JQUERY)\b\1))
- comment
- Heredoc with embedded jQuery javascript
- end
- (?!\G)
- name
- meta.embedded.block.js.jquery
- patterns
-
-
- begin
- (?><<[-~]("?)((?:[_\w]+_|)JQUERY)\b\1)
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- contentName
- source.js.jquery
- end
- \s*\2$\n?
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.unquoted.heredoc.ruby
- patterns
-
-
- include
- #heredoc
-
-
- include
- #interpolated_ruby
-
-
- include
- source.js.jquery
-
-
- include
- #escaped_char
-
-
-
-
-
-
- begin
- (?=(?><<[-~]("?)((?:[_\w]+_|)(?:SH|SHELL))\b\1))
- comment
- Heredoc with embedded shell
- end
- (?!\G)
- name
- meta.embedded.block.shell
- patterns
-
-
- begin
- (?><<[-~]("?)((?:[_\w]+_|)(?:SH|SHELL))\b\1)
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- contentName
- source.shell
- end
- \s*\2$\n?
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.unquoted.heredoc.ruby
- patterns
-
-
- include
- #heredoc
-
-
- include
- #interpolated_ruby
-
-
- include
- source.shell
-
-
- include
- #escaped_char
-
-
-
-
-
-
- begin
- (?=(?><<[-~]("?)((?:[_\w]+_|)LUA)\b\1))
- comment
- Heredoc with embedded lua
- end
- (?!\G)
- name
- meta.embedded.block.lua
- patterns
-
-
- begin
- (?><<[-~]("?)((?:[_\w]+_|)LUA)\b\1)
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- contentName
- source.lua
- end
- \s*\2$\n?
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.unquoted.heredoc.ruby
- patterns
-
-
- include
- #heredoc
-
-
- include
- #interpolated_ruby
-
-
- include
- source.lua
-
-
- include
- #escaped_char
-
-
-
-
-
-
- begin
- (?=(?><<[-~]("?)((?:[_\w]+_|)RUBY)\b\1))
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- Heredoc with embedded ruby
- end
- ^\1$
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.unquoted.heredoc.ruby
- patterns
-
-
- include
- #heredoc
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
-
-
- begin
- (?><<[-~](\w+))
- beginCaptures
-
- 0
-
- name
- punctuation.definition.string.begin.ruby
-
-
- comment
- heredoc with indented terminator
- end
- \s*\1$
- endCaptures
-
- 0
-
- name
- punctuation.definition.string.end.ruby
-
-
- name
- string.unquoted.heredoc.ruby
- patterns
-
-
- include
- #heredoc
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
-
-
- begin
- (?<=\{|do|\{\s|do\s)(\|)
- captures
-
- 1
-
- name
- punctuation.separator.variable.ruby
-
-
- end
- (\|)
- patterns
-
-
- match
- [_a-zA-Z][_a-zA-Z0-9]*
- name
- variable.other.block.ruby
-
-
- match
- ,
- name
- punctuation.separator.variable.ruby
-
-
-
-
- match
- =>
- name
- punctuation.separator.key-value
-
-
- match
- <<=|%=|&=|\*=|\*\*=|\+=|\-=|\^=|\|{1,2}=|<<
- name
- keyword.operator.assignment.augmented.ruby
-
-
- match
- <=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?<=[ \t])\?
- name
- keyword.operator.comparison.ruby
-
-
- match
- (?<=[ \t])!+|\bnot\b|&&|\band\b|\|\||\bor\b|\^
- name
- keyword.operator.logical.ruby
-
-
- match
- (%|&|\*\*|\*|\+|\-|/)
- name
- keyword.operator.arithmetic.ruby
-
-
- match
- =
- name
- keyword.operator.assignment.ruby
-
-
- match
- \||~|>>
- name
- keyword.operator.other.ruby
-
-
- match
- \.|::
- name
- punctuation.separator.method.ruby
-
-
- match
- :
- name
- punctuation.separator.other.ruby
-
-
- match
- \;
- name
- punctuation.separator.statement.ruby
-
-
- match
- ,
- name
- punctuation.separator.object.ruby
-
-
- match
- \{
- name
- punctuation.section.scope.begin.ruby
-
-
- match
- \}
- name
- punctuation.section.scope.end.ruby
-
-
- match
- \[
- name
- punctuation.section.array.begin.ruby
-
-
- match
- \]
- name
- punctuation.section.array.end.ruby
-
-
- match
- \(|\)
- name
- punctuation.section.function.ruby
-
-
- begin
- (?<=[^\.]\.|::)(?=[a-zA-Z][a-zA-Z0-9_!?]*[^a-zA-Z0-9_!?])
- end
- (?<=[a-zA-Z0-9_!?])(?=[^a-zA-Z0-9_!?])
- name
- meta.function-call.method.without-arguments.ruby
- patterns
-
-
- include
- #known_function_names
-
-
- match
- ([a-zA-Z][a-zA-Z0-9_!?]*)(?=[^a-zA-Z0-9_!?])
- name
- entity.name.function.ruby
-
-
-
-
- begin
- (?<=[^\.])(?=(\.|::)[a-zA-Z][a-zA-Z0-9_!?]*\()(\.|::)
- beginCaptures
-
- 1
-
- name
- punctuation.separator.method.ruby
-
-
- end
- (?<=\))
- name
- meta.function-call.method.with-arguments.ruby
- patterns
-
-
- include
- #nest_function_parens
-
-
- include
- #known_function_names
-
-
- match
- ([a-zA-Z][a-zA-Z0-9_!?]*)(?=\()
- name
- entity.name.function.ruby
-
-
- include
- $self
-
-
-
-
- begin
- (?=[a-zA-Z0-9_!?]+\()
- end
- (?<=\))
- name
- meta.function-call.ruby
- patterns
-
-
- include
- #nest_function_parens
-
-
- include
- #known_function_names
-
-
- match
- ([a-zA-Z0-9_!?]+)(?=\()
- name
- entity.name.function.ruby
-
-
- include
- $self
-
-
-
-
- include
- #leading-space
-
-
- comment
- This is kindof experimental. There really is no way to perfectly match all regular variables, but you can pretty well assume that any normal word in certain curcumstances that havnt already been scoped as something else are probably variables, and the advantages beat the potential errors
- match
- ((?<=\W)\b|^)\w+\b(?=\s*([\]\)\}\=\+\-\*\/\^\$\,\.]|<\s|<<[\s|\.]))
- name
- variable.other.ruby
-
-
- match
- \b(absolute\?|acos!|acosh!|add!|add\?|alive\?|all\?|any\?|asin!|asinh!|atan!|atan2!|atanh!|autoload\?|beginning_of_line\?|between\?|block_given\?|blockdev\?|bol\?|capitalize!|casefold\?|changed\?|chardev\?|chomp!|chop!|close!|closed\?|closed_read\?|closed_write\?|collect!|compact!|const_defined\?|coredump\?|cos!|cosh!|debug\?|delete!|delete\?|directory\?|downcase!|dst\?|empty\?|enclosed\?|end\?|ended\?|eof\?|eos\?|eql\?|eqn\?|equal\?|error\?|event\?|exclude_end\?|executable\?|executable_real\?|exist\?|exists\?|exit!|exited\?|exp!|fatal\?|file\?|finished\?|finite\?|flatten!|fnmatch\?|frozen\?|fu_have_symlink\?|fu_world_writable\?|gmt\?|gregorian_leap\?|grpowned\?|gsub!|has_key\?|has_value\?|hierarchical\?|identical\?|include\?|infinite\?|info\?|input\?|instance_of\?|integer\?|is_a\?|iterator\?|julian_leap\?|key\?|kind_of\?|java_kind_of\?|leap\?|locked\?|log!|log10!|lstrip!|map!|match\?|matched\?|member\?|merge!|method_defined\?|mountpoint\?|multipart\?|multipart\?|nan\?|new!|next!|next\?|nil\?|nonzero\?|normalize!|ns\?|optional\?|os\?|output\?|owned\?|pipe\?|power!|private_method_defined\?|proper_subset\?|proper_superset\?|protected_method_defined\?|public_method_defined\?|re_exchangeable\?|readable\?|readable_real\?|regular\?|reject!|relative\?|respond_to\?|rest\?|retval\?|reverse!|root\?|rstrip!|run\?|setgid\?|setuid\?|sid_available\?|signaled\?|sin!|singular\?|sinh!|size\?|slice!|socket\?|sort!|sqrt!|square\?|squeeze!|sticky\?|stop\?|stopped\?|stream_end\?|strip!|sub!|subset\?|succ!|success\?|superset\?|swapcase!|symlink\?|sync_point\?|tainted\?|tan!|tanh!|tr!|tr_s!|tty\?|uniq!|upcase!|uptodate\?|utc\?|valid_civil\?|valid_commercial\?|valid_jd\?|valid_ordinal\?|valid_time\?|value\?|visible\?|warn\?|writable\?|writable_real\?|zero\?)|\b(__getobj__|__id__|__init__|__send__|__setobj__|_dump|_getproperty|_id2ref|_invoke|_load|_setproperty|abbrev|abort_on_exception|abort|abs2|absoluteChildNumber|absolute|abs|acosh|acos|add_builtin_type|add_domain_type|add_finalizer|add_observer|add_private_type|add_ruby_type|add|adler32|adler|ajd_to_amjd|ajd_to_jd|ajd|a|all_symbols|all_waits|allocate|amjd_to_ajd|amjd|ancestorChildNumber|ancestors|angle|appendChild|appendData|append_features|args|arg|arity|asctime|asinh|asin|assoc|async|at_exit|atan2|atanh|atan|atime|attributes|at|autoload|avail_in|avail_out|b64encode|backtrace|baseName|basename|base|benchmark|binding|bind|binmode|blksize|blockquote|blocks|bmbm|bm|broadcast|build2|build|call_finalizer|callcc|caller|call|capitalize|caption|captures|casecmp|cd|ceil|center|change_privilege|changed|charset_map|charset|chdir|check_until|checkbox_group|checkbox|check|childNodes|childNumber|children|chmod_R|chmod|chomp|chop|chown_R|chown|chroot|chr|civil_to_jd|civil|class_eval|class_name|class_variable_get|class_variable_set|class_variables|classify|class|cleanpath|clear|cloneNode|clone|close_read|close_write|close|cmp|codepage|coerce|collect2|collect|column_size|column_vector|column_vectors|columns|column|comment|commercial_to_jd|commercial|commit|compact|compare_by_row_vectors|compare_by|compare_file|compare_stream|compile|component_ary|component|concat|conj|conjugate|connect|const_get|const_load|const_missing|const_set|constants|conv|copy_entry|copy_file|copy_stream|copy|cosh|cos|count_observers|count|covector|cp_r|cp|crc32|crc_table|crc|createAttribute|createCDATASection|createComment|createDocumentFragment|createElement|createEntityReference|createNode|createProcessingInstruction|createTextNode|create_docfile|create_win32ole_makefile|critical|crypt|ctime|current|cwday|cweek|cwyear|dataType|data_type|data|datetime_format|day_fraction|day_fraction_to_time|day|debug|decode64|decode_b|decode|def_delegator|def_delegators|def_instance_delegator|def_instance_delegators|def_singleton_delegator|def_singleton_delegators|default_handler|default_port|default_proc|default|define_class|define_finalizer|define_define_define_instance_variables|define_method|define_method_missing|define_module|definition|deflate|deleteData|delete_at|delete_if|delete_observer|delete_observers|delete|denominator|depth|deq|detach|detect|detect_implicit|determinant|det|dev_major|dev_minor|dev|diagonal|difference|dir_foreach|dirname|disable|dispid|display|divide|divmod|div|dn|doctype|documentElement|downcase|downto|dump_stream|dump|dup|each2|each_byte|each_cons|each_document|each_entry|each_filename|each_index|each_key|each_line|each_node|each_object|each_pair|each_slice|each_value|each_with_index|each|egid|eid|elements|emitter|enable|enclose|encode64|encode|end|england|enq|entities|entries|enum_cons|enum_for|enum_slice|enum_with_index|eof|erfc|erf|errno|errorCode|error|escapeElement|escapeHTML|escape|euid|eval|event_interface|exception|exclusive|exclusive_unlock|exec|exit_value|exitstatus|exit|expand_path|exp|extend_object|extended|extensions|extname|extract|failed|fail|fatal|fcntl|fetch|file_field|fileno|filepos|fill|filter|finalizers|find_all|find|finish|first|firstChild|flatten_merge|flatten|flock|floor|flush_next_in|flush_next_out|flush|fnmatch|for_fd|foreachline|foreach|fork|format|formatDate|formatIndex|formatNumber|formatTime|form|fragment|freeze|frexp|fsync|ftype|garbage_collect|gcdlcm|gcd|generate_args|generate_argtype|generate_argtypes|generate_class|generate_constants|generate_func_methods|generate_method_args_help|generate_method_body|generate_method_help|generate_methods|generate_method|generate_properties_with_args|generate_propget_methods|generate_propput_methods|generate_propputref_methods|generate|generic_parser|getAllResponseHeaders|getAttribute|getAttributeNode|getElementsByTagName|getNamedItem|getQualifiedItem|getResponseHeader|get_byte|getbyte|getch|getc|getegid|geteuid|getgid|getgm|getlocal|getpgid|getpgrp|getpriority|gets|getuid|getutc|getwd|gid|global_variables|glob|gmt_offset|gmtime|gmtoff|gm|grant_privilege|gregorian|grep|groups|group|gsub|guess1|guess2|guess_old|guess|guid|handler1|handler2|handler3|hasChildNodes|hasFeature|hash|header|headers|helpcontext|helpfile|helpstring|hex|hidden|host|hour|html_escape|html|httpdate|hypot|h|iconv|id2name|identity|id|imag|image_button|image|img|implementation|im|included_modules|included|indexes|index|indices|induced_from|inflate|info|inherited|init_elements|initgroups|initialize_copy|inject|inner_product|ino|insertBefore|insertData|insert|inspect|install|instance_eval|instance_method|instance_methods|instance_variable_get|instance_variable_set|instance_variables|intern|intersection|inverse|inverse_from|invert|invkind|invoke|invoke_kind|inv|ioctl|isatty|isdst|iseuc|iso8601|issetugid|issjis|isutf8|italy|item|java_annotation|java_implements|java_name|java_package|java_require|java_signature|javax|jd_to_ajd|jd_to_civil|jd_to_commercial|jd_to_ld|jd_to_mjd|jd_to_ordinal|jd_to_wday|jd|join_nowait|join|julian|kcode|kconv|keys|kill|lambda|lastChild|last_match|last|lchmod|lchown|lcm|ld_to_jd|ldexp|ld|length|level|lineno|linepos|(?<=\.)line|link|listup|list|ljust|ln_s|ln_sf|ln|loadXML|load_documents|load_file|load_stream|load|local_variables|localtime|local|lock|log10|log|lstat|lstrip|main|major_version|make_link|make_symlink|makedirs|map2|map|marshal_dump|marshal_load|matched|matched_size|matchedsize|match|maxgroups|max|mday|measure|members|memberwise|merge|message_message|method_added|method_missing|method_removed|method_undefined|methods|method|minor|minor_version|min|mjd_to_jd|mjd|mkdir_p|mkdir|mkpath|mktime|mode|module_eval|modulo|month|mon|move|mtime|multipart_form|must_C_version|mv|namespaceURI|name|navigate|nesting|new2|new_start|nextNode|nextSibling|next_wait|next|nitems|nkf|nlink|nodeFromID|nodeName|nodeType|nodeTypeString|nodeTypedValue|nodeValue|normalize|notationName|notations|notify_observers|now|num_waiting|numerator|object_id|object_maker|oct|offset_vtbl|offset|ole_classes|ole_free|ole_func_methods|ole_get_methods|ole_method|ole_method_help|ole_methods|ole_obj_help|ole_put_methods|ole_reference_count|ole_show_help|ole_type_detail|ole_type|oletypelib_name|ontransformnode|opaque|on_event_with_outargs|on_event|ondataavailable|onreadystatechange|opendir|open|options|ordinal_to_jd|ordinal|orig_name|os_code|out|ownerDocument|pack|params|parentNode|parent|parseError|parse_documents|parse_file|parsed|parser|parse|partition|password|password_field|pass|path|peek|peep|pid|pipe|pointer|polar|popen|popup_menu|pop|port|post_match|pos|ppid|pre_match|prec_f|prec_i|prec|prefix|preserveWhiteSpace|pretty|previousSibling|printf|print|priority|private_class_method|private_instance_methods|private_methods|proc|progids|progid|protected_instance_methods|protected_methods|prune|publicId|public_class_method|public_instance_methods|public_methods|push|putc|puts|pwd|p|query|quick_emit|quote|quo|radio_button|radio_group|rand|rank|rassoc|raw_cookie|raw_cookie2|rdev_major|rdev_minor|rdev|rdiv|re_exchange|read_type_class|readchar|readlines|readline|readlink|readpartial|readyState|read|realpath|realtime|real|reason|reduce|regexp|registry|rehash|reject|relative_path_from|remainder|removeAttribute|removeAttributeNode|removeChild|removeNamedItem|removeQualifiedItem|remove_class_variable|remove_const|remove_dir|remove_entry_secure|remove_entry|remove_file|remove_finalizer|remove_instance_variable|remove_method|remove|rename|reopen|replaceChild|replaceData|replace|request_uri|require|reset|resolveExternals|resolver|responseBody|responseStream|responseText|responseXML|rest_size|restore|restsize|rest|result|return_type_detail|return_type|return_vtype|reverse_each|reverse|rewind|rfc1123_date|rfc2822|rfc822|rid|rindex|rjust|rm_f|rm_rf|rm_r|rmdir|rmtree|rm|roots|root|round|route_from|route_to|row_size|row_vector|row_vectors|rows|row|rpower|rstrip|run|r|safe_level|safe_unlink|save(?!!)|scalar|scan_full|scan_until|scan|scheme|scope|scrolling_list|search_full|sec|secure|seek|selectNodes|selectSingleNode|select|send|setAttribute|setAttributeNode|setNamedItem|setRequestHeader|set_attributes|set_backtrace|set_dictionary|set_dn|set_eoutvar|set_extensions|set_filter|set_fragment|set_headers|set_host|set_log|set_opaque|set_password|set_path|set_port|set_query|set_registry|set_scheme|set_scope|set_to|set_trace_func|set_typecode|set_user|set_userinfo|setegid|seteuid|setgid|setpgid|setpgrp|setpriority|setproperty|setregid|setresgid|setresuid|setreuid|setrgid|setruid|setsid|setuid|setup|shellwords|shift|signal|sin|singleton_method_added|singleton_method_removed|singleton_method_undefined|singleton_methods|sinh|size_opt_params|size_params|size|skip_until|skip|sleep|slice|sort_by|sort|source|specified|split|splitText|sprintf|sqrt|squeeze|srand|srcText|src_type|start|status|statusText|stat|step|stop_msg_stopsig|stop|store|strftime|string|strip|strptime|sub|submit|substringData|subtract|succ|success|sum|superclass|swapcase|switch|symlink|synchronize|sync|syscall|sysopen|sysread|sysseek|systemId|system|syswrite|tagName|tagurize|taint|tanh|tan|target|teardown|tell|terminate|termsig|test__invoke|test_bracket_equal_with_arg|test_class_to_s|test_const_CP_ACP|test_const_CP_MACCP|test_const_CP_OEMCP|test_const_CP_SYMBOL|test_const_CP_THREAD_ACP|test_const_CP_UTF7|test_const_CP_UTF8|test_convert_bignum|test_dispid|test_each|test_event|test_event_interface|test_get_win32ole_object|test_helpcontext|test_helpfile|test_helpstring|test_input|test_invoke_kind|test_invoke|test_name|test_no_exist_property|test_offset_vtbl|test_ole_func_methods|test_ole_get_methods|test_ole_invoke_with_named_arg|test_ole_invoke_with_named_arg_last|test_ole_method_help|test_ole_methods|test_ole_put_methods|test_ole_type|test_ole_type_detail|test_on_event|test_on_event2|test_on_event3|test_on_event4|test_openSchema|test_optional|test_output|test_return_type|test_return_type_detail|test_return_vtype|test_s_codepage|test_s_codepage_changed|test_s_codepage_set|test_s_connect|test_s_const_load|test_s_test_s_new_DCOM|test_s_new_from_clsid|test_s_ole_classes|test_s_progids|test_s_typelibs|test_setproperty|test_setproperty_bracket|test_setproperty_with_equal|test_src_type|test_to_s|test_typekind|test_value|test_variables|test_variant|test_visible|test|text_field|textarea|text|time_to_day_fraction|timeout|times|tmpdir|to_ary|to_a|to_enum|to_f|to_hash|to_int|to_io|to_i|to_mailtext|to_proc|to_rfc822text|to_r|to_set|to_str|to_sym|to_s|to|today|toeuc|tojis|tosjis|total_in|total_out|touch|toutf16|toutf8|tr_s|trace_var|trace|transaction|transfer|transformNode|transformNodeToObject|transpose|trap|truncate|try_implicit|try_lock|tr|tv_sec|tv_usec|typecode|typekind|typelibs|type|t|uid|umask|unbind|undef_method|undefine_finalizer|unescapeElement|unescapeHTML|unescape|ungetc|union|uniqueID|uniq|unknown|unlink|unlock|unpack|unscan|unshift|untaint|untrace_var|unused|upcase|update|upto|url_encode|url|use_registry|usec|userinfo|user|utc_offset|utc|utime|u|validateOnParse|values_at|values|value|variable_kind|variables|varkind|version|wait2|waitall|waitpid|waitpid2|wait|wakeup|warn|wday|wrap|write|xmlschema|xml|yday|year|yield|zero|zip|zlib_version|zone_offset|zone)\b
- name
- support.function.core.ruby
-
-
- repository
-
- escaped_char
-
- match
- \\(?:[0-7]{1,3}|x[\da-fA-F]{1,2}|.)
- name
- constant.character.escape.ruby
-
- heredoc
-
- begin
- ^<<[-~]?\w+
- end
- $
- patterns
-
-
- include
- $self
-
-
-
- interpolated_ruby
-
- patterns
-
-
- begin
- #\{
- beginCaptures
-
- 0
-
- name
- punctuation.section.embedded.begin.ruby
-
-
- contentName
- source.ruby
- end
- (\})
- endCaptures
-
- 0
-
- name
- punctuation.section.embedded.end.ruby
-
- 1
-
- name
- source.ruby
-
-
- name
- meta.embedded.line.ruby
- patterns
-
-
- include
- #nest_curly_and_self
-
-
- include
- $self
-
-
-
-
- captures
-
- 1
-
- name
- punctuation.definition.variable.ruby
-
-
- match
- (#@)[a-zA-Z_]\w*
- name
- variable.other.readwrite.instance.ruby
-
-
- captures
-
- 1
-
- name
- punctuation.definition.variable.ruby
-
-
- match
- (#@@)[a-zA-Z_]\w*
- name
- variable.other.readwrite.class.ruby
-
-
- captures
-
- 1
-
- name
- punctuation.definition.variable.ruby
-
-
- match
- (#\$)[a-zA-Z_]\w*
- name
- variable.other.readwrite.global.ruby
-
-
-
- nest_brackets
-
- begin
- \[
- captures
-
- 0
-
- name
- punctuation.section.scope.ruby
-
-
- end
- \]
- patterns
-
-
- include
- #nest_brackets
-
-
-
- nest_brackets_i
-
- begin
- \[
- captures
-
- 0
-
- name
- punctuation.section.scope.ruby
-
-
- end
- \]
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
- include
- #nest_brackets_i
-
-
-
- nest_brackets_r
-
- begin
- \[
- captures
-
- 0
-
- name
- punctuation.section.scope.ruby
-
-
- end
- \]
- patterns
-
-
- include
- #regex_sub
-
-
- include
- #nest_brackets_r
-
-
-
- nest_curly
-
- begin
- \{
- captures
-
- 0
-
- name
- punctuation.section.scope.ruby
-
-
- end
- \}
- patterns
-
-
- include
- #nest_curly
-
-
-
- nest_curly_and_self
-
- patterns
-
-
- begin
- \{
- captures
-
- 0
-
- name
- punctuation.section.scope.ruby
-
-
- end
- \}
- patterns
-
-
- include
- #nest_curly_and_self
-
-
-
-
- include
- $self
-
-
-
- nest_curly_i
-
- begin
- \{
- captures
-
- 0
-
- name
- punctuation.section.scope.ruby
-
-
- end
- \}
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
- include
- #nest_curly_i
-
-
-
- nest_curly_r
-
- begin
- \{
- captures
-
- 0
-
- name
- punctuation.section.scope.ruby
-
-
- end
- \}
- patterns
-
-
- include
- #regex_sub
-
-
- include
- #nest_curly_r
-
-
-
- nest_ltgt
-
- begin
- \<
- captures
-
- 0
-
- name
- punctuation.section.scope.ruby
-
-
- end
- \>
- patterns
-
-
- include
- #nest_ltgt
-
-
-
- nest_ltgt_i
-
- begin
- \<
- captures
-
- 0
-
- name
- punctuation.section.scope.ruby
-
-
- end
- \>
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
- include
- #nest_ltgt_i
-
-
-
- nest_ltgt_r
-
- begin
- \<
- captures
-
- 0
-
- name
- punctuation.section.scope.ruby
-
-
- end
- \>
- patterns
-
-
- include
- #regex_sub
-
-
- include
- #nest_ltgt_r
-
-
-
- nest_parens
-
- begin
- \(
- captures
-
- 0
-
- name
- punctuation.section.scope.ruby
-
-
- end
- \)
- patterns
-
-
- include
- #nest_parens
-
-
-
- nest_parens_i
-
- begin
- \(
- captures
-
- 0
-
- name
- punctuation.section.scope.ruby
-
-
- end
- \)
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
- include
- #nest_parens_i
-
-
-
- nest_parens_r
-
- begin
- \(
- captures
-
- 0
-
- name
- punctuation.section.scope.ruby
-
-
- end
- \)
- patterns
-
-
- include
- #regex_sub
-
-
- include
- #nest_parens_r
-
-
-
- regex_sub
-
- patterns
-
-
- include
- #interpolated_ruby
-
-
- include
- #escaped_char
-
-
- captures
-
- 1
-
- name
- punctuation.definition.arbitrary-repitition.ruby
-
- 3
-
- name
- punctuation.definition.arbitrary-repitition.ruby
-
-
- match
- (\{)\d+(,\d+)?(\})
- name
- string.regexp.arbitrary-repitition.ruby
-
-
- begin
- \[(?:\^?\])?
- captures
-
- 0
-
- name
- punctuation.definition.character-class.ruby
-
-
- end
- \]
- name
- string.regexp.character-class.ruby
- patterns
-
-
- include
- #escaped_char
-
-
-
-
- begin
- \(
- captures
-
- 0
-
- name
- punctuation.definition.group.ruby
-
-
- end
- \)
- name
- string.regexp.group.ruby
- patterns
-
-
- include
- #regex_sub
-
-
-
-
- begin
- (?<=^|\s)(#)\s(?=[[a-zA-Z0-9,. \t?!-][^\x{00}-\x{7F}]]*$)
- beginCaptures
-
- 1
-
- name
- punctuation.definition.comment.ruby
-
-
- comment
- We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.
- end
- $\n?
- endCaptures
-
- 0
-
- name
- punctuation.definition.comment.ruby
-
-
- name
- comment.line.number-sign.ruby
-
-
-
- known_function_names
-
- match
- \b(absolute\?|acos!|acosh!|add!|add\?|alive\?|all\?|any\?|asin!|asinh!|atan!|atan2!|atanh!|autoload\?|beginning_of_line\?|between\?|block_given\?|blockdev\?|bol\?|capitalize!|casefold\?|changed\?|chardev\?|chomp!|chop!|close!|closed\?|closed_read\?|closed_write\?|collect!|compact!|const_defined\?|coredump\?|cos!|cosh!|debug\?|delete!|delete\?|directory\?|downcase!|dst\?|empty\?|enclosed\?|end\?|ended\?|eof\?|eos\?|eql\?|eqn\?|equal\?|error\?|event\?|exclude_end\?|executable\?|executable_real\?|exist\?|exists\?|exit!|exited\?|exp!|fatal\?|file\?|finished\?|finite\?|flatten!|fnmatch\?|frozen\?|fu_have_symlink\?|fu_world_writable\?|gmt\?|gregorian_leap\?|grpowned\?|gsub!|has_key\?|has_value\?|hierarchical\?|identical\?|include\?|infinite\?|info\?|input\?|instance_of\?|integer\?|is_a\?|iterator\?|julian_leap\?|key\?|kind_of\?|java_kind_of\?|leap\?|locked\?|log!|log10!|lstrip!|map!|match\?|matched\?|member\?|merge!|method_defined\?|mountpoint\?|multipart\?|multipart\?|nan\?|new!|next!|next\?|nil\?|nonzero\?|normalize!|ns\?|optional\?|os\?|output\?|owned\?|pipe\?|power!|private_method_defined\?|proper_subset\?|proper_superset\?|protected_method_defined\?|public_method_defined\?|re_exchangeable\?|readable\?|readable_real\?|regular\?|reject!|relative\?|respond_to\?|rest\?|retval\?|reverse!|root\?|rstrip!|run\?|setgid\?|setuid\?|sid_available\?|signaled\?|sin!|singular\?|sinh!|size\?|slice!|socket\?|sort!|sqrt!|square\?|squeeze!|sticky\?|stop\?|stopped\?|stream_end\?|strip!|sub!|subset\?|succ!|success\?|superset\?|swapcase!|symlink\?|sync_point\?|tainted\?|tan!|tanh!|tr!|tr_s!|tty\?|uniq!|upcase!|uptodate\?|utc\?|valid_civil\?|valid_commercial\?|valid_jd\?|valid_ordinal\?|valid_time\?|value\?|visible\?|warn\?|writable\?|writable_real\?|zero\?)|\b(__getobj__|__id__|__init__|__send__|__setobj__|_dump|_getproperty|_id2ref|_invoke|_load|_setproperty|abbrev|abort_on_exception|abort|abs2|absoluteChildNumber|absolute|abs|acosh|acos|add_builtin_type|add_domain_type|add_finalizer|add_observer|add_private_type|add_ruby_type|add|adler32|adler|ajd_to_amjd|ajd_to_jd|ajd|a|all_symbols|all_waits|allocate|amjd_to_ajd|amjd|ancestorChildNumber|ancestors|angle|appendChild|appendData|append_features|args|arg|arity|asctime|asinh|asin|assoc|async|at_exit|atan2|atanh|atan|atime|attributes|at|autoload|avail_in|avail_out|b64encode|backtrace|baseName|basename|base|benchmark|binding|bind|binmode|blksize|blockquote|blocks|bmbm|bm|broadcast|build2|build|call_finalizer|callcc|caller|call|capitalize|caption|captures|casecmp|cd|ceil|center|change_privilege|changed|charset_map|charset|chdir|check_until|checkbox_group|checkbox|check|childNodes|childNumber|children|chmod_R|chmod|chomp|chop|chown_R|chown|chroot|chr|civil_to_jd|civil|class_eval|class_name|class_variable_get|class_variable_set|class_variables|classify|class|cleanpath|clear|cloneNode|clone|close_read|close_write|close|cmp|codepage|coerce|collect2|collect|column_size|column_vector|column_vectors|columns|column|comment|commercial_to_jd|commercial|commit|compact|compare_by_row_vectors|compare_by|compare_file|compare_stream|compile|component_ary|component|concat|conj|conjugate|connect|const_get|const_load|const_missing|const_set|constants|conv|copy_entry|copy_file|copy_stream|copy|cosh|cos|count_observers|count|covector|cp_r|cp|crc32|crc_table|crc|createAttribute|createCDATASection|createComment|createDocumentFragment|createElement|createEntityReference|createNode|createProcessingInstruction|createTextNode|create_docfile|create_win32ole_makefile|critical|crypt|ctime|current|cwday|cweek|cwyear|dataType|data_type|data|datetime_format|day_fraction|day_fraction_to_time|day|debug|decode64|decode_b|decode|def_delegator|def_delegators|def_instance_delegator|def_instance_delegators|def_singleton_delegator|def_singleton_delegators|default_handler|default_port|default_proc|default|define_class|define_finalizer|define_define_define_instance_variables|define_method|define_method_missing|define_module|definition|deflate|deleteData|delete_at|delete_if|delete_observer|delete_observers|delete|denominator|depth|deq|detach|detect|detect_implicit|determinant|det|dev_major|dev_minor|dev|diagonal|difference|dir_foreach|dirname|disable|dispid|display|divide|divmod|div|dn|doctype|documentElement|downcase|downto|dump_stream|dump|dup|each2|each_byte|each_cons|each_document|each_entry|each_filename|each_index|each_key|each_line|each_node|each_object|each_pair|each_slice|each_value|each_with_index|each|egid|eid|elements|emitter|enable|enclose|encode64|encode|end|england|enq|entities|entries|enum_cons|enum_for|enum_slice|enum_with_index|eof|erfc|erf|errno|errorCode|error|escapeElement|escapeHTML|escape|euid|eval|event_interface|exception|exclusive|exclusive_unlock|exec|exit_value|exitstatus|exit|expand_path|exp|extend_object|extended|extensions|extname|extract|failed|fail|fatal|fcntl|fetch|file_field|fileno|filepos|fill|filter|finalizers|find_all|find|finish|first|firstChild|flatten_merge|flatten|flock|floor|flush_next_in|flush_next_out|flush|fnmatch|for_fd|foreachline|foreach|fork|format|formatDate|formatIndex|formatNumber|formatTime|form|fragment|freeze|frexp|fsync|ftype|garbage_collect|gcdlcm|gcd|generate_args|generate_argtype|generate_argtypes|generate_class|generate_constants|generate_func_methods|generate_method_args_help|generate_method_body|generate_method_help|generate_methods|generate_method|generate_properties_with_args|generate_propget_methods|generate_propput_methods|generate_propputref_methods|generate|generic_parser|getAllResponseHeaders|getAttribute|getAttributeNode|getElementsByTagName|getNamedItem|getQualifiedItem|getResponseHeader|get_byte|getbyte|getch|getc|getegid|geteuid|getgid|getgm|getlocal|getpgid|getpgrp|getpriority|gets|getuid|getutc|getwd|gid|global_variables|glob|gmt_offset|gmtime|gmtoff|gm|grant_privilege|gregorian|grep|groups|group|gsub|guess1|guess2|guess_old|guess|guid|handler1|handler2|handler3|hasChildNodes|hasFeature|hash|header|headers|helpcontext|helpfile|helpstring|hex|hidden|host|hour|html_escape|html|httpdate|hypot|h|iconv|id2name|identity|id|imag|image_button|image|img|implementation|im|included_modules|included|indexes|index|indices|induced_from|inflate|info|inherited|init_elements|initgroups|initialize_copy|inject|inner_product|ino|insertBefore|insertData|insert|inspect|install|instance_eval|instance_method|instance_methods|instance_variable_get|instance_variable_set|instance_variables|intern|intersection|inverse|inverse_from|invert|invkind|invoke|invoke_kind|inv|ioctl|isatty|isdst|iseuc|iso8601|issetugid|issjis|isutf8|italy|item|java_annotation|java_implements|java_name|java_package|java_require|java_signature|javax|jd_to_ajd|jd_to_civil|jd_to_commercial|jd_to_ld|jd_to_mjd|jd_to_ordinal|jd_to_wday|jd|join_nowait|join|julian|kcode|kconv|keys|kill|lambda|lastChild|last_match|last|lchmod|lchown|lcm|ld_to_jd|ldexp|ld|length|level|lineno|linepos|(?<=\.)line|link|listup|list|ljust|ln_s|ln_sf|ln|loadXML|load_documents|load_file|load_stream|load|local_variables|localtime|local|lock|log10|log|lstat|lstrip|main|major_version|make_link|make_symlink|makedirs|map2|map|marshal_dump|marshal_load|matched|matched_size|matchedsize|match|maxgroups|max|mday|measure|members|memberwise|merge|message_message|method_added|method_missing|method_removed|method_undefined|methods|method|minor|minor_version|min|mjd_to_jd|mjd|mkdir_p|mkdir|mkpath|mktime|mode|module_eval|modulo|month|mon|move|mtime|multipart_form|must_C_version|mv|namespaceURI|name|navigate|nesting|new2|new_start|nextNode|nextSibling|next_wait|next|nitems|nkf|nlink|nodeFromID|nodeName|nodeType|nodeTypeString|nodeTypedValue|nodeValue|normalize|notationName|notations|notify_observers|now|num_waiting|numerator|object_id|object_maker|oct|offset_vtbl|offset|ole_classes|ole_free|ole_func_methods|ole_get_methods|ole_method|ole_method_help|ole_methods|ole_obj_help|ole_put_methods|ole_reference_count|ole_show_help|ole_type_detail|ole_type|oletypelib_name|ontransformnode|opaque|on_event_with_outargs|on_event|ondataavailable|onreadystatechange|opendir|open|options|ordinal_to_jd|ordinal|orig_name|os_code|out|ownerDocument|pack|params|parentNode|parent|parseError|parse_documents|parse_file|parsed|parser|parse|partition|password|password_field|pass|path|peek|peep|pid|pipe|pointer|polar|popen|popup_menu|pop|port|post_match|pos|ppid|pre_match|prec_f|prec_i|prec|prefix|preserveWhiteSpace|pretty|previousSibling|printf|print|priority|private_class_method|private_instance_methods|private_methods|proc|progids|progid|protected_instance_methods|protected_methods|prune|publicId|public_class_method|public_instance_methods|public_methods|push|putc|puts|pwd|p|query|quick_emit|quote|quo|radio_button|radio_group|rand|rank|rassoc|raw_cookie|raw_cookie2|rdev_major|rdev_minor|rdev|rdiv|re_exchange|read_type_class|readchar|readlines|readline|readlink|readpartial|readyState|read|realpath|realtime|real|reason|reduce|regexp|registry|rehash|reject|relative_path_from|remainder|removeAttribute|removeAttributeNode|removeChild|removeNamedItem|removeQualifiedItem|remove_class_variable|remove_const|remove_dir|remove_entry_secure|remove_entry|remove_file|remove_finalizer|remove_instance_variable|remove_method|remove|rename|reopen|replaceChild|replaceData|replace|request_uri|require|reset|resolveExternals|resolver|responseBody|responseStream|responseText|responseXML|rest_size|restore|restsize|rest|result|return_type_detail|return_type|return_vtype|reverse_each|reverse|rewind|rfc1123_date|rfc2822|rfc822|rid|rindex|rjust|rm_f|rm_rf|rm_r|rmdir|rmtree|rm|roots|root|round|route_from|route_to|row_size|row_vector|row_vectors|rows|row|rpower|rstrip|run|r|safe_level|safe_unlink|save(?!!)|scalar|scan_full|scan_until|scan|scheme|scope|scrolling_list|search_full|sec|secure|seek|selectNodes|selectSingleNode|select|send|setAttribute|setAttributeNode|setNamedItem|setRequestHeader|set_attributes|set_backtrace|set_dictionary|set_dn|set_eoutvar|set_extensions|set_filter|set_fragment|set_headers|set_host|set_log|set_opaque|set_password|set_path|set_port|set_query|set_registry|set_scheme|set_scope|set_to|set_trace_func|set_typecode|set_user|set_userinfo|setegid|seteuid|setgid|setpgid|setpgrp|setpriority|setproperty|setregid|setresgid|setresuid|setreuid|setrgid|setruid|setsid|setuid|setup|shellwords|shift|signal|sin|singleton_method_added|singleton_method_removed|singleton_method_undefined|singleton_methods|sinh|size_opt_params|size_params|size|skip_until|skip|sleep|slice|sort_by|sort|source|specified|split|splitText|sprintf|sqrt|squeeze|srand|srcText|src_type|start|status|statusText|stat|step|stop_msg_stopsig|stop|store|strftime|string|strip|strptime|sub|submit|substringData|subtract|succ|success|sum|superclass|swapcase|switch|symlink|synchronize|sync|syscall|sysopen|sysread|sysseek|systemId|system|syswrite|tagName|tagurize|taint|tanh|tan|target|teardown|tell|terminate|termsig|test__invoke|test_bracket_equal_with_arg|test_class_to_s|test_const_CP_ACP|test_const_CP_MACCP|test_const_CP_OEMCP|test_const_CP_SYMBOL|test_const_CP_THREAD_ACP|test_const_CP_UTF7|test_const_CP_UTF8|test_convert_bignum|test_dispid|test_each|test_event|test_event_interface|test_get_win32ole_object|test_helpcontext|test_helpfile|test_helpstring|test_input|test_invoke_kind|test_invoke|test_name|test_no_exist_property|test_offset_vtbl|test_ole_func_methods|test_ole_get_methods|test_ole_invoke_with_named_arg|test_ole_invoke_with_named_arg_last|test_ole_method_help|test_ole_methods|test_ole_put_methods|test_ole_type|test_ole_type_detail|test_on_event|test_on_event2|test_on_event3|test_on_event4|test_openSchema|test_optional|test_output|test_return_type|test_return_type_detail|test_return_vtype|test_s_codepage|test_s_codepage_changed|test_s_codepage_set|test_s_connect|test_s_const_load|test_s_test_s_new_DCOM|test_s_new_from_clsid|test_s_ole_classes|test_s_progids|test_s_typelibs|test_setproperty|test_setproperty_bracket|test_setproperty_with_equal|test_src_type|test_to_s|test_typekind|test_value|test_variables|test_variant|test_visible|test|text_field|textarea|text|time_to_day_fraction|timeout|times|tmpdir|to_ary|to_a|to_enum|to_f|to_hash|to_int|to_io|to_i|to_mailtext|to_proc|to_rfc822text|to_r|to_set|to_str|to_sym|to_s|to|today|toeuc|tojis|tosjis|total_in|total_out|touch|toutf16|toutf8|tr_s|trace_var|trace|transaction|transfer|transformNode|transformNodeToObject|transpose|trap|truncate|try_implicit|try_lock|tr|tv_sec|tv_usec|typecode|typekind|typelibs|type|t|uid|umask|unbind|undef_method|undefine_finalizer|unescapeElement|unescapeHTML|unescape|ungetc|union|uniqueID|uniq|unknown|unlink|unlock|unpack|unscan|unshift|untaint|untrace_var|unused|upcase|update|upto|url_encode|url|use_registry|usec|userinfo|user|utc_offset|utc|utime|u|validateOnParse|values_at|values|value|variable_kind|variables|varkind|version|wait2|waitall|waitpid|waitpid2|wait|wakeup|warn|wday|wrap|write|xmlschema|xml|yday|year|yield|zero|zip|zlib_version|zone_offset|zone)\b
- name
- support.function.core.ruby
-
- leading-space
-
- patterns
-
-
- begin
- ^(?=(\t| ))
- end
- (?=[^\t\s]|\n)
- name
- meta.leading-tabs
- patterns
-
-
- captures
-
- 1
-
- name
- meta.odd-tab.group1.spaces
-
- 10
-
- name
- meta.even-tab.group10.spaces
-
- 11
-
- name
- meta.odd-tab.group11.spaces
-
- 2
-
- name
- meta.even-tab.group2.spaces
-
- 3
-
- name
- meta.odd-tab.group3.spaces
-
- 4
-
- name
- meta.even-tab.group4.spaces
-
- 5
-
- name
- meta.odd-tab.group5.spaces
-
- 6
-
- name
- meta.even-tab.group6.spaces
-
- 7
-
- name
- meta.odd-tab.group7.spaces
-
- 8
-
- name
- meta.even-tab.group8.spaces
-
- 9
-
- name
- meta.odd-tab.group9.spaces
-
-
- match
- ( )( )?( )?( )?( )?( )?( )?( )?( )?( )?( )?
-
-
- captures
-
- 1
-
- name
- meta.odd-tab.group1.tab
-
- 10
-
- name
- meta.even-tab.group10.tab
-
- 11
-
- name
- meta.odd-tab.group11.tab
-
- 2
-
- name
- meta.even-tab.group2.tab
-
- 3
-
- name
- meta.odd-tab.group3.tab
-
- 4
-
- name
- meta.even-tab.group4.tab
-
- 5
-
- name
- meta.odd-tab.group5.tab
-
- 6
-
- name
- meta.even-tab.group6.tab
-
- 7
-
- name
- meta.odd-tab.group7.tab
-
- 8
-
- name
- meta.even-tab.group8.tab
-
- 9
-
- name
- meta.odd-tab.group9.tab
-
-
- match
- (\t)(\t)?(\t)?(\t)?(\t)?(\t)?(\t)?(\t)?(\t)?(\t)?(\t)?
-
-
-
-
-
- nest_function_parens
-
- begin
- \(
- captures
-
- 0
-
- name
- punctuation.section.scope.ruby
-
-
- contentName
- meta.section.scope.ruby
- end
- \)
- patterns
-
-
- include
- #nest_function_parens
-
-
- include
- $self
-
-
-
-
- scopeName
- source.ruby
- uuid
- E00B62AC-6B1C-11D9-9B1F-000D93589AF6
-
-
\ No newline at end of file