aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarak <[email protected]>2014-09-21 10:27:32 +0200
committerMarak <[email protected]>2014-09-21 10:28:41 +0200
commit4aa41346e1556080123d404eefed9bd61138d1d2 (patch)
tree269e8d793691e75e7395ce93ce2efafa3d61b56f
parent851b286d041c137bada54c8882cf3e024c43bb2d (diff)
downloadfaker-4aa41346e1556080123d404eefed9bd61138d1d2.tar.xz
faker-4aa41346e1556080123d404eefed9bd61138d1d2.zip
[api] Added internet.password method using `password-generator` library.
[dist] Added `password-generator` to vendor Closes #33
-rw-r--r--lib/internet.js9
-rw-r--r--vendor/password-generator.js65
2 files changed, 74 insertions, 0 deletions
diff --git a/lib/internet.js b/lib/internet.js
index fdef75fb..82a1d6ac 100644
--- a/lib/internet.js
+++ b/lib/internet.js
@@ -1,4 +1,5 @@
var faker = require('../index'),
+ password_generator = require('../vendor/password-generator.js'),
random_ua = require('../vendor/user-agent');
var internet = {
@@ -67,6 +68,14 @@ var internet = {
var blue = Math.floor((faker.random.number(256) + baseRed255) / 2);
return '#' + red.toString(16) + green.toString(16) + blue.toString(16);
+ },
+
+ password: function (len, memorable, pattern, prefix) {
+ len = len || 15;
+ if (typeof memorable === "undefined") {
+ memorable = false;
+ }
+ return password_generator(len, memorable, pattern, prefix);
}
};
diff --git a/vendor/password-generator.js b/vendor/password-generator.js
new file mode 100644
index 00000000..35ca4486
--- /dev/null
+++ b/vendor/password-generator.js
@@ -0,0 +1,65 @@
+/*
+ * password-generator
+ * Copyright(c) 2011-2013 Bermi Ferrer <[email protected]>
+ * MIT Licensed
+ */
+(function (root) {
+
+ var localName, consonant, letter, password, vowel;
+ letter = /[a-zA-Z]$/;
+ vowel = /[aeiouAEIOU]$/;
+ consonant = /[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]$/;
+
+
+ // Defines the name of the local variable the passwordGenerator library will use
+ // this is specially useful if window.passwordGenerator is already being used
+ // by your application and you want a different name. For example:
+ // // Declare before including the passwordGenerator library
+ // var localPasswordGeneratorLibraryName = 'pass';
+ localName = root.localPasswordGeneratorLibraryName || "generatePassword",
+
+ password = function (length, memorable, pattern, prefix) {
+ var char, n;
+ if (length == null) {
+ length = 10;
+ }
+ if (memorable == null) {
+ memorable = true;
+ }
+ if (pattern == null) {
+ pattern = /\w/;
+ }
+ if (prefix == null) {
+ prefix = '';
+ }
+ if (prefix.length >= length) {
+ return prefix;
+ }
+ if (memorable) {
+ if (prefix.match(consonant)) {
+ pattern = vowel;
+ } else {
+ pattern = consonant;
+ }
+ }
+ n = Math.floor(Math.random() * 94) + 33;
+ char = String.fromCharCode(n);
+ if (memorable) {
+ char = char.toLowerCase();
+ }
+ if (!char.match(pattern)) {
+ return password(length, memorable, pattern, prefix);
+ }
+ return password(length, memorable, pattern, "" + prefix + char);
+ };
+
+
+ ((typeof exports !== 'undefined') ? exports : root)[localName] = password;
+ if (typeof exports !== 'undefined') {
+ if (typeof module !== 'undefined' && module.exports) {
+ module.exports = password;
+ }
+ }
+
+ // Establish the root object, `window` in the browser, or `global` on the server.
+}(this)); \ No newline at end of file