Don't wrap simple titles in <p>

Before this commit, if an org document was titled "Title here", the
first line of HTML output would be as follows:

<h1 class="title"><p>Title here\n</p></h1>

This commit changes the HTML writer to instead output the following:

<h1 class="title">Title Here</h1>

I conversatively modified the code, so there might be more cases where
elements should be omitted from the title.
This commit is contained in:
xjzi 2022-08-21 11:07:57 -04:00
parent 9a9c046a14
commit 81cb0c3735
2 changed files with 12 additions and 3 deletions

View file

@ -100,7 +100,17 @@ func (w *HTMLWriter) Before(d *Document) {
if title := d.Get("TITLE"); title != "" && w.document.GetOption("title") != "nil" {
titleDocument := d.Parse(strings.NewReader(title), d.Path)
if titleDocument.Error == nil {
title = w.WriteNodesAsString(titleDocument.Nodes...)
simpleTitle := false
if len(titleDocument.Nodes) == 1 {
switch p := titleDocument.Nodes[0].(type) {
case Paragraph:
simpleTitle = true
title = w.WriteNodesAsString(p.Children...)
}
}
if !simpleTitle {
title = w.WriteNodesAsString(titleDocument.Nodes...)
}
}
w.WriteString(fmt.Sprintf(`<h1 class="title">%s</h1>`+"\n", title))
}