jass-vue 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (144) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +43 -0
  4. data/lib/jass/vue.rb +12 -0
  5. data/lib/jass/vue/version.rb +5 -0
  6. data/vendor/node_modules/arr-diff/index.js +58 -0
  7. data/vendor/node_modules/arr-diff/package.json +49 -0
  8. data/vendor/node_modules/arr-flatten/index.js +22 -0
  9. data/vendor/node_modules/arr-flatten/package.json +76 -0
  10. data/vendor/node_modules/array-unique/index.js +28 -0
  11. data/vendor/node_modules/array-unique/package.json +37 -0
  12. data/vendor/node_modules/braces/index.js +399 -0
  13. data/vendor/node_modules/braces/package.json +83 -0
  14. data/vendor/node_modules/de-indent/index.js +45 -0
  15. data/vendor/node_modules/de-indent/package.json +25 -0
  16. data/vendor/node_modules/de-indent/test.js +30 -0
  17. data/vendor/node_modules/estree-walker/dist/estree-walker.es.js +55 -0
  18. data/vendor/node_modules/estree-walker/dist/estree-walker.es6.js +59 -0
  19. data/vendor/node_modules/estree-walker/dist/estree-walker.umd.js +65 -0
  20. data/vendor/node_modules/estree-walker/package.json +33 -0
  21. data/vendor/node_modules/estree-walker/src/estree-walker.js +49 -0
  22. data/vendor/node_modules/expand-brackets/index.js +163 -0
  23. data/vendor/node_modules/expand-brackets/package.json +62 -0
  24. data/vendor/node_modules/expand-range/index.js +43 -0
  25. data/vendor/node_modules/expand-range/package.json +73 -0
  26. data/vendor/node_modules/extglob/index.js +178 -0
  27. data/vendor/node_modules/extglob/package.json +60 -0
  28. data/vendor/node_modules/filename-regex/index.js +10 -0
  29. data/vendor/node_modules/filename-regex/package.json +50 -0
  30. data/vendor/node_modules/fill-range/index.js +408 -0
  31. data/vendor/node_modules/fill-range/package.json +61 -0
  32. data/vendor/node_modules/for-in/index.js +16 -0
  33. data/vendor/node_modules/for-in/package.json +68 -0
  34. data/vendor/node_modules/for-own/index.js +19 -0
  35. data/vendor/node_modules/for-own/package.json +70 -0
  36. data/vendor/node_modules/glob-base/index.js +51 -0
  37. data/vendor/node_modules/glob-base/package.json +52 -0
  38. data/vendor/node_modules/glob-parent/index.js +10 -0
  39. data/vendor/node_modules/glob-parent/package.json +35 -0
  40. data/vendor/node_modules/glob-parent/test.js +28 -0
  41. data/vendor/node_modules/he/bin/he +148 -0
  42. data/vendor/node_modules/he/he.js +342 -0
  43. data/vendor/node_modules/he/man/he.1 +78 -0
  44. data/vendor/node_modules/he/package.json +56 -0
  45. data/vendor/node_modules/is-buffer/index.js +21 -0
  46. data/vendor/node_modules/is-buffer/package.json +51 -0
  47. data/vendor/node_modules/is-dotfile/index.js +14 -0
  48. data/vendor/node_modules/is-dotfile/package.json +69 -0
  49. data/vendor/node_modules/is-equal-shallow/index.js +27 -0
  50. data/vendor/node_modules/is-equal-shallow/package.json +54 -0
  51. data/vendor/node_modules/is-extendable/index.js +13 -0
  52. data/vendor/node_modules/is-extendable/package.json +51 -0
  53. data/vendor/node_modules/is-extglob/index.js +11 -0
  54. data/vendor/node_modules/is-extglob/package.json +48 -0
  55. data/vendor/node_modules/is-glob/index.js +14 -0
  56. data/vendor/node_modules/is-glob/package.json +60 -0
  57. data/vendor/node_modules/is-number/index.js +19 -0
  58. data/vendor/node_modules/is-number/package.json +59 -0
  59. data/vendor/node_modules/is-posix-bracket/index.js +10 -0
  60. data/vendor/node_modules/is-posix-bracket/package.json +64 -0
  61. data/vendor/node_modules/is-primitive/index.js +13 -0
  62. data/vendor/node_modules/is-primitive/package.json +46 -0
  63. data/vendor/node_modules/isarray/index.js +5 -0
  64. data/vendor/node_modules/isarray/package.json +45 -0
  65. data/vendor/node_modules/isarray/test.js +20 -0
  66. data/vendor/node_modules/isobject/index.js +14 -0
  67. data/vendor/node_modules/isobject/package.json +67 -0
  68. data/vendor/node_modules/kind-of/index.js +116 -0
  69. data/vendor/node_modules/kind-of/package.json +90 -0
  70. data/vendor/node_modules/magic-string/dist/magic-string.cjs.js +1287 -0
  71. data/vendor/node_modules/magic-string/dist/magic-string.es.js +1283 -0
  72. data/vendor/node_modules/magic-string/dist/magic-string.umd.js +1339 -0
  73. data/vendor/node_modules/magic-string/package.json +60 -0
  74. data/vendor/node_modules/magic-string/src/Bundle.js +263 -0
  75. data/vendor/node_modules/magic-string/src/Chunk.js +154 -0
  76. data/vendor/node_modules/magic-string/src/MagicString.js +618 -0
  77. data/vendor/node_modules/magic-string/src/index-legacy.js +6 -0
  78. data/vendor/node_modules/magic-string/src/index.js +4 -0
  79. data/vendor/node_modules/magic-string/src/utils/Mappings.js +117 -0
  80. data/vendor/node_modules/magic-string/src/utils/SourceMap.js +21 -0
  81. data/vendor/node_modules/magic-string/src/utils/Stats.js +18 -0
  82. data/vendor/node_modules/magic-string/src/utils/btoa.js +13 -0
  83. data/vendor/node_modules/magic-string/src/utils/getLocator.js +35 -0
  84. data/vendor/node_modules/magic-string/src/utils/getRelativePath.js +18 -0
  85. data/vendor/node_modules/magic-string/src/utils/guessIndent.js +25 -0
  86. data/vendor/node_modules/magic-string/src/utils/hasOwnProp.js +1 -0
  87. data/vendor/node_modules/magic-string/src/utils/isObject.js +5 -0
  88. data/vendor/node_modules/micromatch/index.js +431 -0
  89. data/vendor/node_modules/micromatch/lib/chars.js +67 -0
  90. data/vendor/node_modules/micromatch/lib/expand.js +304 -0
  91. data/vendor/node_modules/micromatch/lib/glob.js +193 -0
  92. data/vendor/node_modules/micromatch/lib/utils.js +149 -0
  93. data/vendor/node_modules/micromatch/package.json +114 -0
  94. data/vendor/node_modules/normalize-path/index.js +19 -0
  95. data/vendor/node_modules/normalize-path/package.json +78 -0
  96. data/vendor/node_modules/object.omit/index.js +40 -0
  97. data/vendor/node_modules/object.omit/package.json +67 -0
  98. data/vendor/node_modules/parse-glob/index.js +156 -0
  99. data/vendor/node_modules/parse-glob/package.json +62 -0
  100. data/vendor/node_modules/preserve/index.js +54 -0
  101. data/vendor/node_modules/preserve/package.json +48 -0
  102. data/vendor/node_modules/preserve/test.js +48 -0
  103. data/vendor/node_modules/randomatic/index.js +82 -0
  104. data/vendor/node_modules/randomatic/node_modules/is-number/index.js +22 -0
  105. data/vendor/node_modules/randomatic/node_modules/is-number/node_modules/kind-of/index.js +116 -0
  106. data/vendor/node_modules/randomatic/node_modules/is-number/node_modules/kind-of/package.json +90 -0
  107. data/vendor/node_modules/randomatic/node_modules/is-number/package.json +83 -0
  108. data/vendor/node_modules/randomatic/node_modules/kind-of/index.js +119 -0
  109. data/vendor/node_modules/randomatic/node_modules/kind-of/package.json +90 -0
  110. data/vendor/node_modules/randomatic/package.json +78 -0
  111. data/vendor/node_modules/regex-cache/index.js +68 -0
  112. data/vendor/node_modules/regex-cache/package.json +64 -0
  113. data/vendor/node_modules/remove-trailing-separator/index.js +17 -0
  114. data/vendor/node_modules/remove-trailing-separator/package.json +37 -0
  115. data/vendor/node_modules/repeat-element/index.js +18 -0
  116. data/vendor/node_modules/repeat-element/package.json +44 -0
  117. data/vendor/node_modules/repeat-string/index.js +70 -0
  118. data/vendor/node_modules/repeat-string/package.json +77 -0
  119. data/vendor/node_modules/rollup-plugin-vue2/dist/rollup-plugin-vue2.common.js +164 -0
  120. data/vendor/node_modules/rollup-plugin-vue2/dist/rollup-plugin-vue2.es.js +160 -0
  121. data/vendor/node_modules/rollup-plugin-vue2/package.json +50 -0
  122. data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.cjs.js +223 -0
  123. data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.es.js +214 -0
  124. data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.es6.js +217 -0
  125. data/vendor/node_modules/rollup-pluginutils/package.json +40 -0
  126. data/vendor/node_modules/rollup-pluginutils/src/addExtension.js +6 -0
  127. data/vendor/node_modules/rollup-pluginutils/src/attachScopes.js +147 -0
  128. data/vendor/node_modules/rollup-pluginutils/src/createFilter.js +33 -0
  129. data/vendor/node_modules/rollup-pluginutils/src/index.js +4 -0
  130. data/vendor/node_modules/rollup-pluginutils/src/makeLegalIdentifier.js +15 -0
  131. data/vendor/node_modules/rollup-pluginutils/src/utils/ensureArray.js +5 -0
  132. data/vendor/node_modules/vlq/dist/vlq.js +91 -0
  133. data/vendor/node_modules/vlq/package.json +27 -0
  134. data/vendor/node_modules/vlq/src/vlq.js +78 -0
  135. data/vendor/node_modules/vue-template-compiler/browser.js +5237 -0
  136. data/vendor/node_modules/vue-template-compiler/build.js +4835 -0
  137. data/vendor/node_modules/vue-template-compiler/index.js +18 -0
  138. data/vendor/node_modules/vue-template-compiler/package.json +27 -0
  139. data/vendor/node_modules/vue-template-es2015-compiler/buble.js +14112 -0
  140. data/vendor/node_modules/vue-template-es2015-compiler/index.js +24 -0
  141. data/vendor/node_modules/vue-template-es2015-compiler/package.json +28 -0
  142. data/vendor/package.json +9 -0
  143. data/vendor/yarn.lock +268 -0
  144. metadata +242 -0
