FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
QuickTableViewController/Source/Protocol/Reusable.swift at develop · bcylin/QuickTableViewController · GitHub
bcylin
/
QuickTableViewController
Public
Uh oh!
There was an error while loading.
Please reload this page
.
Notifications
You must be signed in to change notification settings
Fork
64
Star
558
Code
Issues
0
Pull requests
0
Discussions
Actions
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Discussions
Actions
Security and quality
Insights
Expand file tree
Breadcrumbs
QuickTableViewController
/
Source
/
Protocol
/
Reusable.swift
Copy path
More file actions
More file actions
Latest commit
History
History
History
76 lines (63 loc) · 2.44 KB
Breadcrumbs
QuickTableViewController
/
Source
/
Protocol
/
Reusable.swift
Copy path
File metadata and controls
76 lines (63 loc) · 2.44 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
//
// Reusable.swift
// QuickTableViewController
//
// Created by Ben on 21/08/2017.
// Copyright © 2017 bcylin.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
//
import
UIKit
extension
UITableViewCell
:
Reusable
{
}
internal
protocol
Reusable
{
static
var
reuseIdentifier
:
String
{
get
}
}
internal
extension
Reusable
{
static
var
reuseIdentifier
:
String
{
let
type
=
String
(
describing
:
self
)
return
type
.
matches
(
of
:
String
.
typeDescriptionPattern
)
.
last
??
type
}
}
// MARK: -
internal
extension
String
{
static
var
typeDescriptionPattern
:
String
{
// For the types in the format of "(CustomCell in _B5334F301B8CC6AA00C64A6D)"
return
"
^
\\
(([
\\
w
\\
d]+)
\\
sin
\\
s_[0-9A-F]+
\\
)$
"
}
func
matches
(
of pattern
:
String
)
->
[
String
]
{
let
regex
=
try
?
NSRegularExpression
(
pattern
:
pattern
,
options
:
.
caseInsensitive
)
#if swift(>=3.2)
let
fullText
=
NSRange
(
location
:
0
,
length
:
count
)
#else
let
fullText
=
NSRange
(
location
:
0
,
length
:
characters
.
count
)
#endif
guard
let
matches
=
regex
?
.
matches
(
in
:
self
,
options
:
[
]
,
range
:
fullText
)
else
{
return
[
]
}
return
matches
.
reduce
(
[
]
)
{
accumulator
,
match
in
accumulator
+
(
0
..<
match
.
numberOfRanges
)
.
map
{
#if swift(>=4)
return
(
self
as
NSString
)
.
substring
(
with
:
match
.
range
(
at
:
$0
)
)
#else
return
(
self
as
NSString
)
.
substring
(
with
:
match
.
rangeAt
(
$0
)
)
#endif
}
}
}
}
Back
|
FazBrowse Home
|
New Git URL