Latest 0.2.0
Homepage https://github.com/johnpatrickmorgan/URLPatterns
License MIT
Platforms ios 8.0, osx 10.10
Authors

🎯 URLPatterns 🎯

Version
License
Swift

URLPatterns is a small library to enable more idiomatic Swift pattern matching of URL path elements.

URL is extended with the method countedPathElements(), which converts the URL’s’ array of path elements into a Counted enum. Each case in Counted has a different number of associated values, which makes pattern-matching each element easy:

if case .n4("user", let userId, "profile", _) = url.countedPathElements() {
    // show profile for userId
}

Counted enables us to pattern match paths with any number of elements, and supports expression, wildcard and value-binding patterns for its associated values. It can match based on Begins and Ends, which match based on the first/ last elements only, and can even match a particular path element based on a regular expression. Here’s an example of a DeepLink enum which has a failable initializer that takes a URL:

enum DeepLink {

    case home, history, settings, terms, news, contact
    case chat(room: String)
    case profile(userId: String)
}

extension DeepLink {

    init?(url: URL) {

        guard url.scheme == "myscheme" else { return nil }
        guard url.host == "myhost" else { return nil }

        switch url.countedPathComponents() {

        case .n0, .n1(""):                          self = .home
        case .n1("history"):                        self = .history
        case .n2(_, "settings"):                    self = .settings
        case .n2("chat", let room):                 self = .chat(room: room)
        case .n3("users", let userId, "profile"):   self = .profile(userId: userId)
        case .n1(Regex(contact.*))                  self = .contact
        case Begins("news", "latest"):              self = .news
        case Ends("terms"):                         self = .terms       
        default:                                    return nil
        }
    }
}

Installation

URLPatterns is available through CocoaPods. To install
it, simply add the following line to your Podfile:

pod "URLPatterns"

License

URLPatterns is available under the MIT license. See the LICENSE file for more info.

Latest podspec

{
    "name": "URLPatterns",
    "version": "0.2.0",
    "summary": "A small library to enable more idiomatic Swift pattern matching of URL path elements.",
    "description": "URLPatterns is a small library to enable more idiomatic Swift pattern matching of URL path elements.n`NSURL` is extended with the method `countedPathElements()`, which converts the URL's' array of path elementsninto a `Counted` enum. Each case in `Counted` has a different number of associated values, which makesnpattern-matching each element easy, including wildcard, value-binding, begins and ends patterns.",
    "homepage": "https://github.com/johnpatrickmorgan/URLPatterns",
    "license": "MIT",
    "authors": {
        "johnmorgan": "[email protected]"
    },
    "source": {
        "git": "https://github.com/johnpatrickmorgan/URLPatterns.git",
        "tag": "0.2.0"
    },
    "social_media_url": "https://twitter.com/jpmmusic",
    "platforms": {
        "ios": "8.0",
        "osx": "10.10"
    },
    "source_files": "Sources/**/*",
    "pushed_with_swift_version": "4.0"
}

Pin It on Pinterest

Share This