Skip to content

Commit 89dc111

Browse files
Fix tests
1 parent d8f9dfd commit 89dc111

File tree

17 files changed

+629
-600
lines changed

17 files changed

+629
-600
lines changed

Resources/branch_main/Sources/parser/TokenVisitor.swift

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ final class TokenVisitor: SyntaxRewriter {
142142
}
143143

144144
override func visit(_ token: TokenSyntax) -> TokenSyntax {
145-
current.text = token.text
145+
current.text = escapeHTML(token.text)
146146
current.token = Token(kind: "\(token.tokenKind)", leadingTrivia: "", trailingTrivia: "")
147147

148148
token.leadingTrivia.forEach { (piece) in
@@ -183,7 +183,7 @@ final class TokenVisitor: SyntaxRewriter {
183183
let end = sourceRange.end
184184
let text = token.presence == .present ? token.text : ""
185185
list.append(
186-
"<span class='token \(kind)' " +
186+
"<span class='token \(escapeHTML(kind))' " +
187187
"data-title='\(escapeHTML("\(token.trimmed)"))' " +
188188
"data-content='\(escapeHTML("\(token.tokenKind)"))' " +
189189
"data-type='Token' " +
@@ -230,21 +230,21 @@ final class TokenVisitor: SyntaxRewriter {
230230
private func replaceSymbols(text: String) -> String {
231231
text.replacingOccurrences(of: "&nbsp;", with: "").replacingOccurrences(of: "<br>", with: "")
232232
}
233+
}
233234

234-
private func escapeHTML(_ string: String) -> String {
235-
var newString = string
236-
let specialCharacters = [
237-
("&", "&amp;"),
238-
("<", "&lt;"),
239-
(">", "&gt;"),
240-
("\"", "&quot;"),
241-
("'", "&apos;"),
242-
];
243-
for (unescaped, escaped) in specialCharacters {
244-
newString = newString.replacingOccurrences(of: unescaped, with: escaped, options: .literal, range: nil)
245-
}
246-
return newString
247-
.replacingOccurrences(of: " ", with: "&nbsp;")
248-
.replacingOccurrences(of: "\n", with: "<br>")
235+
func escapeHTML(_ string: String) -> String {
236+
var newString = string
237+
let specialCharacters = [
238+
("&", "&amp;"),
239+
("<", "&lt;"),
240+
(">", "&gt;"),
241+
("\"", "&quot;"),
242+
("'", "&apos;"),
243+
];
244+
for (unescaped, escaped) in specialCharacters {
245+
newString = newString.replacingOccurrences(of: unescaped, with: escaped, options: .literal, range: nil)
249246
}
247+
return newString
248+
.replacingOccurrences(of: " ", with: "&nbsp;")
249+
.replacingOccurrences(of: "\n", with: "<br>")
250250
}

Resources/branch_main/Sources/parser/TreeNode.swift

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ final class TreeNode: Codable {
1212

1313
init(id: Int, text: String, range: Range, type: SyntaxType) {
1414
self.id = id
15-
self.text = text
15+
self.text = escapeHTML(text)
1616
self.range = range
1717
self.type = type
1818
}
@@ -72,9 +72,13 @@ struct StructureProperty: Codable, Equatable {
7272
let ref: String?
7373

7474
init(name: String, value: StructureValue? = nil, ref: String? = nil) {
75-
self.name = name
75+
self.name = escapeHTML(name)
7676
self.value = value
77-
self.ref = ref
77+
if let ref {
78+
self.ref = escapeHTML(ref)
79+
} else {
80+
self.ref = nil
81+
}
7882
}
7983
}
8084

@@ -95,8 +99,12 @@ struct StructureValue: Codable, Equatable {
9599
let kind: String?
96100

97101
init(text: String, kind: String? = nil) {
98-
self.text = text
99-
self.kind = kind
102+
self.text = escapeHTML(text)
103+
if let kind {
104+
self.kind = escapeHTML(kind)
105+
} else {
106+
self.kind = nil
107+
}
100108
}
101109
}
102110

@@ -124,6 +132,12 @@ struct Token: Codable, Equatable {
124132
var kind: String
125133
var leadingTrivia: String
126134
var trailingTrivia: String
135+
136+
init(kind: String, leadingTrivia: String, trailingTrivia: String) {
137+
self.kind = escapeHTML(kind)
138+
self.leadingTrivia = leadingTrivia
139+
self.trailingTrivia = trailingTrivia
140+
}
127141
}
128142

129143
extension Token: CustomStringConvertible {

Resources/branch_release-5.9/Sources/parser/TokenVisitor.swift

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ final class TokenVisitor: SyntaxRewriter {
142142
}
143143

144144
override func visit(_ token: TokenSyntax) -> TokenSyntax {
145-
current.text = token.text
145+
current.text = escapeHTML(token.text)
146146
current.token = Token(kind: "\(token.tokenKind)", leadingTrivia: "", trailingTrivia: "")
147147

148148
token.leadingTrivia.forEach { (piece) in
@@ -183,7 +183,7 @@ final class TokenVisitor: SyntaxRewriter {
183183
let end = sourceRange.end
184184
let text = token.presence == .present ? token.text : ""
185185
list.append(
186-
"<span class='token \(kind)' " +
186+
"<span class='token \(escapeHTML(kind))' " +
187187
"data-title='\(escapeHTML("\(token.trimmed)"))' " +
188188
"data-content='\(escapeHTML("\(token.tokenKind)"))' " +
189189
"data-type='Token' " +
@@ -230,21 +230,21 @@ final class TokenVisitor: SyntaxRewriter {
230230
private func replaceSymbols(text: String) -> String {
231231
text.replacingOccurrences(of: "&nbsp;", with: "").replacingOccurrences(of: "<br>", with: "")
232232
}
233+
}
233234

234-
private func escapeHTML(_ string: String) -> String {
235-
var newString = string
236-
let specialCharacters = [
237-
("&", "&amp;"),
238-
("<", "&lt;"),
239-
(">", "&gt;"),
240-
("\"", "&quot;"),
241-
("'", "&apos;"),
242-
];
243-
for (unescaped, escaped) in specialCharacters {
244-
newString = newString.replacingOccurrences(of: unescaped, with: escaped, options: .literal, range: nil)
245-
}
246-
return newString
247-
.replacingOccurrences(of: " ", with: "&nbsp;")
248-
.replacingOccurrences(of: "\n", with: "<br>")
235+
func escapeHTML(_ string: String) -> String {
236+
var newString = string
237+
let specialCharacters = [
238+
("&", "&amp;"),
239+
("<", "&lt;"),
240+
(">", "&gt;"),
241+
("\"", "&quot;"),
242+
("'", "&apos;"),
243+
];
244+
for (unescaped, escaped) in specialCharacters {
245+
newString = newString.replacingOccurrences(of: unescaped, with: escaped, options: .literal, range: nil)
249246
}
247+
return newString
248+
.replacingOccurrences(of: " ", with: "&nbsp;")
249+
.replacingOccurrences(of: "\n", with: "<br>")
250250
}

Resources/branch_release-5.9/Sources/parser/TreeNode.swift

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ final class TreeNode: Codable {
1212

1313
init(id: Int, text: String, range: Range, type: SyntaxType) {
1414
self.id = id
15-
self.text = text
15+
self.text = escapeHTML(text)
1616
self.range = range
1717
self.type = type
1818
}
@@ -72,9 +72,13 @@ struct StructureProperty: Codable, Equatable {
7272
let ref: String?
7373

7474
init(name: String, value: StructureValue? = nil, ref: String? = nil) {
75-
self.name = name
75+
self.name = escapeHTML(name)
7676
self.value = value
77-
self.ref = ref
77+
if let ref {
78+
self.ref = escapeHTML(ref)
79+
} else {
80+
self.ref = nil
81+
}
7882
}
7983
}
8084

@@ -95,8 +99,12 @@ struct StructureValue: Codable, Equatable {
9599
let kind: String?
96100

97101
init(text: String, kind: String? = nil) {
98-
self.text = text
99-
self.kind = kind
102+
self.text = escapeHTML(text)
103+
if let kind {
104+
self.kind = escapeHTML(kind)
105+
} else {
106+
self.kind = nil
107+
}
100108
}
101109
}
102110

@@ -124,6 +132,12 @@ struct Token: Codable, Equatable {
124132
var kind: String
125133
var leadingTrivia: String
126134
var trailingTrivia: String
135+
136+
init(kind: String, leadingTrivia: String, trailingTrivia: String) {
137+
self.kind = escapeHTML(kind)
138+
self.leadingTrivia = leadingTrivia
139+
self.trailingTrivia = trailingTrivia
140+
}
127141
}
128142

129143
extension Token: CustomStringConvertible {

Resources/branch_release-5.9/Tests/Tests/Fixtures/test-1-1.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@
330330
{
331331
"name": "identifier",
332332
"value": {
333-
"kind": "identifier(\"number\")",
333+
"kind": "identifier(&quot;number&quot;)",
334334
"text": "number␣"
335335
}
336336
},
@@ -356,7 +356,7 @@
356356
"structure": [],
357357
"text": "number",
358358
"token": {
359-
"kind": "identifier(\"number\")",
359+
"kind": "identifier(&quot;number&quot;)",
360360
"leadingTrivia": "",
361361
"trailingTrivia": ""
362362
},
@@ -445,7 +445,7 @@
445445
{
446446
"name": "digits",
447447
"value": {
448-
"kind": "integerLiteral(\"0\")",
448+
"kind": "integerLiteral(&quot;0&quot;)",
449449
"text": "0"
450450
}
451451
},
@@ -471,7 +471,7 @@
471471
"structure": [],
472472
"text": "0",
473473
"token": {
474-
"kind": "integerLiteral(\"0\")",
474+
"kind": "integerLiteral(&quot;0&quot;)",
475475
"leadingTrivia": "",
476476
"trailingTrivia": ""
477477
},

0 commit comments

Comments
 (0)