aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Hotline.xcodeproj/project.pbxproj4
-rw-r--r--Hotline/Hotline/HotlineClient.swift4
-rw-r--r--Hotline/Utility/RegularExpressions.swift23
3 files changed, 29 insertions, 2 deletions
diff --git a/Hotline.xcodeproj/project.pbxproj b/Hotline.xcodeproj/project.pbxproj
index 4e49564..0d5004e 100644
--- a/Hotline.xcodeproj/project.pbxproj
+++ b/Hotline.xcodeproj/project.pbxproj
@@ -26,6 +26,7 @@
DA55AC732BE42AF000034857 /* AsyncLinkPreview.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA55AC722BE42AF000034857 /* AsyncLinkPreview.swift */; platformFilters = (macos, ); };
DA55AC752BE4888300034857 /* InstantMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA55AC742BE4888300034857 /* InstantMessage.swift */; };
DA55AC772BE589F700034857 /* AboutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA55AC762BE589F700034857 /* AboutView.swift */; platformFilters = (macos, ); };
+ DA55AC792BE6A1AD00034857 /* RegularExpressions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA55AC782BE6A1AD00034857 /* RegularExpressions.swift */; };
DA5753682B33E88A00FAC277 /* HotlineFileClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA5753672B33E88A00FAC277 /* HotlineFileClient.swift */; };
DA57536C2B36BA1D00FAC277 /* TextDocument.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA57536B2B36BA1D00FAC277 /* TextDocument.swift */; };
DA6300972B24036B0034CBFD /* HotlineClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA6300962B24036B0034CBFD /* HotlineClient.swift */; };
@@ -100,6 +101,7 @@
DA55AC722BE42AF000034857 /* AsyncLinkPreview.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncLinkPreview.swift; sourceTree = "<group>"; };
DA55AC742BE4888300034857 /* InstantMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantMessage.swift; sourceTree = "<group>"; };
DA55AC762BE589F700034857 /* AboutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutView.swift; sourceTree = "<group>"; };
+ DA55AC782BE6A1AD00034857 /* RegularExpressions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegularExpressions.swift; sourceTree = "<group>"; };
DA5753672B33E88A00FAC277 /* HotlineFileClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HotlineFileClient.swift; sourceTree = "<group>"; };
DA57536B2B36BA1D00FAC277 /* TextDocument.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextDocument.swift; sourceTree = "<group>"; };
DA6300962B24036B0034CBFD /* HotlineClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HotlineClient.swift; sourceTree = "<group>"; };
@@ -273,6 +275,7 @@
DAE735062B3251B3000C56F6 /* SoundEffects.swift */,
DA57536B2B36BA1D00FAC277 /* TextDocument.swift */,
DABE8C032B57940A00884D28 /* DAKeychain.swift */,
+ DA55AC782BE6A1AD00034857 /* RegularExpressions.swift */,
);
path = Utility;
sourceTree = "<group>";
@@ -450,6 +453,7 @@
DAE735072B3251B3000C56F6 /* SoundEffects.swift in Sources */,
DA55AC752BE4888300034857 /* InstantMessage.swift in Sources */,
DAE735012B2E71F2000C56F6 /* FilesView.swift in Sources */,
+ DA55AC792BE6A1AD00034857 /* RegularExpressions.swift in Sources */,
11A7260A2BE0675A000C1DA7 /* FileDetailsView.swift in Sources */,
DA72A0DD2B4CD0BF00A0F48A /* NewsEditorView.swift in Sources */,
DABFCC292B1530DC009F40D2 /* FoundationExtensions.swift in Sources */,
diff --git a/Hotline/Hotline/HotlineClient.swift b/Hotline/Hotline/HotlineClient.swift
index f0e5eea..15ba73f 100644
--- a/Hotline/Hotline/HotlineClient.swift
+++ b/Hotline/Hotline/HotlineClient.swift
@@ -1,5 +1,6 @@
import Foundation
import Network
+import RegexBuilder
enum HotlineClientStatus: Int {
case disconnected
@@ -491,8 +492,7 @@ class HotlineClient: NetSocketDelegate {
}
var messages: [String] = []
- let messageBoardRegex = /([\s\r\n]*[_\-]+[\s\r\n]+)/
- let matches = text.matches(of: messageBoardRegex)
+ let matches = text.matches(of: RegularExpressions.messageBoardDivider)
var start = text.startIndex
if matches.count > 0 {
diff --git a/Hotline/Utility/RegularExpressions.swift b/Hotline/Utility/RegularExpressions.swift
new file mode 100644
index 0000000..0314dd7
--- /dev/null
+++ b/Hotline/Utility/RegularExpressions.swift
@@ -0,0 +1,23 @@
+import RegexBuilder
+
+struct RegularExpressions {
+ static let messageBoardDivider = Regex {
+ Capture {
+ OneOrMore {
+ CharacterClass(.newlineSequence)
+ }
+ ZeroOrMore {
+ CharacterClass(.whitespace, .newlineSequence)
+ }
+ Repeat(2...) {
+ CharacterClass(.anyOf("_-"))
+ }
+ ZeroOrMore {
+ CharacterClass(.whitespace)
+ }
+ OneOrMore {
+ CharacterClass(.newlineSequence)
+ }
+ }
+ }
+}