Skip to content

Commit 2d455cf

Browse files
Refine message
1 parent f4801b8 commit 2d455cf

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

Sources/ExpressionParser/ExpressionParser.swift

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,27 @@ import Foundation
33
@testable @_spi(RegexBuilder) import _StringProcessing
44

55
struct ExpressionParser {
6+
struct Modes {
7+
let matchingOptions: [String]
8+
9+
var i: Bool { matchingOptions.contains("i") }
10+
var s: Bool { matchingOptions.contains("s") }
11+
}
12+
613
private(set) var tokens = [Token]()
714
private(set) var diagnostics: Diagnostics?
815

916
private let pattern: String
10-
private let insensitive: Bool
17+
private let matchingOptions: [String]
18+
private let modes: Modes
1119

1220
private var depth = 0
1321
private var groupCount = 0
1422

15-
init(pattern: String, insensitive: Bool = true) {
23+
init(pattern: String, matchingOptions: [String]) {
1624
self.pattern = pattern
17-
self.insensitive = insensitive
25+
self.matchingOptions = matchingOptions
26+
modes = Modes(matchingOptions: matchingOptions)
1827
}
1928

2029
mutating func parse() {
@@ -516,7 +525,7 @@ struct ExpressionParser {
516525
substitution = [
517526
"{{getChar()}}": #""\#(c)""#,
518527
"{{code}}": charcode,
519-
"{{getInsensitive()}}": "Case \(insensitive ? "in" : "")sensitive"
528+
"{{getInsensitive()}}": "Case \(modes.i ? "in" : "")sensitive"
520529
]
521530
} else {
522531
`class` = "char"
@@ -525,7 +534,7 @@ struct ExpressionParser {
525534
substitution = [
526535
"{{getChar()}}": #""\#(c)""#,
527536
"{{code}}": charcode,
528-
"{{getInsensitive()}}": "Case \(insensitive ? "in" : "")sensitive"
537+
"{{getInsensitive()}}": "Case \(modes.i ? "in" : "")sensitive"
529538
]
530539
}
531540
case .scalar(let scalar):
@@ -535,7 +544,7 @@ struct ExpressionParser {
535544
substitution = [
536545
"{{getChar()}}": #""\#(String(scalar.value))""#,
537546
"{{code}}": String(format: "U+%X", scalar.value.value),
538-
"{{getInsensitive()}}": "Case \(insensitive ? "in" : "")sensitive"
547+
"{{getInsensitive()}}": "Case \(modes.i ? "in" : "")sensitive"
539548
]
540549
case .scalarSequence(let scalarSequence):
541550
let scalars = scalarSequence.scalars
@@ -548,7 +557,7 @@ struct ExpressionParser {
548557
substitution = [
549558
"{{getChar()}}": #""\#(value)""#,
550559
"{{code}}": charcode,
551-
"{{getInsensitive()}}": "Case \(insensitive ? "in" : "")sensitive"
560+
"{{getInsensitive()}}": "Case \(modes.i ? "in" : "")sensitive"
552561
]
553562
case .property(let prop):
554563
`class` = "charclass"
@@ -994,6 +1003,7 @@ struct ExpressionParser {
9941003
`class` = "charclass"
9951004
category = "charclasses"
9961005
key = "dot"
1006+
substitution = ["{{getDotAll()}}": "\(modes.s ? "including" : "except") line breaks"]
9971007
case .caretAnchor:
9981008
`class` = "anchor"
9991009
category = "anchors"

Sources/ExpressionParser/Main.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ struct Main {
99
.split(separator: ",", omittingEmptySubsequences: true)
1010
.map { String($0) }
1111

12-
var parser = ExpressionParser(pattern: pattern, insensitive: matchingOptions.contains("i"))
12+
var parser = ExpressionParser(pattern: pattern, matchingOptions: matchingOptions)
1313
parser.parse()
1414

1515
let data = try JSONEncoder().encode(parser.tokens)

0 commit comments

Comments
 (0)