proskomma-core 0.10.6 → 0.10.9

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
@@ -15986,7 +15986,7 @@ var bitset = {
15986
15986
  })(bitset, bitsetExports);
15987
15987
  const BitSet = /* @__PURE__ */ getDefaultExportFromCjs(bitsetExports);
15988
15988
  const name = "proskomma-core";
15989
- const version = "0.10.6";
15989
+ const version = "0.10.9";
15990
15990
  const description$b = "A Scripture Runtime Engine";
15991
15991
  const files = [
15992
15992
  "dist"
@@ -34022,19 +34022,19 @@ const lexingRegexes = [
34022
34022
  XRegExp('([ \\t]*\\|?[ \\t]*([A-Za-z0-9\\-]+)="([^"]*)"[ \\t]?)')
34023
34023
  ],
34024
34024
  ["attribute", "defaultAttribute", XRegExp("([ \\t]*\\|[ \\t]*([^\\|\\\\]*))")],
34025
- ["milestone", "emptyMilestone", XRegExp("(\\\\([a-z1-9]+)\\\\[*])")],
34025
+ ["milestone", "emptyMilestone", XRegExp('(\\\\([a-z1-9]+)([ \\t]*\\|[ \\t]*[a-z1-9]+="[^\\|\\\\"]*")*\\\\[*])')],
34026
34026
  ["milestone", "startMilestoneTag", XRegExp("(\\\\([a-z1-9]+)-([se]))")],
34027
34027
  ["milestone", "endMilestoneMarker", XRegExp("(\\\\([*]))")],
34028
34028
  ["tag", "endTag", XRegExp("(\\\\([+]?[a-z\\-]+)([1-9]?(-([1-9]))?)[*])")],
34029
34029
  ["tag", "startTag", XRegExp("(\\\\([+]?[a-z\\-]+)([1-9]?(-([1-9]))?)[ \\t]?)")],
34030
34030
  ["bad", "bareSlash", XRegExp("(\\\\)")],
34031
34031
  ["printable", "eol", XRegExp("([ \\t]*[\\r\\n]+[ \\t]*)")],
34032
- ["break", "noBreakSpace", XRegExp("~")],
34032
+ // ['break', 'noBreakSpace', xre('~')],
34033
34033
  ["break", "softLineBreak", XRegExp("//")],
34034
34034
  [
34035
34035
  "printable",
34036
34036
  "wordLike",
34037
- XRegExp("([\\p{Letter}\\p{Number}\\p{Mark}\\u2060]{1,127})")
34037
+ XRegExp("([\\p{Letter}\\p{Number}\\p{Mark}\\u2060~]{1,127})")
34038
34038
  ],
34039
34039
  ["printable", "lineSpace", XRegExp("([\\p{Separator} ]{1,127})")],
34040
34040
  [
@@ -34049,7 +34049,7 @@ const lexingRegexes = [
34049
34049
  const mainRegex = XRegExp.union(lexingRegexes.map((x) => x[2]));
34050
34050
  const makePrintable = (subclass, matchedBits) => ({
34051
34051
  subclass,
34052
- printValue: matchedBits[0]
34052
+ printValue: matchedBits[0].replace(/~/g, " ")
34053
34053
  });
34054
34054
  const makeChapter = (subclass, matchedBits) => ({
34055
34055
  subclass,
@@ -34111,6 +34111,12 @@ const makeMilestone = (subclass, matchedBits) => {
34111
34111
  ret.tagName = matchedBits[2];
34112
34112
  if (subclass === "emptyMilestone") {
34113
34113
  ret.printValue = `\\${ret.tagName}\\*`;
34114
+ ret.attributes = matchedBits[1] ? matchedBits[1].split("|").slice(1).map((a) => a.split("=")).map(
34115
+ (aa) => [
34116
+ aa[0],
34117
+ aa[1].replace(/"/g, "").replace(/[\\*]/g, "")
34118
+ ]
34119
+ ) : [];
34114
34120
  } else {
34115
34121
  ret.printValue = `\\${ret.tagName}`;
34116
34122
  ret.sOrE = matchedBits[3];
@@ -39491,7 +39497,9 @@ const specs = (pt) => [
39491
39497
  // EMPTY MILESTONE - add open and close scope
39492
39498
  contexts: [["emptyMilestone"]],
39493
39499
  parser: {
39494
- during: (parser, pt2) => parser.addEmptyMilestone(labelForScope$2("milestone", [pt2.tagName]))
39500
+ during: (parser, pt2) => {
39501
+ parser.addEmptyMilestone(labelForScope$2("milestone", [pt2.tagName]));
39502
+ }
39495
39503
  }
39496
39504
  },
39497
39505
  {
@@ -50476,11 +50484,11 @@ class Proskomma {
50476
50484
  this.docSets[docSetId].docIds.push(doc.id);
50477
50485
  this.docSets[docSetId].buildEnumIndexes();
50478
50486
  }
50479
- loadSuccinctDocSet(succinctOb) {
50487
+ loadSuccinctDocSet(succinctOb, bookCodes2) {
50480
50488
  const succinctId = succinctOb.id;
50481
- if (succinctId in this.docSets) {
50489
+ if (succinctId in this.docSets && !bookCodes2) {
50482
50490
  throw new Error(
50483
- `Attempting to succinct load docSet ${succinctId} which is already loaded`
50491
+ `Attempting to succinct load docSet ${succinctId} which is already loaded, without bookCodes argument`
50484
50492
  );
50485
50493
  }
50486
50494
  const docSet = new DocSet(this, null, null, succinctOb);
@@ -50503,13 +50511,31 @@ class Proskomma {
50503
50511
  }
50504
50512
  docSet.buildPreEnums();
50505
50513
  const docs = [];
50506
- for (const docId of Object.keys(succinctOb.docs)) {
50514
+ const selectDocs = (dId) => !bookCodes2 || bookCodes2.includes(succinctOb.docs[dId].headers.bookCode);
50515
+ for (const docId of Object.keys(succinctOb.docs).filter(selectDocs)) {
50507
50516
  let doc = this.newDocumentFromSuccinct(docId, succinctOb);
50508
50517
  docs.push(doc);
50509
50518
  }
50510
50519
  docSet.preEnums = {};
50511
50520
  return docs;
50512
50521
  }
50522
+ augmentSuccinctDocSet(succinctOb, bookCodes2) {
50523
+ if (!bookCodes2 || bookCodes2.length === 0) {
50524
+ throw new Error("bookCodes argument must be present and contain at least one element in augmentSuccinctDocSet");
50525
+ }
50526
+ const selectDocs = (dId) => {
50527
+ const doc = succinctOb.docs[dId];
50528
+ return bookCodes2.includes(doc.headers.bookCode);
50529
+ };
50530
+ if (!this.docSets[succinctOb.id]) {
50531
+ throw new Error(`docSet id '${succinctOb.id}' not found in Proskomma when using augmentSuccinctDocSet. Load it first with optional bookCodes argument`);
50532
+ }
50533
+ for (const docId of Object.keys(succinctOb.docs).filter(selectDocs)) {
50534
+ if (!this.documents[docId]) {
50535
+ this.newDocumentFromSuccinct(docId, succinctOb);
50536
+ }
50537
+ }
50538
+ }
50513
50539
  newDocumentFromSuccinct(docId, succinctOb) {
50514
50540
  const doc = new Document(this, succinctOb.id);
50515
50541
  doc.id = docId;
package/dist/index.mjs CHANGED
@@ -15984,7 +15984,7 @@ var bitset = {
15984
15984
  })(bitset, bitsetExports);
15985
15985
  const BitSet = /* @__PURE__ */ getDefaultExportFromCjs(bitsetExports);
15986
15986
  const name = "proskomma-core";
15987
- const version = "0.10.6";
15987
+ const version = "0.10.9";
15988
15988
  const description$b = "A Scripture Runtime Engine";
15989
15989
  const files = [
15990
15990
  "dist"
@@ -34020,19 +34020,19 @@ const lexingRegexes = [
34020
34020
  XRegExp('([ \\t]*\\|?[ \\t]*([A-Za-z0-9\\-]+)="([^"]*)"[ \\t]?)')
34021
34021
  ],
34022
34022
  ["attribute", "defaultAttribute", XRegExp("([ \\t]*\\|[ \\t]*([^\\|\\\\]*))")],
34023
- ["milestone", "emptyMilestone", XRegExp("(\\\\([a-z1-9]+)\\\\[*])")],
34023
+ ["milestone", "emptyMilestone", XRegExp('(\\\\([a-z1-9]+)([ \\t]*\\|[ \\t]*[a-z1-9]+="[^\\|\\\\"]*")*\\\\[*])')],
34024
34024
  ["milestone", "startMilestoneTag", XRegExp("(\\\\([a-z1-9]+)-([se]))")],
34025
34025
  ["milestone", "endMilestoneMarker", XRegExp("(\\\\([*]))")],
34026
34026
  ["tag", "endTag", XRegExp("(\\\\([+]?[a-z\\-]+)([1-9]?(-([1-9]))?)[*])")],
34027
34027
  ["tag", "startTag", XRegExp("(\\\\([+]?[a-z\\-]+)([1-9]?(-([1-9]))?)[ \\t]?)")],
34028
34028
  ["bad", "bareSlash", XRegExp("(\\\\)")],
34029
34029
  ["printable", "eol", XRegExp("([ \\t]*[\\r\\n]+[ \\t]*)")],
34030
- ["break", "noBreakSpace", XRegExp("~")],
34030
+ // ['break', 'noBreakSpace', xre('~')],
34031
34031
  ["break", "softLineBreak", XRegExp("//")],
34032
34032
  [
34033
34033
  "printable",
34034
34034
  "wordLike",
34035
- XRegExp("([\\p{Letter}\\p{Number}\\p{Mark}\\u2060]{1,127})")
34035
+ XRegExp("([\\p{Letter}\\p{Number}\\p{Mark}\\u2060~]{1,127})")
34036
34036
  ],
34037
34037
  ["printable", "lineSpace", XRegExp("([\\p{Separator} ]{1,127})")],
34038
34038
  [
@@ -34047,7 +34047,7 @@ const lexingRegexes = [
34047
34047
  const mainRegex = XRegExp.union(lexingRegexes.map((x) => x[2]));
34048
34048
  const makePrintable = (subclass, matchedBits) => ({
34049
34049
  subclass,
34050
- printValue: matchedBits[0]
34050
+ printValue: matchedBits[0].replace(/~/g, " ")
34051
34051
  });
34052
34052
  const makeChapter = (subclass, matchedBits) => ({
34053
34053
  subclass,
@@ -34109,6 +34109,12 @@ const makeMilestone = (subclass, matchedBits) => {
34109
34109
  ret.tagName = matchedBits[2];
34110
34110
  if (subclass === "emptyMilestone") {
34111
34111
  ret.printValue = `\\${ret.tagName}\\*`;
34112
+ ret.attributes = matchedBits[1] ? matchedBits[1].split("|").slice(1).map((a) => a.split("=")).map(
34113
+ (aa) => [
34114
+ aa[0],
34115
+ aa[1].replace(/"/g, "").replace(/[\\*]/g, "")
34116
+ ]
34117
+ ) : [];
34112
34118
  } else {
34113
34119
  ret.printValue = `\\${ret.tagName}`;
34114
34120
  ret.sOrE = matchedBits[3];
@@ -39489,7 +39495,9 @@ const specs = (pt) => [
39489
39495
  // EMPTY MILESTONE - add open and close scope
39490
39496
  contexts: [["emptyMilestone"]],
39491
39497
  parser: {
39492
- during: (parser, pt2) => parser.addEmptyMilestone(labelForScope$2("milestone", [pt2.tagName]))
39498
+ during: (parser, pt2) => {
39499
+ parser.addEmptyMilestone(labelForScope$2("milestone", [pt2.tagName]));
39500
+ }
39493
39501
  }
39494
39502
  },
39495
39503
  {
@@ -50474,11 +50482,11 @@ class Proskomma {
50474
50482
  this.docSets[docSetId].docIds.push(doc.id);
50475
50483
  this.docSets[docSetId].buildEnumIndexes();
50476
50484
  }
50477
- loadSuccinctDocSet(succinctOb) {
50485
+ loadSuccinctDocSet(succinctOb, bookCodes2) {
50478
50486
  const succinctId = succinctOb.id;
50479
- if (succinctId in this.docSets) {
50487
+ if (succinctId in this.docSets && !bookCodes2) {
50480
50488
  throw new Error(
50481
- `Attempting to succinct load docSet ${succinctId} which is already loaded`
50489
+ `Attempting to succinct load docSet ${succinctId} which is already loaded, without bookCodes argument`
50482
50490
  );
50483
50491
  }
50484
50492
  const docSet = new DocSet(this, null, null, succinctOb);
@@ -50501,13 +50509,31 @@ class Proskomma {
50501
50509
  }
50502
50510
  docSet.buildPreEnums();
50503
50511
  const docs = [];
50504
- for (const docId of Object.keys(succinctOb.docs)) {
50512
+ const selectDocs = (dId) => !bookCodes2 || bookCodes2.includes(succinctOb.docs[dId].headers.bookCode);
50513
+ for (const docId of Object.keys(succinctOb.docs).filter(selectDocs)) {
50505
50514
  let doc = this.newDocumentFromSuccinct(docId, succinctOb);
50506
50515
  docs.push(doc);
50507
50516
  }
50508
50517
  docSet.preEnums = {};
50509
50518
  return docs;
50510
50519
  }
50520
+ augmentSuccinctDocSet(succinctOb, bookCodes2) {
50521
+ if (!bookCodes2 || bookCodes2.length === 0) {
50522
+ throw new Error("bookCodes argument must be present and contain at least one element in augmentSuccinctDocSet");
50523
+ }
50524
+ const selectDocs = (dId) => {
50525
+ const doc = succinctOb.docs[dId];
50526
+ return bookCodes2.includes(doc.headers.bookCode);
50527
+ };
50528
+ if (!this.docSets[succinctOb.id]) {
50529
+ throw new Error(`docSet id '${succinctOb.id}' not found in Proskomma when using augmentSuccinctDocSet. Load it first with optional bookCodes argument`);
50530
+ }
50531
+ for (const docId of Object.keys(succinctOb.docs).filter(selectDocs)) {
50532
+ if (!this.documents[docId]) {
50533
+ this.newDocumentFromSuccinct(docId, succinctOb);
50534
+ }
50535
+ }
50536
+ }
50511
50537
  newDocumentFromSuccinct(docId, succinctOb) {
50512
50538
  const doc = new Document(this, succinctOb.id);
50513
50539
  doc.id = docId;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "proskomma-core",
3
- "version": "0.10.6",
3
+ "version": "0.10.9",
4
4
  "description": "A Scripture Runtime Engine",
5
5
  "files": [
6
6
  "dist"