/* GoToSocial Copyright (C) 2021-2023 GoToSocial Authors admin@gotosocial.org This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package text import ( "github.com/yuin/goldmark/ast" "github.com/yuin/goldmark/parser" "github.com/yuin/goldmark/text" ) // plaintextParser implements goldmark.parser.BlockParser type plaintextParser struct { } var defaultPlaintextParser = &plaintextParser{} func newPlaintextParser() parser.BlockParser { return defaultPlaintextParser } func (b *plaintextParser) Trigger() []byte { return nil } func (b *plaintextParser) Open(parent ast.Node, reader text.Reader, pc parser.Context) (ast.Node, parser.State) { _, segment := reader.PeekLine() node := ast.NewParagraph() node.Lines().Append(segment) reader.Advance(segment.Len() - 1) return node, parser.NoChildren } func (b *plaintextParser) Continue(node ast.Node, reader text.Reader, pc parser.Context) parser.State { _, segment := reader.PeekLine() node.Lines().Append(segment) reader.Advance(segment.Len() - 1) return parser.Continue | parser.NoChildren } func (b *plaintextParser) Close(node ast.Node, reader text.Reader, pc parser.Context) {} func (b *plaintextParser) CanInterruptParagraph() bool { return false } func (b *plaintextParser) CanAcceptIndentedLine() bool { return true }