diff --git a/pass/UserInterface/UICodeHighlightingLabel.swift b/pass/UserInterface/UICodeHighlightingLabel.swift index 4fbad4c..2d931b3 100644 --- a/pass/UserInterface/UICodeHighlightingLabel.swift +++ b/pass/UserInterface/UICodeHighlightingLabel.swift @@ -29,14 +29,12 @@ class UICodeHighlightingLabel: UILocalizedLabel { /// - Parameter text: Multiline string block /// - Returns: Same multiline string block with code sections formatted private func formatCode(in text: String) -> NSMutableAttributedString { - let formattedText = text - .split(omittingEmptySubsequences: false) { - $0 == "\n" || $0 == "\r\n" - }.map { line -> NSAttributedString in + let formattedText = text.splitByNewline() + .map { line -> NSAttributedString in if line.starts(with: " ") { - return NSAttributedString(string: String(line), attributes: UICodeHighlightingLabel.CODE_ATTRIBUTES) + return NSAttributedString(string: line, attributes: UICodeHighlightingLabel.CODE_ATTRIBUTES) } - return NSAttributedString(string: String(line)) + return NSAttributedString(string: line) }.reduce(into: NSMutableAttributedString(string: "")) { $0.append($1) $0.append(UICodeHighlightingLabel.ATTRIBUTED_NEWLINE) diff --git a/passKit/Extensions/String+Utilities.swift b/passKit/Extensions/String+Utilities.swift index 084a185..dc375ba 100644 --- a/passKit/Extensions/String+Utilities.swift +++ b/passKit/Extensions/String+Utilities.swift @@ -17,6 +17,10 @@ extension String { allowed.insert(charactersIn: unreserved) return addingPercentEncoding(withAllowedCharacters: allowed) } + + public func splitByNewline() -> [String] { + return split(omittingEmptySubsequences: false) { $0 == "\n" || $0 == "\r\n" }.map(String.init) + } } extension String { diff --git a/passKit/Parser/Parser.swift b/passKit/Parser/Parser.swift index 11624ad..9181a97 100644 --- a/passKit/Parser/Parser.swift +++ b/passKit/Parser/Parser.swift @@ -16,9 +16,7 @@ class Parser { private(set) lazy var additionFields = getAdditionFields() init(plainText: String) { - let splittedPlainText = plainText - .split(omittingEmptySubsequences: false) { $0 == "\n" || $0 == "\r\n" } - .map(String.init) + let splittedPlainText = plainText.splitByNewline() firstLine = splittedPlainText.first! additionsSection = splittedPlainText[1...].joined(separator: "\n")