@arbidocs/coedit 0.4.122 → 0.4.124

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.
@@ -438,6 +438,8 @@ interface TermEverywhereResult {
438
438
  /** The definition was not in the document and was added to its Definitions section. */
439
439
  addedDefinition: boolean;
440
440
  }
441
+ /** A term or variant without a leading article ("the Supplier" is the term "Supplier"). */
442
+ declare const withoutArticle: (words: string) => string;
441
443
  /**
442
444
  * Every use of the term (when linking) and of its variants in `paragraphs`: the ones to change,
443
445
  * and the ones left as they are with the reason. `bookmark` is the definition's, which tells an
@@ -495,4 +497,4 @@ declare function documentReader(view: DocumentTrees): DocumentReader;
495
497
  /** Read a document from its bytes (a collaboration room's `readRoom`). Throws on a bad package. */
496
498
  declare function readDocument(bytes: Uint8Array): DocumentReader;
497
499
 
498
- export { AGENT_UNDO_MAP, type BrokenReference, CHARACTER_STYLES, type CrossReference, type CrossReferenceMode, CrossReferenceTarget, DEFINITIONS_HEADING, DEFINITION_BOOKMARK_PREFIX, type DefinitionText, DefinitionsPort, type DefinitionsSection, DocParagraph, DocPoint, DocumentNumbering, type DocumentReader, type DocumentTrees, type InsertTermResult, LevelOf, ListItemInfo, OoxmlNodeLike, type ParagraphState, type ParsedDefinition, REF_BOOKMARK_PREFIX, ReferencesPort, type ReferencesReader, type RefreshResult, type ReplacedSpan, type SectionState, type StaleReference, type TermChange, TermEverywhereError, type TermEverywhereResult, type TermSkip, type TermSkipReason, type TermSpec, type TermUse, type UndoRecord, W_NAMESPACES, addDefinition, applyTermEverywhere, brokenCrossReferences, compareTerms, crossReferenceXml, crossReferences, definitionBookmark, definitionIdOfBookmark, definitionOfAnchor, definitionParagraphText, definitionParagraphXml, definitionTooltip, definitionsById, documentReader, documentReferenceTooltip, documentStyleIds, documentXml, docxPackage, ensureTargetBookmark, esc, fieldNodeIds, findDefinitionsSection, findTermUses, fragmentPackage, headingParagraphXml, hyperlinkRelationship, insertCrossReference, insertCrossReferenceField, insertDefinedTerm, insertDocumentReference, insertionIndex, isDefinitionsTitle, markCrossReferenceTarget, newRefBookmark, paragraphIndex, paragraphRunsXml, paragraphState, parseDefinition, readDocument, refFieldXml, refInstruction, refResult, refTooltip, refreshCrossReferences, replaceSpan, sectionStates, staleCrossReferences, stylesUsed, stylesXml, tableOf, tableState, termKey, termLinkXml, undoOps };
500
+ export { AGENT_UNDO_MAP, type BrokenReference, CHARACTER_STYLES, type CrossReference, type CrossReferenceMode, CrossReferenceTarget, DEFINITIONS_HEADING, DEFINITION_BOOKMARK_PREFIX, type DefinitionText, DefinitionsPort, type DefinitionsSection, DocParagraph, DocPoint, DocumentNumbering, type DocumentReader, type DocumentTrees, type InsertTermResult, LevelOf, ListItemInfo, OoxmlNodeLike, type ParagraphState, type ParsedDefinition, REF_BOOKMARK_PREFIX, ReferencesPort, type ReferencesReader, type RefreshResult, type ReplacedSpan, type SectionState, type StaleReference, type TermChange, TermEverywhereError, type TermEverywhereResult, type TermSkip, type TermSkipReason, type TermSpec, type TermUse, type UndoRecord, W_NAMESPACES, addDefinition, applyTermEverywhere, brokenCrossReferences, compareTerms, crossReferenceXml, crossReferences, definitionBookmark, definitionIdOfBookmark, definitionOfAnchor, definitionParagraphText, definitionParagraphXml, definitionTooltip, definitionsById, documentReader, documentReferenceTooltip, documentStyleIds, documentXml, docxPackage, ensureTargetBookmark, esc, fieldNodeIds, findDefinitionsSection, findTermUses, fragmentPackage, headingParagraphXml, hyperlinkRelationship, insertCrossReference, insertCrossReferenceField, insertDefinedTerm, insertDocumentReference, insertionIndex, isDefinitionsTitle, markCrossReferenceTarget, newRefBookmark, paragraphIndex, paragraphRunsXml, paragraphState, parseDefinition, readDocument, refFieldXml, refInstruction, refResult, refTooltip, refreshCrossReferences, replaceSpan, sectionStates, staleCrossReferences, stylesUsed, stylesXml, tableOf, tableState, termKey, termLinkXml, undoOps, withoutArticle };
@@ -438,6 +438,8 @@ interface TermEverywhereResult {
438
438
  /** The definition was not in the document and was added to its Definitions section. */
439
439
  addedDefinition: boolean;
440
440
  }
