Method code for $code_lib.random_password2()

[Turn off line numbering]
  1: var len, out, con, vow, rare, more, c, caps, maxcaps, flag, last, special;
  2: 
  3: len = random(6) + 7;
  4: out = "";
  5: con = "bcdfghjklmnprst";
  6: rare = ["q", "aa", "ee", "oo", "qu", "v", "w", "x", "z", "y"];
  7: vow = "aeiou";
  8: more = "1234567890+,:.@'\"/!#%*^~";
  9: flag = random(15);
 10: maxcaps = random(4) + 2;
 11: while (strlen(out) < len) {
 12:     switch (flag) {
 13:         case 1, 2:
 14:             special++;
 15:             c = more.random();
 16:             out += c;
 17:             flag = random(15);
 18:         case 3:
 19:             if (rare) {
 20:                 c = rare.random();
 21:                 if (random(2) == 1)
 22:                     rare = setremove(rare, c);
 23:                 out += c;
 24:                 flag = random(15);
 25:             }
 26:         case 4 .. 7:
 27:             c = vow.random();
 28:             out += c;
 29:             flag = random(7) + 8;
 30:         case 8 .. 15:
 31:             c = con.random();
 32:             while (c == last)
 33:                 c = con.random();
 34:             out += c;
 35:             flag = random(15);
 36:     }
 37:     last = c;
 38: }
 39: if (!special) {
 40:     for c in [1 .. random(len / 2)] {
 41:         special = more.random();
 42:         c = random(len);
 43:         out = strgraft(out, c, special);
 44:     }
 45: }
 46: return out;

// Created 27-Mar-1995 as a part of ColdCore, see: @help Credit

Tlon