版博士V2.0程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

34 line
1.4 KiB

  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.titleCase = void 0;
  4. var SMALL_WORDS = /\b(?:an?d?|a[st]|because|but|by|en|for|i[fn]|neither|nor|o[fnr]|only|over|per|so|some|tha[tn]|the|to|up|upon|vs?\.?|versus|via|when|with|without|yet)\b/i;
  5. var TOKENS = /[^\s:–—-]+|./g;
  6. var WHITESPACE = /\s/;
  7. var IS_MANUAL_CASE = /.(?=[A-Z]|\..)/;
  8. var ALPHANUMERIC_PATTERN = /[A-Za-z0-9\u00C0-\u00FF]/;
  9. function titleCase(input) {
  10. var result = "";
  11. var m;
  12. // tslint:disable-next-line
  13. while ((m = TOKENS.exec(input)) !== null) {
  14. var token = m[0], index = m.index;
  15. if (
  16. // Ignore already capitalized words.
  17. !IS_MANUAL_CASE.test(token) &&
  18. // Ignore small words except at beginning or end.
  19. (!SMALL_WORDS.test(token) ||
  20. index === 0 ||
  21. index + token.length === input.length) &&
  22. // Ignore URLs.
  23. (input.charAt(index + token.length) !== ":" ||
  24. WHITESPACE.test(input.charAt(index + token.length + 1)))) {
  25. // Find and uppercase first word character, skips over *modifiers*.
  26. result += token.replace(ALPHANUMERIC_PATTERN, function (m) { return m.toUpperCase(); });
  27. continue;
  28. }
  29. result += token;
  30. }
  31. return result;
  32. }
  33. exports.titleCase = titleCase;
  34. //# sourceMappingURL=index.js.map