441
+ /** A term or variant without a leading article ("the Supplier" is the term "Supplier"). */
442
+ declare const withoutArticle: (words: string) => string;
441
443
  /**
442
444
  * Every use of the term (when linking) and of its variants in `paragraphs`: the ones to change,
443
445
  * and the ones left as they are with the reason. `bookmark` is the definition's, which tells an
@@ -495,4 +497,4 @@ declare function documentReader(view: DocumentTrees): DocumentReader;
495
497
  /** Read a document from its bytes (a collaboration room's `readRoom`). Throws on a bad package. */
496
498
  declare function readDocument(bytes: Uint8Array): DocumentReader;
497
499
 
498
- export { AGENT_UNDO_MAP, type BrokenReference, CHARACTER_STYLES, type CrossReference, type CrossReferenceMode, CrossReferenceTarget, DEFINITIONS_HEADING, DEFINITION_BOOKMARK_PREFIX, type DefinitionText, DefinitionsPort, type DefinitionsSection, DocParagraph, DocPoint, DocumentNumbering, type DocumentReader, type DocumentTrees, type InsertTermResult, LevelOf, ListItemInfo, OoxmlNodeLike, type ParagraphState, type ParsedDefinition, REF_BOOKMARK_PREFIX, ReferencesPort, type ReferencesReader, type RefreshResult, type ReplacedSpan, type SectionState, type StaleReference, type TermChange, TermEverywhereError, type TermEverywhereResult, type TermSkip, type TermSkipReason, type TermSpec, type TermUse, type UndoRecord, W_NAMESPACES, addDefinition, applyTermEverywhere, brokenCrossReferences, compareTerms, crossReferenceXml, crossReferences, definitionBookmark, definitionIdOfBookmark, definitionOfAnchor, definitionParagraphText, definitionParagraphXml, definitionTooltip, definitionsById, documentReader, documentReferenceTooltip, documentStyleIds, documentXml, docxPackage, ensureTargetBookmark, esc, fieldNodeIds, findDefinitionsSection, findTermUses, fragmentPackage, headingParagraphXml, hyperlinkRelationship, insertCrossReference, insertCrossReferenceField, insertDefinedTerm, insertDocumentReference, insertionIndex, isDefinitionsTitle, markCrossReferenceTarget, newRefBookmark, paragraphIndex, paragraphRunsXml, paragraphState, parseDefinition, readDocument, refFieldXml, refInstruction, refResult, refTooltip, refreshCrossReferences, replaceSpan, sectionStates, staleCrossReferences, stylesUsed, stylesXml, tableOf, tableState, termKey, termLinkXml, undoOps };
500
+ export { AGENT_UNDO_MAP, type BrokenReference, CHARACTER_STYLES, type CrossReference, type CrossReferenceMode, CrossReferenceTarget, DEFINITIONS_HEADING, DEFINITION_BOOKMARK_PREFIX, type DefinitionText, DefinitionsPort, type DefinitionsSection, DocParagraph, DocPoint, DocumentNumbering, type DocumentReader, type DocumentTrees, type InsertTermResult, LevelOf, ListItemInfo, OoxmlNodeLike, type ParagraphState, type ParsedDefinition, REF_BOOKMARK_PREFIX, ReferencesPort, type ReferencesReader, type RefreshResult, type ReplacedSpan, type SectionState, type StaleReference, type TermChange, TermEverywhereError, type TermEverywhereResult, type TermSkip, type TermSkipReason, type TermSpec, type TermUse, type UndoRecord, W_NAMESPACES, addDefinition, applyTermEverywhere, brokenCrossReferences, compareTerms, crossReferenceXml, crossReferences, definitionBookmark, definitionIdOfBookmark, definitionOfAnchor, definitionParagraphText, definitionParagraphXml, definitionTooltip, definitionsById, documentReader, documentReferenceTooltip, documentStyleIds, documentXml, docxPackage, ensureTargetBookmark, esc, fieldNodeIds, findDefinitionsSection, findTermUses, fragmentPackage, headingParagraphXml, hyperlinkRelationship, insertCrossReference, insertCrossReferenceField, insertDefinedTerm, insertDocumentReference, insertionIndex, isDefinitionsTitle, markCrossReferenceTarget, newRefBookmark, paragraphIndex, paragraphRunsXml, paragraphState, parseDefinition, readDocument, refFieldXml, refInstruction, refResult, refTooltip, refreshCrossReferences, replaceSpan, sectionStates, staleCrossReferences, stylesUsed, stylesXml, tableOf, tableState, termKey, termLinkXml, undoOps, withoutArticle };
package/dist/commands.js CHANGED
@@ -1169,19 +1169,28 @@ function definitionOfAnchor(anchor, definitions) {
1169
1169
  // src/commands/everywhere.ts
1170
1170
  var WORD = "[\\p{L}\\p{N}_\\-\u2010\u2011]";
1171
1171
  var escape = (text) => text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1172
+ var ARTICLE = /^(the|a|an|this|that|such|said)\s+/i;
1173
+ var withoutArticle = (words) => words.replace(/\s+/g, " ").trim().replace(ARTICLE, "");
1174
+ var anyCase = (word) => `[${word[0].toUpperCase()}${word[0].toLowerCase()}]${escape(word.slice(1))}`;
1172
1175
  function needlesOf(spec) {
1173
- const term = spec.term.replace(/\s+/g, " ").trim();
1174
- const variants = [
1175
- ...new Set((spec.variants ?? []).map((v) => v.replace(/\s+/g, " ").trim()))
1176
- ].filter((v) => v && v !== term);
1177
- const needles = [
1178
- ...variants.map((text) => ({ text, kind: "variant" })),
1179
- ...spec.link ? [{ text: term, kind: "term" }] : []
1180
- ];
1176
+ const term = withoutArticle(spec.term);
1177
+ const seen = /* @__PURE__ */ new Set();
1178
+ const needles = [];
1179
+ for (const raw of spec.variants ?? []) {
1180
+ const words = raw.replace(/\s+/g, " ").trim();
1181
+ const article = ARTICLE.exec(words)?.[1] ?? "";
1182
+ const text = words.slice(article ? ARTICLE.exec(words)[0].length : 0);
1183
+ const key = `${article.toLowerCase()} ${text}`;
1184
+ if (!text || text === term || seen.has(key)) continue;
1185
+ seen.add(key);
1186
+ needles.push({ text, article, kind: "variant" });
1187
+ }
1188
+ if (spec.link) needles.push({ text: term, article: "", kind: "term" });
1181
1189
  return needles.map((n) => ({
1182
- ...n,
1190
+ text: n.text,
1191
+ kind: n.kind,
1183
1192
  pattern: new RegExp(
1184
- `(?<!${WORD})${n.text.split(" ").map(escape).join("\\s+")}(?!${WORD})`,
1193
+ `(?<!${WORD})(${n.article ? `${anyCase(n.article)}\\s+` : ""})(${n.text.split(" ").map(escape).join("\\s+")})(?!${WORD})`,
1185
1194
  "gu"
1186
1195
  )
1187
1196
  }));
@@ -1190,7 +1199,7 @@ function matchesIn(text, needles) {
1190
1199
  const found = [];
1191
1200
  for (const needle of needles)
1192
1201
  for (const m of text.matchAll(needle.pattern))
1193
- found.push({ offset: m.index ?? 0, text: m[0], kind: needle.kind });
1202
+ found.push({ offset: (m.index ?? 0) + m[1].length, text: m[2], kind: needle.kind });
1194
1203
  found.sort((a, b) => a.offset - b.offset || b.text.length - a.text.length);
1195
1204
  const out = [];
1196
1205
  for (const m of found)
@@ -1201,7 +1210,9 @@ function matchesIn(text, needles) {
1201
1210
  var overlaps = (start, end, from, to) => start < to && from < end;
1202
1211
  function findTermUses(paragraphs, spec, bookmark) {
1203
1212
  const needles = needlesOf(spec);
1204
- const defining = new Set([spec.term, ...spec.variants ?? []].map(termKey));
1213
+ const defining = new Set(
1214
+ [spec.term, ...spec.variants ?? []].map((w) => termKey(withoutArticle(w)))
1215
+ );
1205
1216
  const uses = [];
1206
1217
  const skipped = [];
1207
1218
  for (const p of paragraphs) {
@@ -1240,7 +1251,7 @@ var TermEverywhereError = class extends Error {
1240
1251
  }
1241
1252
  };
1242
1253
  function applyTermEverywhere(port, spec, { accept } = {}) {
1243
- const term = spec.term.replace(/\s+/g, " ").trim();
1254
+ const term = withoutArticle(spec.term);
1244
1255
  if (!term) throw new Error("Name the defined term.");
1245
1256
  let addedDefinition = false;
1246
1257
  let link;
@@ -1343,6 +1354,6 @@ function readDocument(bytes) {
1343
1354
  return documentReader(opened.view);
1344
1355
  }
1345
1356
 
1346
- export { AGENT_UNDO_MAP, BROKEN_CROSS_REFERENCE_STYLE, CHARACTER_STYLES, CROSS_REFERENCE_STYLE, DEFINED_TERM_STYLE, DEFINITIONS_HEADING, DEFINITION_BOOKMARK_PREFIX, FIELD_ATOM, REF_BOOKMARK_PREFIX, TermEverywhereError, WATCHED_STYLES, W_NAMESPACES, addDefinition, applyTermEverywhere, brokenCrossReferences, compareTerms, crossReferenceXml, crossReferences, definitionBookmark, definitionIdOfBookmark, definitionOfAnchor, definitionParagraphText, definitionParagraphXml, definitionTooltip, definitionsById, documentNumbering, documentReader, documentReferenceTooltip, documentStyleIds, documentXml, docxPackage, engineLength, engineOffset, ensureTargetBookmark, esc, fieldNodeIds, filterTargets, findDefinitionsSection, findTermUses, fragmentPackage, headingParagraphXml, hyperlinkRelationship, insertCrossReference, insertCrossReferenceField, insertDefinedTerm, insertDocumentReference, insertionIndex, isDefinitionsTitle, listTargets, markCrossReferenceTarget, newRefBookmark, paragraphIndex, paragraphNumber, paragraphRunsXml, paragraphState, parseDefinition, readDocument, readParagraphs, refFieldXml, refInstruction, refResult, refTooltip, refreshCrossReferences, replaceSpan, sectionStates, staleCrossReferences, styleNames, stylesUsed, stylesXml, tableOf, tableState, termKey, termLinkXml, undoOps };
1357
+ export { AGENT_UNDO_MAP, BROKEN_CROSS_REFERENCE_STYLE, CHARACTER_STYLES, CROSS_REFERENCE_STYLE, DEFINED_TERM_STYLE, DEFINITIONS_HEADING, DEFINITION_BOOKMARK_PREFIX, FIELD_ATOM, REF_BOOKMARK_PREFIX, TermEverywhereError, WATCHED_STYLES, W_NAMESPACES, addDefinition, applyTermEverywhere, brokenCrossReferences, compareTerms, crossReferenceXml, crossReferences, definitionBookmark, definitionIdOfBookmark, definitionOfAnchor, definitionParagraphText, definitionParagraphXml, definitionTooltip, definitionsById, documentNumbering, documentReader, documentReferenceTooltip, documentStyleIds, documentXml, docxPackage, engineLength, engineOffset, ensureTargetBookmark, esc, fieldNodeIds, filterTargets, findDefinitionsSection, findTermUses, fragmentPackage, headingParagraphXml, hyperlinkRelationship, insertCrossReference, insertCrossReferenceField, insertDefinedTerm, insertDocumentReference, insertionIndex, isDefinitionsTitle, listTargets, markCrossReferenceTarget, newRefBookmark, paragraphIndex, paragraphNumber, paragraphRunsXml, paragraphState, parseDefinition, readDocument, readParagraphs, refFieldXml, refInstruction, refResult, refTooltip, refreshCrossReferences, replaceSpan, sectionStates, staleCrossReferences, styleNames, stylesUsed, stylesXml, tableOf, tableState, termKey, termLinkXml, undoOps, withoutArticle };
1347
1358
  //# sourceMappingURL=commands.js.map
1348
1359
  //# sourceMappingURL=commands.js.map