Skip to content

Commit 8184fc0

Browse files
authored
Merge pull request #629 from apple/dewing/CharacterClassDSLConversion
Fix an issue where named character classes weren't getting converted …
2 parents 7e059b7 + 6a4077f commit 8184fc0

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

Sources/_StringProcessing/PrintAsPattern.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,14 @@ extension PrettyPrinter {
518518
} else {
519519
output(base.0)
520520
}
521+
522+
case let .characterClass(cc):
523+
if wrap {
524+
output("One(\(cc._patternBase))")
525+
} else {
526+
output(cc._patternBase)
527+
}
528+
521529
default:
522530
print(" // TODO: Atom \(a)")
523531
}

Tests/RegexTests/RenderDSLTests.swift

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,4 +276,40 @@ extension RenderDSLTests {
276276
}
277277
"""#)
278278
}
279+
280+
func testCharacterClass() throws {
281+
try testConversion(#"[abc]+"#, #"""
282+
Regex {
283+
OneOrMore(.anyOf("abc"))
284+
}
285+
"""#)
286+
287+
try testConversion(#"[[:whitespace:]]"#, #"""
288+
Regex {
289+
One(.whitespace)
290+
}
291+
"""#)
292+
293+
try testConversion(#"[\b\w]+"#, #"""
294+
Regex {
295+
OneOrMore {
296+
CharacterClass(
297+
.anyOf("\u{8}"),
298+
.word
299+
)
300+
}
301+
}
302+
"""#)
303+
304+
try testConversion(#"[abc\sd]+"#, #"""
305+
Regex {
306+
OneOrMore {
307+
CharacterClass(
308+
.anyOf("abcd"),
309+
.whitespace
310+
)
311+
}
312+
}
313+
"""#)
314+
}
279315
}

0 commit comments

Comments
 (0)