1313
1414import Foundation
1515
16+ infix operator <~ { associativity none precedence 130 }
17+
1618private var swiftRegexCache = [ String: NSRegularExpression] ( )
1719
18- internal class SwiftRegex : NSObject , BooleanType {
20+ internal final class SwiftRegex : NSObject , BooleanType {
1921 var target : String
2022 var regex : NSRegularExpression
2123
@@ -41,11 +43,11 @@ internal class SwiftRegex: NSObject, BooleanType {
4143 fatalError ( " SwiftRegex: \( message) " )
4244 }
4345
44- private final var targetRange : NSRange {
46+ private var targetRange : NSRange {
4547 return NSRange ( location: 0 , length: target. utf16. count)
4648 }
4749
48- private final func substring( range: NSRange ) -> String ? {
50+ private func substring( range: NSRange ) -> String ? {
4951 if range. location != NSNotFound {
5052 return ( target as NSString ) . substringWithRange ( range)
5153 } else {
@@ -168,36 +170,9 @@ extension String {
168170 }
169171}
170172
171- func ~= ( left: SwiftRegex , right: String ) -> String {
173+ func <~ ( left: SwiftRegex , right: String ) -> String {
172174 return left. substituteMatches ( { match, stop in
173175 return left. regex. replacementStringForResult ( match,
174176 inString: left. target as String , offset: 0 , template: right )
175177 } , options: [ ] )
176178}
177-
178- func ~= ( left: SwiftRegex , right: [ String ] ) -> String {
179- var matchNumber = 0
180- return left. substituteMatches ( { match, stop -> String in
181-
182- if ++ matchNumber == right. count {
183- stop. memory = true
184- }
185-
186- return left. regex. replacementStringForResult ( match,
187- inString: left. target as String , offset: 0 , template: right [ matchNumber- 1 ] )
188- } , options: [ ] )
189- }
190-
191- func ~= ( left: SwiftRegex , right: ( String ) -> String ) -> String {
192- // return right(left.substring(match.range))
193- return left. substituteMatches (
194- { match, stop -> String in
195- right ( left. substring ( match. range) !)
196- } , options: [ ] )
197- }
198-
199- func ~= ( left: SwiftRegex , right: ( [ String ] ? ) -> String ) -> String {
200- return left. substituteMatches ( { match, stop -> String in
201- return right ( left. groupsForMatch ( match) )
202- } , options: [ ] )
203- }
0 commit comments