@spintax/core 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -904,19 +904,26 @@ var WS = " \\t\\r\\n\\f\\x0B";
904
904
  var S = `[${WS}]`;
905
905
  var DOMAIN_PART = "(?:(?:(?:xn--)?[\\p{L}\\p{N}]+(?:-[\\p{L}\\p{N}]+)*)\\.)+(?:xn--[a-z0-9\\-]{2,59}|[\\p{L}][\\p{L}\\p{N}-]{1,62})";
906
906
  var URL_RE = new RegExp(`(?:https?|ftp):\\/\\/[^${WS}<>"')\\]]+`, "giu");
907
+ var MAILTEL_RE = new RegExp(`(?:mailto|tel):[^${WS}<>"')\\]]+`, "giu");
907
908
  var EMAIL_RE = new RegExp(`[a-z0-9._%+\\-]+@${DOMAIN_PART}\\b`, "giu");
908
909
  var DOMAIN_RE = new RegExp(`\\b${DOMAIN_PART}\\b`, "giu");
909
910
  var DECIMAL_RE = /\b\d+\.\d+\b/gu;
910
911
  var MULTI_ABBR_RE = new RegExp(`\\b(?:\\p{L}{1,2}\\.${S}*){2,}`, "gu");
911
912
  var SINGLE_ABBR_RE = new RegExp(`(?<![\\p{L}\\p{N}])(?:${SINGLE_ABBREVS.join("|")})\\.(?=${S}|$|<)`, "giu");
912
913
  var TRAILING_PUNCT_RE = /([.,;:!]+)$/u;
914
+ var SENTENCE_OPENERS = "\xBF\xA1";
915
+ var OPEN = `[${SENTENCE_OPENERS}]?${S}*`;
913
916
  var SPACE_BEFORE_PUNCT_RE = new RegExp(`${S}+([,;:!?.])`, "gu");
914
917
  var SPACE_AFTER_COMMA_RE = new RegExp(`([,;:])(?!\\d)(?!${S}|$|<)`, "gu");
915
918
  var SPACE_AFTER_SENTENCE_RE = new RegExp(`([.!?])(?!\\d)(?!${S}|$|<)`, "gu");
916
- var CAP_FIRST_RE = new RegExp(`^(${S}*(?:<[^>]+>${S}*)*)(\\p{Ll})`, "u");
917
- var CAP_AFTER_SENTENCE_RE = new RegExp(`([.!?\u2026])(${S}*(?:<\\/?[^>]+>${S}*)*)(\\p{Ll})`, "gu");
918
- var CAP_AFTER_BLOCK_RE = new RegExp(`(<\\/?(?:p|h[1-6]|li|blockquote|div|td|th)[^>]*>${S}*)(\\p{Ll})`, "giu");
919
- var CAP_AFTER_BREAK_RE = new RegExp(`(\\n${S}*)(\\p{Ll})`, "gu");
919
+ var SPACE_AFTER_OPENER_RE = new RegExp(`([${SENTENCE_OPENERS}])${S}+`, "gu");
920
+ var CAP_FIRST_RE = new RegExp(`^(${S}*(?:<[^>]+>${S}*)*${OPEN})(\\p{Ll})`, "u");
921
+ var CAP_AFTER_SENTENCE_RE = new RegExp(`([.!?\u2026])(${S}*(?:<\\/?[^>]+>${S}*)*${OPEN})(\\p{Ll})`, "gu");
922
+ var CAP_AFTER_BLOCK_RE = new RegExp(
923
+ `(<\\/?(?:p|h[1-6]|li|blockquote|div|td|th)[^>]*>${S}*${OPEN})(\\p{Ll})`,
924
+ "giu"
925
+ );
926
+ var CAP_AFTER_BREAK_RE = new RegExp(`(\\n${S}*${OPEN})(\\p{Ll})`, "gu");
920
927
  var up = (ch) => ch.toUpperCase();
921
928
  function postProcess(input) {
922
929
  const placeholders = /* @__PURE__ */ new Map();
@@ -938,6 +945,7 @@ function postProcess(input) {
938
945
  };
939
946
  let text = input;
940
947
  text = text.replace(URL_RE, (m) => storeWithTrailingPunct(m, "URL"));
948
+ text = text.replace(MAILTEL_RE, (m) => storeWithTrailingPunct(m, "URI"));
941
949
  text = text.replace(EMAIL_RE, (m) => store(m, "EMAIL"));
942
950
  text = text.replace(DOMAIN_RE, (m) => store(m, "DOM"));
943
951
  text = text.replace(DECIMAL_RE, (m) => store(m, "NUM"));
@@ -947,6 +955,7 @@ function postProcess(input) {
947
955
  text = text.replace(SPACE_BEFORE_PUNCT_RE, "$1");
948
956
  text = text.replace(SPACE_AFTER_COMMA_RE, "$1 ");
949
957
  text = text.replace(SPACE_AFTER_SENTENCE_RE, "$1 ");
958
+ text = text.replace(SPACE_AFTER_OPENER_RE, "$1");
950
959
  text = text.replace(CAP_FIRST_RE, (_m, lead, ch) => lead + up(ch));
951
960
  text = text.replace(CAP_AFTER_SENTENCE_RE, (_m, p, gap, ch) => p + gap + up(ch));
952
961
  text = text.replace(CAP_AFTER_BLOCK_RE, (_m, tag, ch) => tag + up(ch));