diff --git a/Tests/LibWeb/TestHTMLTokenizerSwift.swift b/Tests/LibWeb/TestHTMLTokenizerSwift.swift
index de49aef3de3..6db0c1a0db3 100644
--- a/Tests/LibWeb/TestHTMLTokenizerSwift.swift
+++ b/Tests/LibWeb/TestHTMLTokenizerSwift.swift
@@ -26,6 +26,8 @@ struct TestHTMLTokenizerSwift {
default_token.type = .Character(codePoint: "a")
precondition(default_token.isCharacter())
+ print("\(default_token)", to: &standardError)
+
print("HTMLToken types pass", to: &standardError)
}
diff --git a/Userland/Libraries/LibWeb/HTML/Parser/HTMLToken.swift b/Userland/Libraries/LibWeb/HTML/Parser/HTMLToken.swift
index 56a8c26a7fe..6daa93f98f5 100644
--- a/Userland/Libraries/LibWeb/HTML/Parser/HTMLToken.swift
+++ b/Userland/Libraries/LibWeb/HTML/Parser/HTMLToken.swift
@@ -76,3 +76,45 @@ public class HTMLToken {
self.type = type
}
}
+
+extension HTMLToken.Position: Equatable, CustomStringConvertible {
+ public var description: String {
+ return "\(self.line):\(self.column)"
+ }
+}
+
+extension HTMLToken.TokenType: CustomStringConvertible {
+ // FIXME: Print attributes for start/end tags
+ public var description: String {
+ switch self {
+ case .Invalid:
+ return "Invalid"
+ case .DOCTYPE(let name, let publicIdentifier, let systemIdentifier, let forceQuirksMode):
+ return "DOCTYPE(name: \(name ?? "nil"), publicIdentifier: \(publicIdentifier ?? "nil"), systemIdentifier: \(systemIdentifier ?? "nil"), forceQuirksMode: \(forceQuirksMode))"
+ case .StartTag(let tagName, let selfClosing, let selfClosingAcknowledged, let attributes):
+ return "StartTag(tagName: \(tagName), selfClosing: \(selfClosing), selfClosingAcknowledged: \(selfClosingAcknowledged), attributes: \(attributes))"
+ case .EndTag(let tagName, let selfClosing, let selfClosingAcknowledged, let attributes):
+ return "EndTag(tagName: \(tagName), selfClosing: \(selfClosing), selfClosingAcknowledged: \(selfClosingAcknowledged), attributes: \(attributes))"
+ case .Comment(let data):
+ return "Comment(data: \(data))"
+ case .Character(let codePoint):
+ return "Character(codePoint: \(codePoint))"
+ case .EndOfFile:
+ return "EndOfFile"
+ }
+ }
+}
+
+extension HTMLToken: CustomStringConvertible {
+ public var description: String {
+ if (self.startPosition == Position()) {
+ return "HTMLToken(type: \(self.type))"
+ }
+ else if (self.endPosition == Position()) {
+ return "HTMLToken(type: \(self.type))@\(self.startPosition)"
+ }
+ else {
+ return "HTMLToken(type: \(self.type))@\(self.startPosition)-\(self.endPosition)"
+ }
+ }
+}