@b9g/revise 0.1.1 → 0.1.2
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/README.md +67 -2
- package/_subseq.d.ts +18 -0
- package/contentarea.cjs +325 -412
- package/contentarea.cjs.map +1 -1
- package/contentarea.d.ts +29 -47
- package/contentarea.js +325 -412
- package/contentarea.js.map +1 -1
- package/edit.cjs +447 -187
- package/edit.cjs.map +1 -1
- package/edit.d.ts +71 -26
- package/edit.js +447 -187
- package/edit.js.map +1 -1
- package/history.cjs +3 -0
- package/history.cjs.map +1 -1
- package/history.d.ts +1 -1
- package/history.js +3 -0
- package/history.js.map +1 -1
- package/keyer.cjs +5 -7
- package/keyer.cjs.map +1 -1
- package/keyer.d.ts +1 -1
- package/keyer.js +5 -7
- package/keyer.js.map +1 -1
- package/package.json +16 -42
- package/subseq.cjs +0 -251
- package/subseq.cjs.map +0 -1
- package/subseq.d.ts +0 -62
- package/subseq.js +0 -248
- package/subseq.js.map +0 -1
package/subseq.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subseq.js","sources":["../src/subseq.ts"],"sourcesContent":["/**\n * A data structure for representing “subsequences.” Subsequences are created\n * by removing zero or more elements from a given sequence while preserving the\n * order of remaining elements.\n */\nexport class Subseq {\n\t/**\n\t * The sum of the sizes of segments of the subsequence.\n\t */\n\tsize: number;\n\n\t/**\n\t * The sum of the sizes of the included segments of the subsequence.\n\t */\n\tincludedSize: number;\n\n\t/**\n\t * The sum of the sizes of the excluded segments of the subsequence.\n\t */\n\texcludedSize: number;\n\n\t/**\n\t * An array of numbers, where each number represents the size of a\n\t * continguous segment from the original sequence. The subsequence “contains”\n\t * a segment based on its position in this array. Segments alternate between\n\t * excluded and included, with the first number representing the size of an\n\t * excluded segment. In other words, the first segment is excluded, the second\n\t * included, the third excluded and so on.\n\t *\n\t * Because the first segment is always an excluded segment, a subsequence\n\t * array will start with a 0 when the subsequence includes the first element\n\t * of the sequence. No other segments will be of size 0 in the array.\n\t *\n\t * @example\n\t * Given the following string sequence: \"abcdefgh\"\n\t * The following size arrays represent the following subsequences:\n\t *\n\t * [0, 4, 4] = \"abcd\"\n\t * [4, 4] = \"efgh\"\n\t * [0, 2, 2, 2, 2] = \"abef\"\n\t * [2, 2, 2, 2] = \"cdgh\"\n\t * [0, 1, 6, 1] = \"ah\"\n\t * [1, 1, 1, 1, 1, 1, 1, 1] = \"bdfh\"\n\t */\n\tsizes: Array<number>;\n\n\tconstructor(sizes: Array<number>) {\n\t\tconst [size, includedSize, excludedSize] = measure(sizes);\n\t\tthis.size = size;\n\t\tthis.includedSize = includedSize;\n\t\tthis.excludedSize = excludedSize;\n\t\tthis.sizes = sizes;\n\t}\n\n\t/**\n\t * A utility method to debug subseqs.\n\t */\n\tprint(): string {\n\t\tlet result = \"\";\n\t\tfor (let i = 0; i < this.sizes.length; i++) {\n\t\t\tif (i % 2 === 0) {\n\t\t\t\tresult += \"=\".repeat(this.sizes[i]);\n\t\t\t} else {\n\t\t\t\tresult += \"+\".repeat(this.sizes[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tcontains(offset: number): boolean {\n\t\tif (offset < 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (let i = 0; i < this.sizes.length; i++) {\n\t\t\toffset -= this.sizes[i];\n\t\t\tif (offset < 0) {\n\t\t\t\treturn i % 2 === 1;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tclear(): Subseq {\n\t\treturn new Subseq(this.size ? [this.size] : []);\n\t}\n\n\tfill(): Subseq {\n\t\treturn new Subseq(this.size ? [0, this.size] : []);\n\t}\n\n\tcomplement(): Subseq {\n\t\tconst sizes =\n\t\t\tthis.sizes[0] === 0 ? this.sizes.slice(1) : [0, ...this.sizes];\n\t\treturn new Subseq(sizes);\n\t}\n\n\talign(that: Subseq): Array<[number, boolean, boolean]> {\n\t\tif (this.size !== that.size) {\n\t\t\tthrow new Error(\"Size mismatch\");\n\t\t}\n\n\t\tconst result: Array<[number, boolean, boolean]> = [];\n\t\tconst length1 = this.sizes.length;\n\t\tconst length2 = that.sizes.length;\n\t\tfor (\n\t\t\tlet i1 = 0, i2 = 0, size1 = 0, size2 = 0, flag1 = true, flag2 = true;\n\t\t\ti1 < length1 || i2 < length2;\n\n\t\t) {\n\t\t\tif (size1 === 0) {\n\t\t\t\tif (i1 >= length1) {\n\t\t\t\t\tthrow new Error(\"Size mismatch\");\n\t\t\t\t}\n\n\t\t\t\tsize1 = this.sizes[i1++];\n\t\t\t\tflag1 = !flag1;\n\t\t\t}\n\n\t\t\tif (size2 === 0) {\n\t\t\t\tif (i2 >= length2) {\n\t\t\t\t\tthrow new Error(\"Size mismatch\");\n\t\t\t\t}\n\n\t\t\t\tsize2 = that.sizes[i2++];\n\t\t\t\tflag2 = !flag2;\n\t\t\t}\n\n\t\t\tif (size1 < size2) {\n\t\t\t\tif (size1) {\n\t\t\t\t\tresult.push([size1, flag1, flag2]);\n\t\t\t\t}\n\n\t\t\t\tsize2 = size2 - size1;\n\t\t\t\tsize1 = 0;\n\t\t\t} else if (size1 > size2) {\n\t\t\t\tif (size2) {\n\t\t\t\t\tresult.push([size2, flag1, flag2]);\n\t\t\t\t}\n\n\t\t\t\tsize1 = size1 - size2;\n\t\t\t\tsize2 = 0;\n\t\t\t} else {\n\t\t\t\tif (size1) {\n\t\t\t\t\tresult.push([size1, flag1, flag2]);\n\t\t\t\t}\n\n\t\t\t\tsize1 = size2 = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tunion(that: Subseq): Subseq {\n\t\tconst sizes: Array<number> = [];\n\t\tfor (const [size, flag1, flag2] of this.align(that)) {\n\t\t\tpushSegment(sizes, size, flag1 || flag2);\n\t\t}\n\n\t\treturn new Subseq(sizes);\n\t}\n\n\tintersection(that: Subseq): Subseq {\n\t\tconst sizes: Array<number> = [];\n\t\tfor (const [size, flag1, flag2] of this.align(that)) {\n\t\t\tpushSegment(sizes, size, flag1 && flag2);\n\t\t}\n\n\t\treturn new Subseq(sizes);\n\t}\n\n\tdifference(that: Subseq): Subseq {\n\t\tconst sizes: Array<number> = [];\n\t\tfor (const [size, flag1, flag2] of this.align(that)) {\n\t\t\tpushSegment(sizes, size, flag1 && !flag2);\n\t\t}\n\n\t\treturn new Subseq(sizes);\n\t}\n\n\tshrink(that: Subseq): Subseq {\n\t\tif (this.size !== that.size) {\n\t\t\tthrow new Error(\"Size mismatch\");\n\t\t}\n\n\t\tconst sizes: Array<number> = [];\n\t\tfor (const [size, flag1, flag2] of this.align(that)) {\n\t\t\tif (!flag2) {\n\t\t\t\tpushSegment(sizes, size, flag1);\n\t\t\t}\n\t\t}\n\n\t\treturn new Subseq(sizes);\n\t}\n\n\texpand(that: Subseq): Subseq {\n\t\tif (this.size !== that.excludedSize) {\n\t\t\tthrow new Error(\"Size mismatch\");\n\t\t}\n\n\t\tconst sizes: Array<number> = [];\n\t\tconst length1 = this.sizes.length;\n\t\tconst length2 = that.sizes.length;\n\t\tfor (\n\t\t\tlet i1 = 0, i2 = 0, size1 = 0, flag1 = true, flag2 = true;\n\t\t\ti2 < length2;\n\t\t\ti2++\n\t\t) {\n\t\t\tlet size2 = that.sizes[i2];\n\t\t\tflag2 = !flag2;\n\t\t\tif (flag2) {\n\t\t\t\tpushSegment(sizes, size2, false);\n\t\t\t} else {\n\t\t\t\twhile (size2) {\n\t\t\t\t\tif (size1 === 0) {\n\t\t\t\t\t\tif (i1 >= length1) {\n\t\t\t\t\t\t\tthrow new Error(\"Size mismatch\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsize1 = this.sizes[i1++];\n\t\t\t\t\t\tflag1 = !flag1;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst size = Math.min(size1, size2);\n\t\t\t\t\tpushSegment(sizes, size, flag1);\n\t\t\t\t\tsize1 -= size;\n\t\t\t\t\tsize2 -= size;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn new Subseq(sizes);\n\t}\n\n\tinterleave(that: Subseq): [Subseq, Subseq] {\n\t\tif (this.excludedSize !== that.excludedSize) {\n\t\t\tthrow new Error(\"Size mismatch\");\n\t\t}\n\n\t\tconst sizes1: Array<number> = [];\n\t\tconst sizes2: Array<number> = [];\n\t\tconst length1 = this.sizes.length;\n\t\tconst length2 = that.sizes.length;\n\t\tfor (\n\t\t\tlet i1 = 0, i2 = 0, size1 = 0, size2 = 0, flag1 = true, flag2 = true;\n\t\t\ti1 < length1 || i2 < length2;\n\n\t\t) {\n\t\t\tif (size1 === 0 && i1 < length1) {\n\t\t\t\tsize1 = this.sizes[i1++];\n\t\t\t\tflag1 = !flag1;\n\t\t\t}\n\n\t\t\tif (size2 === 0 && i2 < length2) {\n\t\t\t\tsize2 = that.sizes[i2++];\n\t\t\t\tflag2 = !flag2;\n\t\t\t}\n\n\t\t\tif (flag1 && flag2) {\n\t\t\t\tpushSegment(sizes1, size1, true);\n\t\t\t\tpushSegment(sizes1, size2, false);\n\t\t\t\tpushSegment(sizes2, size1, false);\n\t\t\t\tpushSegment(sizes2, size2, true);\n\t\t\t\tsize1 = size2 = 0;\n\t\t\t} else if (flag1) {\n\t\t\t\tpushSegment(sizes1, size1, true);\n\t\t\t\tpushSegment(sizes2, size1, false);\n\t\t\t\tsize1 = 0;\n\t\t\t} else if (flag2) {\n\t\t\t\tpushSegment(sizes1, size2, false);\n\t\t\t\tpushSegment(sizes2, size2, true);\n\t\t\t\tsize2 = 0;\n\t\t\t} else {\n\t\t\t\tconst size = Math.min(size1, size2);\n\t\t\t\tpushSegment(sizes1, size, false);\n\t\t\t\tpushSegment(sizes2, size, false);\n\t\t\t\tsize1 -= size;\n\t\t\t\tsize2 -= size;\n\t\t\t}\n\t\t}\n\n\t\treturn [new Subseq(sizes1), new Subseq(sizes2)];\n\t}\n\n\tstatic pushSegment = pushSegment;\n}\n\nfunction pushSegment(sizes: Array<number>, size: number, flag: boolean): void {\n\tif (size < 0) {\n\t\tthrow new RangeError(\"Negative size\");\n\t} else if (size === 0) {\n\t\treturn;\n\t} else if (!sizes.length) {\n\t\tif (flag) {\n\t\t\tsizes.push(0, size);\n\t\t} else {\n\t\t\tsizes.push(size);\n\t\t}\n\t} else {\n\t\tconst flag1 = sizes.length % 2 === 0;\n\t\tif (flag === flag1) {\n\t\t\tsizes[sizes.length - 1] += size;\n\t\t} else {\n\t\t\tsizes.push(size);\n\t\t}\n\t}\n}\n\nfunction measure(sizes: Array<number>): [number, number, number] {\n\tlet size = 0,\n\t\tincludedSize = 0,\n\t\texcludedSize = 0;\n\tfor (let i = 0; i < sizes.length; i++) {\n\t\tconst s = sizes[i];\n\t\tsize += s;\n\t\tif (i % 2 === 0) {\n\t\t\texcludedSize += s;\n\t\t} else {\n\t\t\tincludedSize += s;\n\t\t}\n\t}\n\n\treturn [size, includedSize, excludedSize];\n}\n"],"names":[],"mappings":"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"}
|