Method code for $code_lib.random_word()

[Turn off line numbering]
  1: arg @args;
  2: var len, out, con, vow, rare, c, caps, maxcaps, flag, last, min, max, extra;
  3: 
  4: [(min ?= 3), (max ?= 10), (extra ?= #[])] = args;
  5: len = random(max - min) + min;
  6: out = "";
  7: con = "bcdfghjklmnprst";
  8: rare = ["q", "aa", "ee", "oo", "qu", "v", "w", "x", "z", "y"];
  9: vow = "aeiou";
 10: if ((| extra['con] |))
 11:     con += extra['con];
 12: if ((| extra['vow] |))
 13:     vow += extra['vow];
 14: if ((| extra['rare] |))
 15:     rare += extra['rare];
 16: flag = random(15);
 17: maxcaps = random(4) + 2;
 18: while (strlen(out) < len) {
 19:     switch (flag) {
 20:         case 1, 2:
 21:             if (rare) {
 22:                 c = rare.random();
 23:                 if (random(2) == 1)
 24:                     rare = setremove(rare, c);
 25:                 out += c;
 26:                 flag = random(15);
 27:             }
 28:         case 3 .. 8:
 29:             c = vow.random();
 30:             while (c == last)
 31:                 c = vow.random();
 32:             out += c;
 33:             flag = random(7) + 3;
 34:         case 9 .. 15:
 35:             c = con.random();
 36:             while (c == last)
 37:                 c = con.random();
 38:             out += c;
 39:             flag = random(10);
 40:     }
 41:     last = c;
 42: }
 43: return out;

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

Tlon