diff --git a/Sources/SwiftParser/Languages/MarkdownLanguage.swift b/Sources/SwiftParser/Languages/MarkdownLanguage.swift index 08e572e..45e803b 100644 --- a/Sources/SwiftParser/Languages/MarkdownLanguage.swift +++ b/Sources/SwiftParser/Languages/MarkdownLanguage.swift @@ -324,9 +324,9 @@ public struct MarkdownLanguage: CodeLanguage { processed.append(tok) } - let value = processed.map { $0.text }.joined() + let trimmedValue = processed.map { $0.text }.joined().trimmingCharacters(in: .whitespaces) let children = MarkdownLanguage.parseInlineTokens(processed, input: context.input) - let node = MarkdownHeadingNode(value: value, level: count) + let node = MarkdownHeadingNode(value: trimmedValue, level: count) children.forEach { node.addChild($0) } context.currentNode.addChild(node) } @@ -376,7 +376,10 @@ public struct MarkdownLanguage: CodeLanguage { default: return false } - if idx < context.tokens.count, let next = context.tokens[idx] as? Token, case .newline = next { break } + if idx < context.tokens.count, let next = context.tokens[idx] as? Token { + if case .newline = next { break } + if case .eof = next { break } + } } if count == 0 { return false } if idx < context.tokens.count, let endTok = context.tokens[idx] as? Token { @@ -1053,13 +1056,9 @@ public struct MarkdownLanguage: CodeLanguage { cells.append(cell.trimmingCharacters(in: .whitespaces)) cell = "" context.index += 1 - case .newline: - cells.append(cell.trimmingCharacters(in: .whitespaces)) - context.index += 1 - context.currentNode.addChild(MarkdownTableNode(value: cells.joined(separator: "|"))) - return - case .eof: + case .newline, .eof: cells.append(cell.trimmingCharacters(in: .whitespaces)) + if let last = cells.last, last.isEmpty { cells.removeLast() } context.index += 1 context.currentNode.addChild(MarkdownTableNode(value: cells.joined(separator: "|"))) return