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,156 @@
1
+ /*!
2
+ * parse-glob <https://github.com/jonschlinkert/parse-glob>
3
+ *
4
+ * Copyright (c) 2015, Jon Schlinkert.
5
+ * Licensed under the MIT License.
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ var isGlob = require('is-glob');
11
+ var findBase = require('glob-base');
12
+ var extglob = require('is-extglob');
13
+ var dotfile = require('is-dotfile');
14
+
15
+ /**
16
+ * Expose `cache`
17
+ */
18
+
19
+ var cache = module.exports.cache = {};
20
+
21
+ /**
22
+ * Parse a glob pattern into tokens.
23
+ *
24
+ * When no paths or '**' are in the glob, we use a
25
+ * different strategy for parsing the filename, since
26
+ * file names can contain braces and other difficult
27
+ * patterns. such as:
28
+ *
29
+ * - `*.{a,b}`
30
+ * - `(**|*.js)`
31
+ */
32
+
33
+ module.exports = function parseGlob(glob) {
34
+ if (cache.hasOwnProperty(glob)) {
35
+ return cache[glob];
36
+ }
37
+
38
+ var tok = {};
39
+ tok.orig = glob;
40
+ tok.is = {};
41
+
42
+ // unescape dots and slashes in braces/brackets
43
+ glob = escape(glob);
44
+
45
+ var parsed = findBase(glob);
46
+ tok.is.glob = parsed.isGlob;
47
+
48
+ tok.glob = parsed.glob;
49
+ tok.base = parsed.base;
50
+ var segs = /([^\/]*)$/.exec(glob);
51
+
52
+ tok.path = {};
53
+ tok.path.dirname = '';
54
+ tok.path.basename = segs[1] || '';
55
+ tok.path.dirname = glob.split(tok.path.basename).join('') || '';
56
+ var basename = (tok.path.basename || '').split('.') || '';
57
+ tok.path.filename = basename[0] || '';
58
+ tok.path.extname = basename.slice(1).join('.') || '';
59
+ tok.path.ext = '';
60
+
61
+ if (isGlob(tok.path.dirname) && !tok.path.basename) {
62
+ if (!/\/$/.test(tok.glob)) {
63
+ tok.path.basename = tok.glob;
64
+ }
65
+ tok.path.dirname = tok.base;
66
+ }
67
+
68
+ if (glob.indexOf('/') === -1 && !tok.is.globstar) {
69
+ tok.path.dirname = '';
70
+ tok.path.basename = tok.orig;
71
+ }
72
+
73
+ var dot = tok.path.basename.indexOf('.');
74
+ if (dot !== -1) {
75
+ tok.path.filename = tok.path.basename.slice(0, dot);
76
+ tok.path.extname = tok.path.basename.slice(dot);
77
+ }
78
+
79
+ if (tok.path.extname.charAt(0) === '.') {
80
+ var exts = tok.path.extname.split('.');
81
+ tok.path.ext = exts[exts.length - 1];
82
+ }
83
+
84
+ // unescape dots and slashes in braces/brackets
85
+ tok.glob = unescape(tok.glob);
86
+ tok.path.dirname = unescape(tok.path.dirname);
87
+ tok.path.basename = unescape(tok.path.basename);
88
+ tok.path.filename = unescape(tok.path.filename);
89
+ tok.path.extname = unescape(tok.path.extname);
90
+
91
+ // Booleans
92
+ var is = (glob && tok.is.glob);
93
+ tok.is.negated = glob && glob.charAt(0) === '!';
94
+ tok.is.extglob = glob && extglob(glob);
95
+ tok.is.braces = has(is, glob, '{');
96
+ tok.is.brackets = has(is, glob, '[:');
97
+ tok.is.globstar = has(is, glob, '**');
98
+ tok.is.dotfile = dotfile(tok.path.basename) || dotfile(tok.path.filename);
99
+ tok.is.dotdir = dotdir(tok.path.dirname);
100
+ return (cache[glob] = tok);
101
+ }
102
+
103
+ /**
104
+ * Returns true if the glob matches dot-directories.
105
+ *
106
+ * @param {Object} `tok` The tokens object
107
+ * @param {Object} `path` The path object
108
+ * @return {Object}
109
+ */
110
+
111
+ function dotdir(base) {
112
+ if (base.indexOf('/.') !== -1) {
113
+ return true;
114
+ }
115
+ if (base.charAt(0) === '.' && base.charAt(1) !== '/') {
116
+ return true;
117
+ }
118
+ return false;
119
+ }
120
+
121
+ /**
122
+ * Returns true if the pattern has the given `ch`aracter(s)
123
+ *
124
+ * @param {Object} `glob` The glob pattern.
125
+ * @param {Object} `ch` The character to test for
126
+ * @return {Object}
127
+ */
128
+
129
+ function has(is, glob, ch) {
130
+ return is && glob.indexOf(ch) !== -1;
131
+ }
132
+
133
+ /**
134
+ * Escape/unescape utils
135
+ */
136
+
137
+ function escape(str) {
138
+ var re = /\{([^{}]*?)}|\(([^()]*?)\)|\[([^\[\]]*?)\]/g;
139
+ return str.replace(re, function (outter, braces, parens, brackets) {
140
+ var inner = braces || parens || brackets;
141
+ if (!inner) { return outter; }
142
+ return outter.split(inner).join(esc(inner));
143
+ });
144
+ }
145
+
146
+ function esc(str) {
147
+ str = str.split('/').join('__SLASH__');
148
+ str = str.split('.').join('__DOT__');
149
+ return str;
150
+ }
151
+
152
+ function unescape(str) {
153
+ str = str.split('__SLASH__').join('/');
154
+ str = str.split('__DOT__').join('.');
155
+ return str;
156
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "parse-glob",
3
+ "description": "Parse a glob pattern into an object of tokens.",
4
+ "version": "3.0.4",
5
+ "homepage": "https://github.com/jonschlinkert/parse-glob",
6
+ "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
7
+ "repository": "jonschlinkert/parse-glob",
8
+ "bugs": {
9
+ "url": "https://github.com/jonschlinkert/parse-glob/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
+ "prepublish": "browserify -o browser.js -e index.js"
22
+ },
23
+ "dependencies": {
24
+ "glob-base": "^0.3.0",
25
+ "is-dotfile": "^1.0.0",
26
+ "is-extglob": "^1.0.0",
27
+ "is-glob": "^2.0.0"
28
+ },
29
+ "devDependencies": {
30
+ "browserify": "^9.0.3",
31
+ "lodash": "^3.3.1",
32
+ "mocha": "*"
33
+ },
34
+ "keywords": [
35
+ "glob",
36
+ "match",
37
+ "bash",
38
+ "expand",
39
+ "expansion",
40
+ "expression",
41
+ "file",
42
+ "files",
43
+ "filter",
44
+ "find",
45
+ "glob",
46
+ "globbing",
47
+ "globs",
48
+ "globstar",
49
+ "match",
50
+ "matcher",
51
+ "matches",
52
+ "matching",
53
+ "path",
54
+ "pattern",
55
+ "patterns",
56
+ "regex",
57
+ "regexp",
58
+ "regular",
59
+ "shell",
60
+ "wildcard"
61
+ ]
62
+ }
@@ -0,0 +1,54 @@
1
+ /*!
2
+ * preserve <https://github.com/jonschlinkert/preserve>
3
+ *
4
+ * Copyright (c) 2014-2015, Jon Schlinkert.
5
+ * Licensed under the MIT license.
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ /**
11
+ * Replace tokens in `str` with a temporary, heuristic placeholder.
12
+ *
13
+ * ```js
14
+ * tokens.before('{a\\,b}');
15
+ * //=> '{__ID1__}'
16
+ * ```
17
+ *
18
+ * @param {String} `str`
19
+ * @return {String} String with placeholders.
20
+ * @api public
21
+ */
22
+
23
+ exports.before = function before(str, re) {
24
+ return str.replace(re, function (match) {
25
+ var id = randomize();
26
+ cache[id] = match;
27
+ return '__ID' + id + '__';
28
+ });
29
+ };
30
+
31
+ /**
32
+ * Replace placeholders in `str` with original tokens.
33
+ *
34
+ * ```js
35
+ * tokens.after('{__ID1__}');
36
+ * //=> '{a\\,b}'
37
+ * ```
38
+ *
39
+ * @param {String} `str` String with placeholders
40
+ * @return {String} `str` String with original tokens.
41
+ * @api public
42
+ */
43
+
44
+ exports.after = function after(str) {
45
+ return str.replace(/__ID(.{5})__/g, function (_, id) {
46
+ return cache[id];
47
+ });
48
+ };
49
+
50
+ function randomize() {
51
+ return Math.random().toString().slice(2, 7);
52
+ }
53
+
54
+ var cache = {};
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "preserve",
3
+ "description": "Temporarily substitute tokens in the given `string` with placeholders, then put them back after transforming the string.",
4
+ "version": "0.2.0",
5
+ "homepage": "https://github.com/jonschlinkert/preserve",
6
+ "author": {
7
+ "name": "Jon Schlinkert",
8
+ "url": "https://github.com/jonschlinkert"
9
+ },
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git://github.com/jonschlinkert/preserve.git"
13
+ },
14
+ "bugs": {
15
+ "url": "https://github.com/jonschlinkert/preserve/issues"
16
+ },
17
+ "license": {
18
+ "type": "MIT",
19
+ "url": "https://github.com/jonschlinkert/preserve/blob/master/LICENSE-MIT"
20
+ },
21
+ "main": "index.js",
22
+ "engines": {
23
+ "node": ">=0.10.0"
24
+ },
25
+ "scripts": {
26
+ "test": "mocha -R spec"
27
+ },
28
+ "devDependencies": {
29
+ "benchmarked": "^0.1.3",
30
+ "chalk": "^0.5.1",
31
+ "js-beautify": "^1.5.4",
32
+ "mocha": "*",
33
+ "should": "*"
34
+ },
35
+ "keywords": [
36
+ "escape",
37
+ "format",
38
+ "placeholder",
39
+ "placeholders",
40
+ "prettify",
41
+ "regex",
42
+ "replace",
43
+ "template",
44
+ "templates",
45
+ "token",
46
+ "tokens"
47
+ ]
48
+ }
@@ -0,0 +1,48 @@
1
+ /*!
2
+ * preserve <https://github.com/jonschlinkert/preserve>
3
+ *
4
+ * Copyright (c) 2014-2015, Jon Schlinkert.
5
+ * Licensed under the MIT License
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ var should = require('should');
11
+ var tokens = require('./');
12
+
13
+ var re = /<%=\s*[^>]+%>/g;
14
+ var pretty = function(str) {
15
+ return require('js-beautify').html(str, {
16
+ indent_char: ' ',
17
+ indent_size: 2,
18
+ });
19
+ };
20
+
21
+ describe('preserve tokens', function () {
22
+ var testRe = /__ID.{5}__\n__ID.{5}__\n__ID.{5}__/;
23
+ var re = /<%=\s*[^>]+%>/g;
24
+
25
+ it('should (e.g. shouldn\'t, but will) mangle tokens in the given string', function () {
26
+ var html = pretty('<ul><li><%= name %></li></ul>');
27
+ html.should.equal('<ul>\n <li>\n <%=n ame %>\n </li>\n</ul>');
28
+ });
29
+
30
+ it('should preserve tokens in the given string', function () {
31
+ var html = tokens.after(pretty(tokens.before('<ul><li><%= name %></li></ul>', re)));
32
+ html.should.equal('<ul>\n <li><%= name %></li>\n</ul>');
33
+ });
34
+
35
+ describe('.before()', function () {
36
+ it('should replace matches with placeholder tokens:', function () {
37
+ tokens.before('<%= a %>\n<%= b %>\n<%= c %>', re).should.match(testRe);
38
+ });
39
+ });
40
+
41
+ describe('tokens.after()', function () {
42
+ it('should replace placeholder tokens with original values:', function () {
43
+ var before = tokens.before('<%= a %>\n<%= b %>\n<%= c %>', re);
44
+ before.should.match(testRe);
45
+ tokens.after(before).should.equal('<%= a %>\n<%= b %>\n<%= c %>');
46
+ });
47
+ });
48
+ });
@@ -0,0 +1,82 @@
1
+ /*!
2
+ * randomatic <https://github.com/jonschlinkert/randomatic>
3
+ *
4
+ * Copyright (c) 2014-2017, Jon Schlinkert.
5
+ * Released under the MIT License.
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ var isNumber = require('is-number');
11
+ var typeOf = require('kind-of');
12
+
13
+ /**
14
+ * Expose `randomatic`
15
+ */
16
+
17
+ module.exports = randomatic;
18
+
19
+ /**
20
+ * Available mask characters
21
+ */
22
+
23
+ var type = {
24
+ lower: 'abcdefghijklmnopqrstuvwxyz',
25
+ upper: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
26
+ number: '0123456789',
27
+ special: '~!@#$%^&()_+-={}[];\',.'
28
+ };
29
+
30
+ type.all = type.lower + type.upper + type.number + type.special;
31
+
32
+ /**
33
+ * Generate random character sequences of a specified `length`,
34
+ * based on the given `pattern`.
35
+ *
36
+ * @param {String} `pattern` The pattern to use for generating the random string.
37
+ * @param {String} `length` The length of the string to generate.
38
+ * @param {String} `options`
39
+ * @return {String}
40
+ * @api public
41
+ */
42
+
43
+ function randomatic(pattern, length, options) {
44
+ if (typeof pattern === 'undefined') {
45
+ throw new Error('randomatic expects a string or number.');
46
+ }
47
+
48
+ var custom = false;
49
+ if (arguments.length === 1) {
50
+ if (typeof pattern === 'string') {
51
+ length = pattern.length;
52
+
53
+ } else if (isNumber(pattern)) {
54
+ options = {}; length = pattern; pattern = '*';
55
+ }
56
+ }
57
+
58
+ if (typeOf(length) === 'object' && length.hasOwnProperty('chars')) {
59
+ options = length;
60
+ pattern = options.chars;
61
+ length = pattern.length;
62
+ custom = true;
63
+ }
64
+
65
+ var opts = options || {};
66
+ var mask = '';
67
+ var res = '';
68
+
69
+ // Characters to be used
70
+ if (pattern.indexOf('?') !== -1) mask += opts.chars;
71
+ if (pattern.indexOf('a') !== -1) mask += type.lower;
72
+ if (pattern.indexOf('A') !== -1) mask += type.upper;
73
+ if (pattern.indexOf('0') !== -1) mask += type.number;
74
+ if (pattern.indexOf('!') !== -1) mask += type.special;
75
+ if (pattern.indexOf('*') !== -1) mask += type.all;
76
+ if (custom) mask += pattern;
77
+
78
+ while (length--) {
79
+ res += mask.charAt(parseInt(Math.random() * mask.length, 10));
80
+ }
81
+ return res;
82
+ };