Skip to content

Commit 1c95659

Browse files
trim trailing whitespace when parsing single-line directives (#114)
rdar://106458003
1 parent 36b71b3 commit 1c95659

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

Sources/Markdown/Parser/BlockDirectiveParser.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ struct PendingBlockDirective {
182182
// "@xx { yy } zz }" "yy } zz" will be parsed
183183

184184
var reversedRemainingContent = TrimmedLine(Substring(line.text.reversed()), source: line.source, lineNumber: line.lineNumber)
185+
reversedRemainingContent.lexWhitespace()
185186
if !line.text.isEmpty,
186187
reversedRemainingContent.lex("}") != nil {
187188
let trailingWhiteSpaceCount = reversedRemainingContent.lexWhitespace()?.text.count ?? 0

Tests/MarkdownTests/Parsing/BlockDirectiveParserTests.swift

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -982,4 +982,25 @@ class BlockDirectiveArgumentParserTests: XCTestCase {
982982
"""#
983983
XCTAssertEqual(document.debugDescription(options: .printSourceLocations), expectedDump)
984984
}
985+
986+
func testSingleLineDirectiveWithTrailingWhitespace() {
987+
let source = """
988+
@blah { content }\(" ")
989+
@blah {
990+
content
991+
}
992+
"""
993+
let document = Document(parsing: source, options: [.parseBlockDirectives])
994+
995+
let expectedDump = #"""
996+
Document @1:1-4:2
997+
├─ BlockDirective @1:1-1:19 name: "blah"
998+
│ └─ Paragraph @1:9-1:17
999+
│ └─ Text @1:9-1:16 "content"
1000+
└─ BlockDirective @2:1-4:2 name: "blah"
1001+
└─ Paragraph @3:5-3:12
1002+
└─ Text @3:5-3:12 "content"
1003+
"""#
1004+
XCTAssertEqual(document.debugDescription(options: .printSourceLocations), expectedDump)
1005+
}
9851006
}

0 commit comments

Comments
 (0)