Method code for $world_time.from_english()

[Turn off line numbering]
  1: arg string, @units;
  2: var words, len, nsec, n, i, entry, unit;
  3: 
  4: [(units ?= time_units)] = units;
  5: words = string.explode();
  6: words = words.setremove_all(["and"]);
  7: if (listlen(words) == 1) {
  8:     if (!(words = regexp(words[1], "^([0-9]+)(.*)$")))
  9:         throw(~args, "Invalid time.");
 10: }
 11: len = listlen(words);
 12: if (len % 2)
 13:     throw(~args, "Unrecognized time '" + string + "', no descriptor.");
 14: nsec = (n = 0);
 15: for i in [1 .. len] {
 16:     if (i % 2 == 1) {
 17:         if (words[i].is_numeric())
 18:             n = words[i].to_number();
 19:         else if (words[i] in ["a", "an"])
 20:             n = 1;
 21:         else if (words[i] == "no")
 22:             n = 0;
 23:         else
 24:             throw(~invarg, "Invalid time element '" + n + "'.");
 25:     } else {
 26:         unit = words[i];
 27:         unit = unit.strip(",");
 28:         nsec += (> units[.parse_unit(unit, units)][1] <) * n;
 29:     }
 30: }
 31: return nsec;

["// Created 19-Nov-1996 as a part of ColdCore, see: @help Credit"]

the Cold Dark