Enhance word replacement functionality
This commit is contained in:
parent
51dc742e1e
commit
8e4b8ffee1
@ -15,16 +15,22 @@ class WordReplacementService {
|
||||
|
||||
// Apply each replacement (case-insensitive, whole word)
|
||||
for (original, replacement) in replacements {
|
||||
// Create a regular expression that matches the word boundaries
|
||||
let pattern = "\\b\(NSRegularExpression.escapedPattern(for: original))\\b"
|
||||
if let regex = try? NSRegularExpression(pattern: pattern, options: .caseInsensitive) {
|
||||
let range = NSRange(modifiedText.startIndex..., in: modifiedText)
|
||||
modifiedText = regex.stringByReplacingMatches(
|
||||
in: modifiedText,
|
||||
options: [],
|
||||
range: range,
|
||||
withTemplate: replacement
|
||||
)
|
||||
let isPhrase = original.contains(" ") || original.trimmingCharacters(in: .whitespacesAndNewlines) != original
|
||||
|
||||
if isPhrase {
|
||||
modifiedText = modifiedText.replacingOccurrences(of: original, with: replacement, options: .caseInsensitive)
|
||||
} else {
|
||||
// Create a regular expression that matches the word boundaries
|
||||
let pattern = "\\b\(NSRegularExpression.escapedPattern(for: original))\\b"
|
||||
if let regex = try? NSRegularExpression(pattern: pattern, options: .caseInsensitive) {
|
||||
let range = NSRange(modifiedText.startIndex..., in: modifiedText)
|
||||
modifiedText = regex.stringByReplacingMatches(
|
||||
in: modifiedText,
|
||||
options: [],
|
||||
range: range,
|
||||
withTemplate: replacement
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -273,12 +273,12 @@ struct AddReplacementSheet: View {
|
||||
}
|
||||
|
||||
private func addReplacement() {
|
||||
let trimmedOriginal = originalWord.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||
let trimmedReplacement = replacementWord.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||
let original = originalWord
|
||||
let replacement = replacementWord
|
||||
|
||||
guard !trimmedOriginal.isEmpty && !trimmedReplacement.isEmpty else { return }
|
||||
guard !original.isEmpty && !replacement.isEmpty else { return }
|
||||
|
||||
manager.addReplacement(original: trimmedOriginal, replacement: trimmedReplacement)
|
||||
manager.addReplacement(original: original, replacement: replacement)
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user