1
1
mirror of https://github.com/github/semantic.git synced 2024-11-28 10:15:55 +03:00

We’ll always have a pair of sources.

This commit is contained in:
Rob Rix 2015-11-02 13:06:23 -05:00
parent b9f739844f
commit 202bc2b31b
2 changed files with 8 additions and 11 deletions

View File

@ -1,26 +1,23 @@
/// A list of arguments for the difftool. /// A list of arguments for the difftool.
enum Argument { enum Argument {
indirect case Sources(Source, Source, Argument)
indirect case OutputFlag(Output, Argument) indirect case OutputFlag(Output, Argument)
case End case Sources(Source, Source)
private var rest: Argument? { private var rest: Argument? {
switch self { switch self {
case let .Sources(_, _, rest):
return rest
case let .OutputFlag(_, rest): case let .OutputFlag(_, rest):
return rest return rest
case .End: case .Sources:
return nil return nil
} }
} }
var sources: (Source, Source)? { var sources: (Source, Source) {
switch self { switch self {
case let .Sources(a, b, _): case let .Sources(a, b):
return (a, b) return (a, b)
default: case let .OutputFlag(_, rest):
return rest?.sources return rest.sources
} }
} }
@ -52,7 +49,7 @@ private let source: Madness.Parser<[String], Source>.Function =
let argumentsParser: Madness.Parser<[String], Argument>.Function = any // skip the path to the difftool let argumentsParser: Madness.Parser<[String], Argument>.Function = any // skip the path to the difftool
*> (curry(Argument.OutputFlag) <^> flag) *> (curry(Argument.OutputFlag) <^> flag)
<*> (curry(Argument.Sources) <^> source <*> source <*> pure(Argument.End)) <*> (curry(Argument.Sources) <^> source <*> source)
import Madness import Madness
import Prelude import Prelude

View File

@ -145,7 +145,7 @@ func parserForType(type: String) -> String throws -> Term {
let parsed = parse(argumentsParser, input: Process.arguments) let parsed = parse(argumentsParser, input: Process.arguments)
let arguments: Argument = try parsed.either(ifLeft: { throw "\($0)" }, ifRight: { $0 }) let arguments: Argument = try parsed.either(ifLeft: { throw "\($0)" }, ifRight: { $0 })
guard let (aSource, bSource) = arguments.sources else { throw "expected two sources" } let (aSource, bSource) = arguments.sources
let jsonURL = NSURL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true).URLByAppendingPathComponent("diff.json") let jsonURL = NSURL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true).URLByAppendingPathComponent("diff.json")
guard let uiPath = NSBundle.mainBundle().infoDictionary?["PathToUISource"] as? String else { throw "need ui path" } guard let uiPath = NSBundle.mainBundle().infoDictionary?["PathToUISource"] as? String else { throw "need ui path" }
guard aSource.type == bSource.type else { throw "cant compare files of different types" } guard aSource.type == bSource.type else { throw "cant compare files of different types" }