From aafbba3fd8862ff6fe5328bf55ff8021e78254f6 Mon Sep 17 00:00:00 2001 From: Nate Cook Date: Thu, 14 Apr 2022 12:31:29 -0500 Subject: [PATCH] Move RegexComponent conformances to RegexBuilder This moves the RegexComponent conformances for String, Substring, etc to the RegexBuilder module. This will remove extra API from strings, such as the option-setting methods, when not writing DSL regexes, and also cut down on confusing usage of regex-oriented APIs with strings or characters. --- Sources/RegexBuilder/DSL.swift | 34 ++++++++++++++++++++++ Sources/_StringProcessing/Regex/Core.swift | 34 ---------------------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/Sources/RegexBuilder/DSL.swift b/Sources/RegexBuilder/DSL.swift index 80662be41..0cf8224e3 100644 --- a/Sources/RegexBuilder/DSL.swift +++ b/Sources/RegexBuilder/DSL.swift @@ -32,6 +32,40 @@ extension _BuiltinRegexComponent { } } +// MARK: - Primitive regex components + +extension String: RegexComponent { + public typealias Output = Substring + + public var regex: Regex { + .init(node: .quotedLiteral(self)) + } +} + +extension Substring: RegexComponent { + public typealias Output = Substring + + public var regex: Regex { + .init(node: .quotedLiteral(String(self))) + } +} + +extension Character: RegexComponent { + public typealias Output = Substring + + public var regex: Regex { + .init(node: .atom(.char(self))) + } +} + +extension UnicodeScalar: RegexComponent { + public typealias Output = Substring + + public var regex: Regex { + .init(node: .atom(.scalar(self))) + } +} + // MARK: - Combinators // MARK: Concatenation diff --git a/Sources/_StringProcessing/Regex/Core.swift b/Sources/_StringProcessing/Regex/Core.swift index 96d0f3a68..f2107ca4c 100644 --- a/Sources/_StringProcessing/Regex/Core.swift +++ b/Sources/_StringProcessing/Regex/Core.swift @@ -95,37 +95,3 @@ extension Regex { } } - -// MARK: - Primitive regex components - -extension String: RegexComponent { - public typealias Output = Substring - - public var regex: Regex { - .init(node: .quotedLiteral(self)) - } -} - -extension Substring: RegexComponent { - public typealias Output = Substring - - public var regex: Regex { - .init(node: .quotedLiteral(String(self))) - } -} - -extension Character: RegexComponent { - public typealias Output = Substring - - public var regex: Regex { - .init(node: .atom(.char(self))) - } -} - -extension UnicodeScalar: RegexComponent { - public typealias Output = Substring - - public var regex: Regex { - .init(node: .atom(.scalar(self))) - } -}