Skip to content

Commit

Permalink
Fix #8
Browse files Browse the repository at this point in the history
This fixes trailing newlines at the end of Gemtext being left.
  • Loading branch information
tdemin committed Dec 12, 2020
1 parent d89c4b5 commit 7eaf6b7
Showing 1 changed file with 15 additions and 6 deletions.
21 changes: 15 additions & 6 deletions render.go
Expand Up @@ -48,7 +48,10 @@ func (h HugoMetadata) Date() time.Time {
return h.PostDate
}

var yamlDelimiter = []byte("---\n")
var (
yamlDelimiter = []byte("---\n")
trailing = []byte("\n\n")
)

// ErrPostIsDraft indicates the post rendered is a draft and is not
// supposed to be rendered.
Expand Down Expand Up @@ -99,14 +102,20 @@ func RenderMarkdown(md []byte, settings Settings) (geminiText []byte, metadata H
md = md[blockEnd+len(yamlDelimiter)*2:]
parse:
ast := markdown.Parse(md, parser.NewWithExtensions(parser.CommonExtensions))
var geminiContent []byte
var content []byte
if settings.Has(WithMetadata) && metadata.PostTitle != "" {
geminiContent = markdown.Render(ast, gemini.NewRendererWithMetadata(metadata))
content = markdown.Render(ast, gemini.NewRendererWithMetadata(metadata))
} else {
geminiContent = markdown.Render(ast, gemini.NewRenderer())
content = markdown.Render(ast, gemini.NewRenderer())
}
for li := bytes.LastIndex(content, trailing); li != -1; li = bytes.LastIndex(content, trailing) {
if li != len(content)-len(trailing) {
break
}
content = content[:len(content)-1]
}
if metadata.PostIsDraft {
return geminiContent, metadata, fmt.Errorf("%s: %w", metadata.PostTitle, ErrPostIsDraft)
return content, metadata, fmt.Errorf("%s: %w", metadata.PostTitle, ErrPostIsDraft)
}
return geminiContent, metadata, nil
return content, metadata, nil
}

0 comments on commit 7eaf6b7

Please sign in to comment.