Skip to content

Commit

Permalink
简化URLTargetType
Browse files Browse the repository at this point in the history
  • Loading branch information
lixiang1994 committed Dec 16, 2021
1 parent 66c80dc commit f9f66d3
Show file tree
Hide file tree
Showing 10 changed files with 191 additions and 179 deletions.
2 changes: 1 addition & 1 deletion Apis.podspec
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Pod::Spec.new do |s|

s.name = "Apis"
s.version = "1.0.0"
s.version = "1.1.0"
s.summary = "基于URLNavigator抽象的URL路由组件 灵感来自Moya 配置化 插件化."

s.homepage = "https://github.com/lixiang1994/Apis"
Expand Down
4 changes: 2 additions & 2 deletions Demo/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
PODS:
- Apis (1.0.0)
- Apis (1.1.0)
- SnapKit (5.0.1)

DEPENDENCIES:
Expand All @@ -15,7 +15,7 @@ EXTERNAL SOURCES:
:path: "../"

SPEC CHECKSUMS:
Apis: ecfe56226311038186e77c4d5ac87b447dcec059
Apis: 681bea8ec9f382fa3eba50404325a5514d391fd2
SnapKit: 97b92857e3df3a0c71833cce143274bf6ef8e5eb

PODFILE CHECKSUM: 199c77b4710d6bba7448d0daa0a0ecd06f10ef6c
Expand Down
6 changes: 3 additions & 3 deletions Demo/Pods/Local Podspecs/Apis.podspec.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions Demo/Pods/Manifest.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

170 changes: 87 additions & 83 deletions Demo/Pods/Pods.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion Demo/Pods/Target Support Files/Apis/Apis-Info.plist

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

61 changes: 19 additions & 42 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,51 +94,28 @@ private let schemes = "router"
extension RouterTarget: URLTargetType {
static var activated: [URLPattern] {
static var bindings: [URLPatternBinding<RouterTarget>] {
return [
"http://<path:_>",
"https://<path:_>",
schemes + "://open/none",
schemes + "://open/fast",
schemes + "://open/live",
schemes + "://open/needlogin"
.init("http://<path:_>") { source in
guard let url = source.url.value else { return .none }
return .open_http(url: url)
},
.init("https://<path:_>") { source in
guard let url = source.url.value else { return .none }
return .open_https(url: url)
},
.init(schemes + "://open/none") {
return .open_none
},
.init(schemes + "://open/live") { source in
guard let id = source.url.queryParameters["id"] else { return nil }
return .open_live(id: id)
},
.init(schemes + "://open/some") {
return .open_some
}
]
}
var pattern: String {
switch self {
case .open_http: return "http://<path:_>"
case .open_https: return "https://<path:_>"
case .open_none: return schemes + "://open/none"
case .open_live: return schemes + "://open/live"
case .open_some: return schemes + "://open/some"
}
}
init?(pattern: URLPattern, url: URLConvertible, values: [String : Any]) {
switch pattern {
case "http://<path:_>":
guard let url = url.value else { return nil }
self = .open_http(url: url)
case "https://<path:_>":
guard let url = url.value else { return nil }
self = .open_https(url: url)
case schemes + "://open/none":
self = .open_none
case schemes + "://open/live":
guard let id = url.queryParameters["id"] else { return nil }
self = .open_live(id: id)
case schemes + "://open/some":
self = .open_some
default:
return nil
}
}
}
```

Expand Down
65 changes: 20 additions & 45 deletions README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,54 +96,29 @@ extension SFSafariViewController: Routerable { }
private let schemes = "router"
extension RouterTarget: URLTargetType {
// 激活的URL模板集合
static var activated: [URLPattern] {
// URL模板绑定 不同的模板返回不同的Target
static var bindings: [URLPatternBinding<RouterTarget>] {
return [
"http://<path:_>",
"https://<path:_>",
schemes + "://open/none",
schemes + "://open/fast",
schemes + "://open/live",
schemes + "://open/needlogin"
.init("http://<path:_>") { source in
guard let url = source.url.value else { return .none }
return .open_http(url: url)
},
.init("https://<path:_>") { source in
guard let url = source.url.value else { return .none }
return .open_https(url: url)
},
.init(schemes + "://open/none") {
return .open_none
},
.init(schemes + "://open/live") { source in
guard let id = source.url.queryParameters["id"] else { return nil }
return .open_live(id: id)
},
.init(schemes + "://open/some") {
return .open_some
}
]
}
// URL模板
var pattern: String {
switch self {
case .open_http: return "http://<path:_>"
case .open_https: return "https://<path:_>"
case .open_none: return schemes + "://open/none"
case .open_live: return schemes + "://open/live"
case .open_some: return schemes + "://open/some"
}
}
init?(pattern: URLPattern, url: URLConvertible, values: [String : Any]) {
switch pattern {
case "http://<path:_>":
guard let url = url.value else { return nil }
self = .open_http(url: url)
case "https://<path:_>":
guard let url = url.value else { return nil }
self = .open_https(url: url)
case schemes + "://open/none":
self = .open_none
case schemes + "://open/live":
guard let id = url.queryParameters["id"] else { return nil }
self = .open_live(id: id)
case schemes + "://open/some":
self = .open_some
default:
return nil
}
}
}
```

Expand Down

0 comments on commit f9f66d3

Please sign in to comment.