@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/CHANGELOG.md +59 -0
- package/README.md +27 -0
- package/dist/index.cjs +13 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +13 -4
- package/dist/index.js.map +1 -1
- package/package.json +6 -1
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
|
|
917
|
-
var
|
|
918
|
-
var
|
|
919
|
-
var
|
|
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));
|