Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow multiple platform list to contain spaces #966

Merged
merged 2 commits into from Dec 4, 2015
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
22 changes: 11 additions & 11 deletions Source/carthage/Build.swift
Expand Up @@ -303,28 +303,28 @@ extension BuildPlatform: ArgumentType {
]

public static func fromString(string: String) -> BuildPlatform? {
let commaSeparated = string.characters.split(allowEmptySlices: false) { $0 == "," }.map(String.init)
let tokens = string.characters
.split(allowEmptySlices: false) { $0 == "," || $0 == " " }
.map(String.init)

let findBuildPlatform: String -> BuildPlatform? = { string in
for (key, platform) in self.acceptedStrings {
if string.caseInsensitiveCompare(key) == .OrderedSame {
return platform
}
}
return nil
return self.acceptedStrings.lazy
.filter { key, _ in string.caseInsensitiveCompare(key) == .OrderedSame }
.map { _, platform in platform }
.first
}

switch commaSeparated.count {
switch tokens.count {
case 0:
return nil

case 1:
return findBuildPlatform(commaSeparated[0])
return findBuildPlatform(tokens[0])
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe use commaSeparated.first!?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems that we are using [0] rather than first! in the codebase.


default:
var buildPlatforms = [BuildPlatform]()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This could be replaced with:

let buildPlatforms = tokens
    .flatMap(self.findBuildPlatform)
    .filter { $0 != .All }

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That would break this:

// Reject if an invalid value is included in the comma-
// separated string.
return nil

for string in commaSeparated {
if let found = findBuildPlatform(string) where found != .All {
for token in tokens {
if let found = findBuildPlatform(token) where found != .All {
buildPlatforms.append(found)
} else {
// Reject if an invalid value is included in the comma-
Expand Down