Sha256: c7632c52f2d6ed659ca57f11b1f43e909337ae1b9a4e9fd960ed74e3f9ca20f4

Contents?: true

Size: 1.99 KB

Versions: 59

Compression:

Stored size: 1.99 KB

Contents

import Foundation

private extension String {

    func trimWhiteSpace() -> String {
        let removeSpaces = trimCharacters(" ", sourceText: self)
        if removeSpaces.hasSuffix("\n") {
            return String(removeSpaces.characters.dropLast())
        }
        return  removeSpaces
    }

    func trimCharacters(_ charToTrim: Character, sourceText: String) -> String {
        var editCharacterView = sourceText.characters
        var editString = String(editCharacterView)

        let trimFirst  = sourceText.characters.first == charToTrim
        let trimLast   = sourceText.characters.last == charToTrim

        if trimFirst { editCharacterView  = editCharacterView.dropFirst() }
        if trimLast { editCharacterView  = editCharacterView.dropLast() }

        if trimFirst || trimLast == true {
            editString = trimCharacters(charToTrim, sourceText: String(editCharacterView))
        }
        return editString
    }
    var isQuestion: Bool {
        return hasSuffix("?")
    }

    var hasLetters: Bool {
        return containsLetters(self)
    }

    var isShouting: Bool {
        return (self == uppercased() && hasLetters)

    }

    private func containsLetters(_ input: String) -> Bool {
        let abc = "abcdefghijklmnopqrstuvwxyz"
        var contains = false
        let inputStringCollection = input.characters.map({String($0)})
        let abcStringCollection = abc.characters.map({String($0)})

        for each in inputStringCollection {
            abcStringCollection.forEach({
                if each == $0 || each == $0.uppercased() {
                    contains = true }

            })
        }
        return contains
    }

}

struct Bob {
    static func hey(_ input: String) -> String {
        if input.trimWhiteSpace().isEmpty {
            return "Fine, be that way."
        } else if input.isShouting {
            return "Woah, chill out!"
        } else if input.isQuestion {
            return "Sure."
        } else {
            return "Whatever."
        }
    }

}

Version data entries

59 entries across 59 versions & 1 rubygems

Version Path
trackler-2.0.8.30 tracks/swift/exercises/bob/Sources/BobExample.swift
trackler-2.0.8.29 tracks/swift/exercises/bob/Sources/BobExample.swift
trackler-2.0.8.28 tracks/swift/exercises/bob/Sources/BobExample.swift
trackler-2.0.8.27 tracks/swift/exercises/bob/Sources/BobExample.swift
trackler-2.0.8.26 tracks/swift/exercises/bob/Sources/BobExample.swift
trackler-2.0.8.24 tracks/swift/exercises/bob/Sources/BobExample.swift
trackler-2.0.8.23 tracks/swift/exercises/bob/Sources/BobExample.swift
trackler-2.0.8.22 tracks/swift/exercises/bob/Sources/BobExample.swift
trackler-2.0.8.21 tracks/swift/exercises/bob/Sources/BobExample.swift
trackler-2.0.8.20 tracks/swift/exercises/bob/Sources/BobExample.swift
trackler-2.0.8.19 tracks/swift/exercises/bob/Sources/BobExample.swift
trackler-2.0.8.18 tracks/swift/exercises/bob/Sources/BobExample.swift
trackler-2.0.8.17 tracks/swift/exercises/bob/Sources/BobExample.swift
trackler-2.0.8.16 tracks/swift/exercises/bob/Sources/BobExample.swift
trackler-2.0.8.15 tracks/swift/exercises/bob/Sources/BobExample.swift
trackler-2.0.8.14 tracks/swift/exercises/bob/Sources/BobExample.swift
trackler-2.0.8.13 tracks/swift/exercises/bob/Sources/BobExample.swift
trackler-2.0.8.12 tracks/swift/exercises/bob/Sources/BobExample.swift
trackler-2.0.8.11 tracks/swift/exercises/bob/Sources/BobExample.swift
trackler-2.0.8.10 tracks/swift/exercises/bob/Sources/BobExample.swift