code: function(str, param) {
        var val;
  
        // Simple numerals such as "one" are mapped directly in
        // the numeral map so catch up front if there is a match.
        if (hasOwn(this.numeralMap, str)) {
          val = this.numeralMap[str];
        }
  
        // TODO: perf test isNaN vs other methods
        if (isNaN(val)) {
          val = this.parseRegularNumerals(str);
        }
  
        if (isNaN(val)) {
          val = this.parseIrregularNumerals(str);
        }
  
        if (param === 'month') {
          // Months are the only numeric date field
          // whose value is not the same as its number.
          val -= 1;
        }
  
        return val;
      }
docs: TODO: analyze performance of parsing first vs checking numeralMap first.