aboutsummaryrefslogtreecommitdiff
path: root/node_modules/concordance/lib/lineBuilder.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2019-03-27 21:01:33 +0100
committerFlorian Dold <florian.dold@gmail.com>2019-03-27 21:01:33 +0100
commitcc97a4dd2a967e1c2273bd5f4c5f49a5bf2e2585 (patch)
tree92c5d88706a6ffc654d1b133618d357890e7096b /node_modules/concordance/lib/lineBuilder.js
parent3771b4d6b67b34c130f3a9a1a15f42deefdb2eda (diff)
remove node_modules
Diffstat (limited to 'node_modules/concordance/lib/lineBuilder.js')
-rw-r--r--node_modules/concordance/lib/lineBuilder.js309
1 files changed, 0 insertions, 309 deletions
diff --git a/node_modules/concordance/lib/lineBuilder.js b/node_modules/concordance/lib/lineBuilder.js
deleted file mode 100644
index 934ac0095..000000000
--- a/node_modules/concordance/lib/lineBuilder.js
+++ /dev/null
@@ -1,309 +0,0 @@
-'use strict'
-
-const ACTUAL = Symbol('lineBuilder.gutters.ACTUAL')
-const EXPECTED = Symbol('lineBuilder.gutters.EXPECTED')
-
-function translateGutter (theme, invert, gutter) {
- if (invert) {
- if (gutter === ACTUAL) return theme.diffGutters.expected
- if (gutter === EXPECTED) return theme.diffGutters.actual
- } else {
- if (gutter === ACTUAL) return theme.diffGutters.actual
- if (gutter === EXPECTED) return theme.diffGutters.expected
- }
- return theme.diffGutters.padding
-}
-
-class Line {
- constructor (isFirst, isLast, gutter, stringValue) {
- this.isFirst = isFirst
- this.isLast = isLast
- this.gutter = gutter
- this.stringValue = stringValue
- }
-
- * [Symbol.iterator] () {
- yield this
- }
-
- get isEmpty () {
- return false
- }
-
- get hasGutter () {
- return this.gutter !== null
- }
-
- get isSingle () {
- return this.isFirst && this.isLast
- }
-
- append (other) {
- return this.concat(other)
- }
-
- concat (other) {
- return new Collection()
- .append(this)
- .append(other)
- }
-
- toString (options) {
- if (options.diff === false) return this.stringValue
-
- return translateGutter(options.theme, options.invert, this.gutter) + this.stringValue
- }
-
- mergeWithInfix (infix, other) {
- if (other.isLine !== true) {
- return new Collection()
- .append(this)
- .mergeWithInfix(infix, other)
- }
-
- return new Line(this.isFirst, other.isLast, other.gutter, this.stringValue + infix + other.stringValue)
- }
-
- withFirstPrefixed (prefix) {
- if (!this.isFirst) return this
-
- return new Line(true, this.isLast, this.gutter, prefix + this.stringValue)
- }
-
- withLastPostfixed (postfix) {
- if (!this.isLast) return this
-
- return new Line(this.isFirst, true, this.gutter, this.stringValue + postfix)
- }
-
- stripFlags () {
- return new Line(false, false, this.gutter, this.stringValue)
- }
-
- decompose () {
- return new Collection()
- .append(this)
- .decompose()
- }
-}
-Object.defineProperty(Line.prototype, 'isLine', {value: true})
-
-class Collection {
- constructor () {
- this.buffer = []
- }
-
- * [Symbol.iterator] () {
- for (const appended of this.buffer) {
- for (const line of appended) yield line
- }
- }
-
- get isEmpty () {
- return this.buffer.length === 0
- }
-
- get hasGutter () {
- for (const line of this) {
- if (line.hasGutter) return true
- }
- return false
- }
-
- get isSingle () {
- const iterator = this[Symbol.iterator]()
- iterator.next()
- return iterator.next().done === true
- }
-
- append (lineOrLines) {
- if (!lineOrLines.isEmpty) this.buffer.push(lineOrLines)
- return this
- }
-
- concat (other) {
- return new Collection()
- .append(this)
- .append(other)
- }
-
- toString (options) {
- let lines = this
-
- if (options.invert) {
- lines = new Collection()
- let buffer = new Collection()
-
- let prev = null
- for (const line of this) {
- if (line.gutter === ACTUAL) {
- if (prev !== null && prev.gutter !== ACTUAL && !buffer.isEmpty) {
- lines.append(buffer)
- buffer = new Collection()
- }
-
- buffer.append(line)
- } else if (line.gutter === EXPECTED) {
- lines.append(line)
- } else {
- if (!buffer.isEmpty) {
- lines.append(buffer)
- buffer = new Collection()
- }
-
- lines.append(line)
- }
-
- prev = line
- }
- lines.append(buffer)
- }
-
- return Array.from(lines, line => line.toString(options)).join('\n')
- }
-
- mergeWithInfix (infix, from) {
- if (from.isEmpty) throw new Error('Cannot merge, `from` is empty.')
-
- const otherLines = Array.from(from)
- if (!otherLines[0].isFirst) throw new Error('Cannot merge, `from` has no first line.')
-
- const merged = new Collection()
- let seenLast = false
- for (const line of this) {
- if (seenLast) throw new Error('Cannot merge line, the last line has already been seen.')
-
- if (!line.isLast) {
- merged.append(line)
- continue
- }
-
- seenLast = true
- for (const other of otherLines) {
- if (other.isFirst) {
- merged.append(line.mergeWithInfix(infix, other))
- } else {
- merged.append(other)
- }
- }
- }
- return merged
- }
-
- withFirstPrefixed (prefix) {
- return new Collection()
- .append(Array.from(this, line => line.withFirstPrefixed(prefix)))
- }
-
- withLastPostfixed (postfix) {
- return new Collection()
- .append(Array.from(this, line => line.withLastPostfixed(postfix)))
- }
-
- stripFlags () {
- return new Collection()
- .append(Array.from(this, line => line.stripFlags()))
- }
-
- decompose () {
- const first = {actual: new Collection(), expected: new Collection()}
- const last = {actual: new Collection(), expected: new Collection()}
- const remaining = new Collection()
-
- for (const line of this) {
- if (line.isFirst && line.gutter === ACTUAL) {
- first.actual.append(line)
- } else if (line.isFirst && line.gutter === EXPECTED) {
- first.expected.append(line)
- } else if (line.isLast && line.gutter === ACTUAL) {
- last.actual.append(line)
- } else if (line.isLast && line.gutter === EXPECTED) {
- last.expected.append(line)
- } else {
- remaining.append(line)
- }
- }
-
- return {first, last, remaining}
- }
-}
-Object.defineProperty(Collection.prototype, 'isCollection', {value: true})
-
-function setDefaultGutter (iterable, gutter) {
- return new Collection()
- .append(Array.from(iterable, line => {
- return line.gutter === null
- ? new Line(line.isFirst, line.isLast, gutter, line.stringValue)
- : line
- }))
-}
-
-module.exports = {
- buffer () {
- return new Collection()
- },
-
- first (stringValue) {
- return new Line(true, false, null, stringValue)
- },
-
- last (stringValue) {
- return new Line(false, true, null, stringValue)
- },
-
- line (stringValue) {
- return new Line(false, false, null, stringValue)
- },
-
- single (stringValue) {
- return new Line(true, true, null, stringValue)
- },
-
- setDefaultGutter (lineOrCollection) {
- return lineOrCollection
- },
-
- actual: {
- first (stringValue) {
- return new Line(true, false, ACTUAL, stringValue)
- },
-
- last (stringValue) {
- return new Line(false, true, ACTUAL, stringValue)
- },
-
- line (stringValue) {
- return new Line(false, false, ACTUAL, stringValue)
- },
-
- single (stringValue) {
- return new Line(true, true, ACTUAL, stringValue)
- },
-
- setDefaultGutter (lineOrCollection) {
- return setDefaultGutter(lineOrCollection, ACTUAL)
- }
- },
-
- expected: {
- first (stringValue) {
- return new Line(true, false, EXPECTED, stringValue)
- },
-
- last (stringValue) {
- return new Line(false, true, EXPECTED, stringValue)
- },
-
- line (stringValue) {
- return new Line(false, false, EXPECTED, stringValue)
- },
-
- single (stringValue) {
- return new Line(true, true, EXPECTED, stringValue)
- },
-
- setDefaultGutter (lineOrCollection) {
- return setDefaultGutter(lineOrCollection, EXPECTED)
- }
- }
-}