Skip to content

Commit f4d66be

Browse files
authored
Merge pull request #540 from hamishknight/scalar-support
Update to match Unicode proposal
2 parents 410dbe6 + d44a176 commit f4d66be

File tree

5 files changed

+9
-11
lines changed

5 files changed

+9
-11
lines changed

Sources/RegexBuilder/CharacterClass.swift

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,10 @@ extension RegexComponent where Self == CharacterClass {
4848
.init(DSLTree.CustomCharacterClass(members: [.atom(.any)]))
4949
}
5050

51-
public static var anyGrapheme: CharacterClass {
51+
public static var anyGraphemeCluster: CharacterClass {
5252
.init(unconverted: .anyGrapheme)
5353
}
5454

55-
public static var anyUnicodeScalar: CharacterClass {
56-
.init(unconverted: .anyUnicodeScalar)
57-
}
58-
5955
public static var whitespace: CharacterClass {
6056
.init(unconverted: .whitespace)
6157
}

Sources/_RegexParser/Regex/Parse/Sema.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,14 +220,14 @@ extension RegexValidator {
220220
_ esc: AST.Atom.EscapedBuiltin, at loc: SourceLocation
221221
) {
222222
switch esc {
223-
case .resetStartOfMatch, .singleDataUnit,
223+
case .resetStartOfMatch, .singleDataUnit, .trueAnychar,
224224
// '\N' needs to be emitted using 'emitAny'.
225225
.notNewline:
226226
error(.unsupported("'\\\(esc.character)'"), at: loc)
227227

228228
// Character classes.
229229
case .decimalDigit, .notDecimalDigit, .whitespace, .notWhitespace,
230-
.wordCharacter, .notWordCharacter, .graphemeCluster, .trueAnychar,
230+
.wordCharacter, .notWordCharacter, .graphemeCluster,
231231
.horizontalWhitespace, .notHorizontalWhitespace,
232232
.verticalTab, .notVerticalTab:
233233
break

Tests/RegexBuilderTests/AlgorithmsTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ class AlgorithmsResultBuilderTests: XCTestCase {
259259
func testStartsAndContains() throws {
260260
let fam = "👨‍👩‍👧‍👦👨‍👨‍👧‍👧 we Ⓡ family"
261261
let startsWithGrapheme = fam.starts {
262-
OneOrMore(.anyGrapheme)
262+
OneOrMore(.anyGraphemeCluster)
263263
OneOrMore(.whitespace)
264264
}
265265
XCTAssertEqual(startsWithGrapheme, true)
@@ -271,7 +271,7 @@ class AlgorithmsResultBuilderTests: XCTestCase {
271271

272272
let content = {
273273
Regex {
274-
OneOrMore(.anyGrapheme)
274+
OneOrMore(.anyGraphemeCluster)
275275
OneOrMore(.whitespace)
276276
}
277277
}
@@ -320,7 +320,7 @@ class AlgorithmsResultBuilderTests: XCTestCase {
320320

321321
var mutable = "👨‍👩‍👧‍👦 we Ⓡ family"
322322
mutable.trimPrefix {
323-
.anyGrapheme
323+
.anyGraphemeCluster
324324
ZeroOrMore(.whitespace)
325325
}
326326
XCTAssertEqual(mutable, "we Ⓡ family")

Tests/RegexTests/MatchTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1815,7 +1815,7 @@ extension RegexTests {
18151815
match: eDecomposed,
18161816
xfail: true
18171817
)
1818-
firstMatchTest(#"\O"#, input: eComposed, match: eComposed)
1818+
firstMatchTest(#"\O"#, input: eComposed, match: eComposed, xfail: true)
18191819
firstMatchTest(#"\O"#, input: eDecomposed, match: nil,
18201820
xfail: true)
18211821

Tests/RegexTests/ParseTests.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -806,6 +806,8 @@ extension RegexTests {
806806
parseTest(#"\M-\C--"#, atom(.keyboardMetaControl("-")), unsupported: true)
807807
parseTest(#"\M-a"#, atom(.keyboardMeta("a")), unsupported: true)
808808

809+
parseTest(#"\O"#, escaped(.trueAnychar), unsupported: true)
810+
809811
// MARK: Comments
810812

811813
parseTest(

0 commit comments

Comments
 (0)