code: function(str, rules, skip, override)
      {
          if (override)
          {
              str = override;
          }
          else
          {
              var ignore = (skip.indexOf(str.toLowerCase()) > -1);
              if (!ignore)
              {
                  for (var x = 0; x < rules.length; x++)
                  {
                      if (str.match(rules[x][0]))
                      {
                          str = str.replace(rules[x][0], rules[x][1]);
                          break;
                      }
                  }
              }
          }
          return str;
      }
docs: /*
  This is a helper method that applies rules based replacement to a String
  Signature:
  InflectionJS.apply_rules(str, rules, skip, override) == String
  Arguments:
  str - String - String to modify and return based on the passed rules
  rules - Array: [RegExp, String] - Regexp to match paired with String to use for replacement
  skip - Array: [String] - Strings to skip if they match
  override - String (optional) - String to return as though this method succeeded (used to conform to APIs)
  Returns:
  String - passed String modified by passed rules
  Examples:
  InflectionJS.apply_rules("cows", InflectionJs.singular_rules) === 'cow'