From 94dceb4f7c1740de9215b36ec183f93ca4337ee7 Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Thu, 2 Oct 2025 19:52:38 +0200 Subject: style(markdown): fix typo in package name --- markdown/ast_quote.go | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 markdown/ast_quote.go (limited to 'markdown/ast_quote.go') diff --git a/markdown/ast_quote.go b/markdown/ast_quote.go new file mode 100644 index 0000000..3dfede1 --- /dev/null +++ b/markdown/ast_quote.go @@ -0,0 +1,81 @@ +package markdown + +import ( + "fmt" + "html/template" + "strings" +) + +type astQuote struct { + quote []*astParagraph + source []*astParagraph +} + +func (a *astQuote) Eval() (template.HTML, *ParseError) { + var quote template.HTML + for _, c := range a.quote { + ct, err := c.Eval() + if err != nil { + return "", err + } + quote += ct + } + quote = template.HTML(fmt.Sprintf("
%s
", trimSpace(quote))) + var source template.HTML + for _, c := range a.source { + ct, err := c.Eval() + if err != nil { + return "", err + } + source += ct + } + source = template.HTML(strings.TrimSpace(string(source))) + if len(source) > 0 { + return template.HTML(fmt.Sprintf(`
%s

%s

`, quote, source)), nil + } + return template.HTML(fmt.Sprintf(`
%s
`, quote)), nil +} + +func quote(lxs *lexers) (*astQuote, *ParseError) { + tree := new(astQuote) + n := 0 + quoteContinue := true + source := false + for lxs.Next() && n < 2 { + switch lxs.Current().Type { + case lexerBreak: + n += len(lxs.Current().Value) + quoteContinue = false + case lexerQuote: + n = 0 + if source { + // because the code did not use it + lxs.Before() + return tree, nil + } + quoteContinue = true + case lexerLiteral, lexerModifier, lexerCode: + n = 0 + if !quoteContinue { + source = true + } + p, err := paragraph(lxs, true) + if err != nil { + return nil, err + } + + if !source { + tree.quote = append(tree.quote, p) + } else { + tree.source = append(tree.source, p) + } + n++ + quoteContinue = false + default: + // because the code did not use it + lxs.Before() + return tree, nil + } + } + return tree, nil +} -- cgit v1.2.3