1
1
mirror of https://github.com/github/semantic.git synced 2024-12-26 16:33:03 +03:00

Serialize the diff to JSON.

This commit is contained in:
Rob Rix 2015-10-27 18:38:31 -04:00
parent 33de066844
commit d120a5dac5

View File

@ -37,5 +37,24 @@ let arguments = BoundsCheckedArray(array: Process.arguments)
if let aString = arguments[1].flatMap(readFile), bString = arguments[2].flatMap(readFile), c = arguments[3] {
if let a = termWithInput(aString), b = termWithInput(bString) {
let diff = Interpreter<Term>(equal: Term.equals(annotation: const(true), leaf: ==), comparable: const(true), cost: Free.sum(Patch.difference)).run(a, b)
let range: Range<Int> -> Doubt.JSON = {
let start = $0.startIndex
let end = $0.endIndex
return [
.Number(Double(start)),
.Number(Double(end - start)),
]
}
let JSON: Doubt.JSON = [
"before": .String(aString),
"after": .String(bString),
"diff": diff.JSON(pure: { $0.JSON { $0.JSON(annotation: range, leaf: Doubt.JSON.String) } }, leaf: Doubt.JSON.String, annotation: {
[
"before": range($0),
"after": range($1),
]
}),
]
JSON.serialize()
}
}