@@ -0,0 +1,163 @@
1
+ /*!
2
+ * expand-brackets <https://github.com/jonschlinkert/expand-brackets>
3
+ *
4
+ * Copyright (c) 2015 Jon Schlinkert.
5
+ * Licensed under the MIT license.
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ var isPosixBracket = require('is-posix-bracket');
11
+
12
+ /**
13
+ * POSIX character classes
14
+ */
15
+
16
+ var POSIX = {
17
+ alnum: 'a-zA-Z0-9',
18
+ alpha: 'a-zA-Z',
19
+ blank: ' \\t',
20
+ cntrl: '\\x00-\\x1F\\x7F',
21
+ digit: '0-9',
22
+ graph: '\\x21-\\x7E',
23
+ lower: 'a-z',
24
+ print: '\\x20-\\x7E',
25
+ punct: '-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~',
26
+ space: ' \\t\\r\\n\\v\\f',
27
+ upper: 'A-Z',
28
+ word: 'A-Za-z0-9_',
29
+ xdigit: 'A-Fa-f0-9',
30
+ };
31
+
32
+ /**
33
+ * Expose `brackets`
34
+ */
35
+
36
+ module.exports = brackets;
37
+
38
+ function brackets(str) {
39
+ if (!isPosixBracket(str)) {
40
+ return str;
41
+ }
42
+
43
+ var negated = false;
44
+ if (str.indexOf('[^') !== -1) {
45
+ negated = true;
46
+ str = str.split('[^').join('[');
47
+ }
48
+ if (str.indexOf('[!') !== -1) {
49
+ negated = true;
50
+ str = str.split('[!').join('[');
51
+ }
52
+
53
+ var a = str.split('[');
54
+ var b = str.split(']');
55
+ var imbalanced = a.length !== b.length;
56
+
57
+ var parts = str.split(/(?::\]\[:|\[?\[:|:\]\]?)/);
58
+ var len = parts.length, i = 0;
59
+ var end = '', beg = '';
60
+ var res = [];
61
+
62
+ // start at the end (innermost) first
63
+ while (len--) {
64
+ var inner = parts[i++];
65
+ if (inner === '^[!' || inner === '[!') {
66
+ inner = '';
67
+ negated = true;
68
+ }
69
+
70
+ var prefix = negated ? '^' : '';
71
+ var ch = POSIX[inner];
72
+
73
+ if (ch) {
74
+ res.push('[' + prefix + ch + ']');
75
+ } else if (inner) {
76
+ if (/^\[?\w-\w\]?$/.test(inner)) {
77
+ if (i === parts.length) {
78
+ res.push('[' + prefix + inner);
79
+ } else if (i === 1) {
80
+ res.push(prefix + inner + ']');
81
+ } else {
82
+ res.push(prefix + inner);
83
+ }
84
+ } else {
85
+ if (i === 1) {
86
+ beg += inner;
87
+ } else if (i === parts.length) {
88
+ end += inner;
89
+ } else {
90
+ res.push('[' + prefix + inner + ']');
91
+ }
92
+ }
93
+ }
94
+ }
95
+
96
+ var result = res.join('|');
97
+ var rlen = res.length || 1;
98
+ if (rlen > 1) {
99
+ result = '(?:' + result + ')';
100
+ rlen = 1;
101
+ }
102
+ if (beg) {
103
+ rlen++;
104
+ if (beg.charAt(0) === '[') {
105
+ if (imbalanced) {
106
+ beg = '\\[' + beg.slice(1);
107
+ } else {
108
+ beg += ']';
109
+ }
110
+ }
111
+ result = beg + result;
112
+ }
113
+ if (end) {
114
+ rlen++;
115
+ if (end.slice(-1) === ']') {
116
+ if (imbalanced) {
117
+ end = end.slice(0, end.length - 1) + '\\]';
118
+ } else {
119
+ end = '[' + end;
120
+ }
121
+ }
122
+ result += end;
123
+ }
124
+
125
+ if (rlen > 1) {
126
+ result = result.split('][').join(']|[');
127
+ if (result.indexOf('|') !== -1 && !/\(\?/.test(result)) {
128
+ result = '(?:' + result + ')';
129
+ }
130
+ }
131
+
132
+ result = result.replace(/\[+=|=\]+/g, '\\b');
133
+ return result;
134
+ }
135
+
136
+ brackets.makeRe = function(pattern) {
137
+ try {
138
+ return new RegExp(brackets(pattern));
139
+ } catch (err) {}
140
+ };
141
+
142
+ brackets.isMatch = function(str, pattern) {
143
+ try {
144
+ return brackets.makeRe(pattern).test(str);
145
+ } catch (err) {
146
+ return false;
147
+ }
148
+ };
149
+
150
+ brackets.match = function(arr, pattern) {
151
+ var len = arr.length, i = 0;
152
+ var res = arr.slice();
153
+
154
+ var re = brackets.makeRe(pattern);
155
+ while (i < len) {
156
+ var ele = arr[i++];
157
+ if (!re.test(ele)) {
158
+ continue;
159
+ }
160
+ res.splice(i, 1);
161
+ }
162
+ return res;
163
+ };
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "expand-brackets",
3
+ "description": "Expand POSIX bracket expressions (character classes) in glob patterns.",
4
+ "version": "0.1.5",
5
+ "homepage": "https://github.com/jonschlinkert/expand-brackets",
6
+ "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
7
+ "repository": "jonschlinkert/expand-brackets",
8
+ "bugs": {
9
+ "url": "https://github.com/jonschlinkert/expand-brackets/issues"
10
+ },
11
+ "license": "MIT",
12
+ "files": [
13
+ "index.js"
14
+ ],
15
+ "main": "index.js",
16
+ "engines": {
17
+ "node": ">=0.10.0"
18
+ },
19
+ "scripts": {
20
+ "test": "mocha"
21
+ },
22
+ "dependencies": {
23
+ "is-posix-bracket": "^0.1.0"
24
+ },
25
+ "devDependencies": {
26
+ "gulp-format-md": "^0.1.7",
27
+ "mocha": "^2.2.5",
28
+ "should": "^7.0.2"
29
+ },
30
+ "keywords": [
31
+ "bracket",
32
+ "character class",
33
+ "expression",
34
+ "posix"
35
+ ],
36
+ "verb": {
37
+ "run": true,
38
+ "toc": false,
39
+ "layout": "default",
40
+ "tasks": [
41
+ "readme"
42
+ ],
43
+ "plugins": [
44
+ "gulp-format-md"
45
+ ],
46
+ "related": {
47
+ "list": [
48
+ "extglob",
49
+ "is-extglob",
50
+ "is-glob",
51
+ "is-posix-bracket",
52
+ "micromatch"
53
+ ]
54
+ },
55
+ "reflinks": [
56
+ "verb"
57
+ ],
58
+ "lint": {
59
+ "reflinks": true
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,43 @@
1
+ /*!
2
+ * expand-range <https://github.com/jonschlinkert/expand-range>
3
+ *
4
+ * Copyright (c) 2014-2015, Jon Schlinkert.
5
+ * Licensed under the MIT license.
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ var fill = require('fill-range');
11
+
12
+ module.exports = function expandRange(str, options, fn) {
13
+ if (typeof str !== 'string') {
14
+ throw new TypeError('expand-range expects a string.');
15
+ }
16
+
17
+ if (typeof options === 'function') {
18
+ fn = options;
19
+ options = {};
20
+ }
21
+
22
+ if (typeof options === 'boolean') {
23
+ options = {};
24
+ options.makeRe = true;
25
+ }
26
+
27
+ // create arguments to pass to fill-range
28
+ var opts = options || {};
29
+ var args = str.split('..');
30
+ var len = args.length;
31
+ if (len > 3) { return str; }
32
+
33
+ // if only one argument, it can't expand so return it
34
+ if (len === 1) { return args; }
35
+
36
+ // if `true`, tell fill-range to regexify the string
37
+ if (typeof fn === 'boolean' && fn === true) {
38
+ opts.makeRe = true;
39
+ }
40
+
41
+ args.push(opts);
42
+ return fill.apply(null, args.concat(fn));
43
+ };
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "expand-range",
3
+ "description": "Fast, bash-like range expansion. Expand a range of numbers or letters, uppercase or lowercase. See the benchmarks. Used by micromatch.",
4
+ "version": "1.8.2",
5
+ "homepage": "https://github.com/jonschlinkert/expand-range",
6
+ "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
7
+ "repository": "jonschlinkert/expand-range",
8
+ "bugs": {
9
+ "url": "https://github.com/jonschlinkert/expand-range/issues"
10
+ },
11
+ "license": "MIT",
12
+ "files": [
13
+ "index.js"
14
+ ],
15
+ "main": "index.js",
16
+ "engines": {
17
+ "node": ">=0.10.0"
18
+ },
19
+ "scripts": {
20
+ "test": "mocha"
21
+ },
22
+ "dependencies": {
23
+ "fill-range": "^2.1.0"
24
+ },
25
+ "devDependencies": {
26
+ "benchmarked": "^0.2.4",
27
+ "brace-expansion": "^1.1.4",
28
+ "glob": "^7.0.3",
29
+ "gulp-format-md": "^0.1.9",
30
+ "minimatch": "^3.0.0",
31
+ "mocha": "^2.4.5"
32
+ },
33
+ "keywords": [
34
+ "alpha",
35
+ "alphabetical",
36
+ "bash",
37
+ "brace",
38
+ "expand",
39
+ "expansion",
40
+ "glob",
41
+ "match",
42
+ "matches",
43
+ "matching",
44
+ "number",
45
+ "numerical",
46
+ "range",
47
+ "ranges",
48
+ "sh"
49
+ ],
50
+ "verb": {
51
+ "plugins": [
52
+ "gulp-format-md"
53
+ ],
54
+ "reflinks": [
55
+ "verb"
56
+ ],
57
+ "toc": false,
58
+ "layout": "default",
59
+ "lint": {
60
+ "reflinks": true
61
+ },
62
+ "tasks": [
63
+ "readme"
64
+ ],
65
+ "related": {
66
+ "list": [
67
+ "micromatch",
68
+ "fill-range",
69
+ "braces"
70
+ ]
71
+ }
72
+ }
73
+ }
@@ -0,0 +1,178 @@
1
+ /*!
2
+ * extglob <https://github.com/jonschlinkert/extglob>
3
+ *
4
+ * Copyright (c) 2015, Jon Schlinkert.
5
+ * Licensed under the MIT License.
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ /**
11
+ * Module dependencies
12
+ */
13
+
14
+ var isExtglob = require('is-extglob');
15
+ var re, cache = {};
16
+
17
+ /**
18
+ * Expose `extglob`
19
+ */
20
+
21
+ module.exports = extglob;
22
+
23
+ /**
24
+ * Convert the given extglob `string` to a regex-compatible
25
+ * string.
26
+ *
27
+ * ```js
28
+ * var extglob = require('extglob');
29
+ * extglob('!(a?(b))');
30
+ * //=> '(?!a(?:b)?)[^/]*?'
31
+ * ```
32
+ *
33
+ * @param {String} `str` The string to convert.
34
+ * @param {Object} `options`
35
+ * @option {Boolean} [options] `esc` If `false` special characters will not be escaped. Defaults to `true`.
36
+ * @option {Boolean} [options] `regex` If `true` a regular expression is returned instead of a string.
37
+ * @return {String}
38
+ * @api public
39
+ */
40
+
41
+
42
+ function extglob(str, opts) {
43
+ opts = opts || {};
44
+ var o = {}, i = 0;
45
+
46
+ // fix common character reversals
47
+ // '*!(.js)' => '*.!(js)'
48
+ str = str.replace(/!\(([^\w*()])/g, '$1!(');
49
+
50
+ // support file extension negation
51
+ str = str.replace(/([*\/])\.!\([*]\)/g, function (m, ch) {
52
+ if (ch === '/') {
53
+ return escape('\\/[^.]+');
54
+ }
55
+ return escape('[^.]+');
56
+ });
57
+
58
+ // create a unique key for caching by
59
+ // combining the string and options
60
+ var key = str
61
+ + String(!!opts.regex)
62
+ + String(!!opts.contains)
63
+ + String(!!opts.escape);
64
+
65
+ if (cache.hasOwnProperty(key)) {
66
+ return cache[key];
67
+ }
68
+
69
+ if (!(re instanceof RegExp)) {
70
+ re = regex();
71
+ }
72
+
73
+ opts.negate = false;
74
+ var m;
75
+
76
+ while (m = re.exec(str)) {
77
+ var prefix = m[1];
78
+ var inner = m[3];
79
+ if (prefix === '!') {
80
+ opts.negate = true;
81
+ }
82
+
83
+ var id = '__EXTGLOB_' + (i++) + '__';
84
+ // use the prefix of the _last_ (outtermost) pattern
85
+ o[id] = wrap(inner, prefix, opts.escape);
86
+ str = str.split(m[0]).join(id);
87
+ }
88
+
89
+ var keys = Object.keys(o);
90
+ var len = keys.length;
91
+
92
+ // we have to loop again to allow us to convert
93
+ // patterns in reverse order (starting with the
94
+ // innermost/last pattern first)
95
+ while (len--) {
96
+ var prop = keys[len];
97
+ str = str.split(prop).join(o[prop]);
98
+ }
99
+
100
+ var result = opts.regex
101
+ ? toRegex(str, opts.contains, opts.negate)
102
+ : str;
103
+
104
+ result = result.split('.').join('\\.');
105
+
106
+ // cache the result and return it
107
+ return (cache[key] = result);
108
+ }
109
+
110
+ /**
111
+ * Convert `string` to a regex string.
112
+ *
113
+ * @param {String} `str`
114
+ * @param {String} `prefix` Character that determines how to wrap the string.
115
+ * @param {Boolean} `esc` If `false` special characters will not be escaped. Defaults to `true`.
116
+ * @return {String}
117
+ */
118
+
119
+ function wrap(inner, prefix, esc) {
120
+ if (esc) inner = escape(inner);
121
+
122
+ switch (prefix) {
123
+ case '!':
124
+ return '(?!' + inner + ')[^/]' + (esc ? '%%%~' : '*?');
125
+ case '@':
126
+ return '(?:' + inner + ')';
127
+ case '+':
128
+ return '(?:' + inner + ')+';
129
+ case '*':
130
+ return '(?:' + inner + ')' + (esc ? '%%' : '*')
131
+ case '?':
132
+ return '(?:' + inner + '|)';
133
+ default:
134
+ return inner;
135
+ }
136
+ }
137
+
138
+ function escape(str) {
139
+ str = str.split('*').join('[^/]%%%~');
140
+ str = str.split('.').join('\\.');
141
+ return str;
142
+ }
143
+
144
+ /**
145
+ * extglob regex.
146
+ */
147
+
148
+ function regex() {
149
+ return /(\\?[@?!+*$]\\?)(\(([^()]*?)\))/;
150
+ }
151
+
152
+ /**
153
+ * Negation regex
154
+ */
155
+
156
+ function negate(str) {
157
+ return '(?!^' + str + ').*$';
158
+ }
159
+
160
+ /**
161
+ * Create the regex to do the matching. If
162
+ * the leading character in the `pattern` is `!`
163
+ * a negation regex is returned.
164
+ *
165
+ * @param {String} `pattern`
166
+ * @param {Boolean} `contains` Allow loose matching.
167
+ * @param {Boolean} `isNegated` True if the pattern is a negation pattern.
168
+ */
169
+
170
+ function toRegex(pattern, contains, isNegated) {
171
+ var prefix = contains ? '^' : '';
172
+ var after = contains ? '$' : '';
173
+ pattern = ('(?:' + pattern + ')' + after);
174
+ if (isNegated) {
175
+ pattern = prefix + negate(pattern);
176
+ }
177
+ return new RegExp(prefix + pattern);
178
+ }