mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-14 20:37:55 -05:00
Rename hstring.RenderedHTML => hstring.HTML
And add a comment about why it exists.
This commit is contained in:
parent
96afea4acc
commit
469124823c
7 changed files with 27 additions and 25 deletions
|
@ -19,16 +19,18 @@ import (
|
|||
"github.com/gohugoio/hugo/common/types"
|
||||
)
|
||||
|
||||
var _ types.PrintableValueProvider = RenderedHTML("")
|
||||
var _ types.PrintableValueProvider = HTML("")
|
||||
|
||||
// RenderedHTML is a string that represents rendered HTML.
|
||||
// When printed in templates it will be rendered as template.HTML and considered safe.
|
||||
type RenderedHTML string
|
||||
// HTML is a string that represents rendered HTML.
|
||||
// When printed in templates it will be rendered as template.HTML and considered safe so no need to pipe it into `safeHTML`.
|
||||
// This type was introduced as a wasy to prevent a common case of inifinite recursion in the template rendering
|
||||
// when the `linkify` option is enabled with a common (wrong) construct like `{{ .Text | .Page.RenderString }}` in a hook template.
|
||||
type HTML string
|
||||
|
||||
func (s RenderedHTML) String() string {
|
||||
func (s HTML) String() string {
|
||||
return string(s)
|
||||
}
|
||||
|
||||
func (s RenderedHTML) PrintableValue() any {
|
||||
func (s HTML) PrintableValue() any {
|
||||
return template.HTML(s)
|
||||
}
|
||||
|
|
|
@ -25,6 +25,6 @@ func TestRenderedString(t *testing.T) {
|
|||
c := qt.New(t)
|
||||
|
||||
// Validate that it will behave like a string in Hugo settings.
|
||||
c.Assert(cast.ToString(RenderedHTML("Hugo")), qt.Equals, "Hugo")
|
||||
c.Assert(template.HTML(RenderedHTML("Hugo")), qt.Equals, template.HTML("Hugo"))
|
||||
c.Assert(cast.ToString(HTML("Hugo")), qt.Equals, "Hugo")
|
||||
c.Assert(template.HTML(HTML("Hugo")), qt.Equals, template.HTML("Hugo"))
|
||||
}
|
||||
|
|
|
@ -928,7 +928,7 @@ func (c *cachedContentScope) RenderString(ctx context.Context, args ...any) (tem
|
|||
|
||||
contentToRenderv := args[sidx]
|
||||
|
||||
if _, ok := contentToRenderv.(hstring.RenderedHTML); ok {
|
||||
if _, ok := contentToRenderv.(hstring.HTML); ok {
|
||||
// This content is already rendered, this is potentially
|
||||
// a infinite recursion.
|
||||
return "", errors.New("text is already rendered, repeating it may cause infinite recursion")
|
||||
|
|
|
@ -41,7 +41,7 @@ type LinkContext interface {
|
|||
Title() string
|
||||
|
||||
// The rendered (HTML) text.
|
||||
Text() hstring.RenderedHTML
|
||||
Text() hstring.HTML
|
||||
|
||||
// The plain variant of Text.
|
||||
PlainText() string
|
||||
|
@ -100,7 +100,7 @@ type BlockquoteContext interface {
|
|||
|
||||
// The blockquote text.
|
||||
// If type is "alert", this will be the alert text.
|
||||
Text() hstring.RenderedHTML
|
||||
Text() hstring.HTML
|
||||
|
||||
/// Returns the blockquote type, one of "regular" and "alert".
|
||||
// Type "alert" indicates that this is a GitHub type alert.
|
||||
|
@ -166,7 +166,7 @@ type HeadingContext interface {
|
|||
// Anchor is the HTML id assigned to the heading.
|
||||
Anchor() string
|
||||
// Text is the rendered (HTML) heading text, excluding the heading marker.
|
||||
Text() hstring.RenderedHTML
|
||||
Text() hstring.HTML
|
||||
// PlainText is the unrendered version of Text.
|
||||
PlainText() string
|
||||
|
||||
|
@ -213,7 +213,7 @@ const (
|
|||
type GetRendererFunc func(t RendererType, id any) any
|
||||
|
||||
type TableCell struct {
|
||||
Text hstring.RenderedHTML
|
||||
Text hstring.HTML
|
||||
Alignment string // left, center, or right
|
||||
}
|
||||
|
||||
|
|
|
@ -95,7 +95,7 @@ func (r *htmlRenderer) renderBlockquote(w util.BufWriter, src []byte, node ast.N
|
|||
BaseContext: render.NewBaseContext(ctx, renderer, n, src, nil, ordinal),
|
||||
typ: typ,
|
||||
alertType: alertType,
|
||||
text: hstring.RenderedHTML(text),
|
||||
text: hstring.HTML(text),
|
||||
AttributesHolder: attributes.New(n.Attributes(), attributes.AttributesOwnerGeneral),
|
||||
}
|
||||
|
||||
|
@ -134,7 +134,7 @@ func (r *htmlRenderer) renderBlockquoteDefault(
|
|||
type blockquoteContext struct {
|
||||
hooks.BaseContext
|
||||
|
||||
text hstring.RenderedHTML
|
||||
text hstring.HTML
|
||||
alertType string
|
||||
typ string
|
||||
|
||||
|
@ -149,7 +149,7 @@ func (c *blockquoteContext) AlertType() string {
|
|||
return c.alertType
|
||||
}
|
||||
|
||||
func (c *blockquoteContext) Text() hstring.RenderedHTML {
|
||||
func (c *blockquoteContext) Text() hstring.HTML {
|
||||
return c.text
|
||||
}
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ type linkContext struct {
|
|||
pageInner any
|
||||
destination string
|
||||
title string
|
||||
text hstring.RenderedHTML
|
||||
text hstring.HTML
|
||||
plainText string
|
||||
*attributes.AttributesHolder
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ func (ctx linkContext) PageInner() any {
|
|||
return ctx.pageInner
|
||||
}
|
||||
|
||||
func (ctx linkContext) Text() hstring.RenderedHTML {
|
||||
func (ctx linkContext) Text() hstring.HTML {
|
||||
return ctx.text
|
||||
}
|
||||
|
||||
|
@ -100,7 +100,7 @@ type headingContext struct {
|
|||
pageInner any
|
||||
level int
|
||||
anchor string
|
||||
text hstring.RenderedHTML
|
||||
text hstring.HTML
|
||||
plainText string
|
||||
*attributes.AttributesHolder
|
||||
}
|
||||
|
@ -121,7 +121,7 @@ func (ctx headingContext) Anchor() string {
|
|||
return ctx.anchor
|
||||
}
|
||||
|
||||
func (ctx headingContext) Text() hstring.RenderedHTML {
|
||||
func (ctx headingContext) Text() hstring.HTML {
|
||||
return ctx.text
|
||||
}
|
||||
|
||||
|
@ -199,7 +199,7 @@ func (r *hookedRenderer) renderImage(w util.BufWriter, source []byte, node ast.N
|
|||
pageInner: pageInner,
|
||||
destination: string(n.Destination),
|
||||
title: string(n.Title),
|
||||
text: hstring.RenderedHTML(text),
|
||||
text: hstring.HTML(text),
|
||||
plainText: string(n.Text(source)),
|
||||
AttributesHolder: attributes.New(attrs, attributes.AttributesOwnerGeneral),
|
||||
},
|
||||
|
@ -288,7 +288,7 @@ func (r *hookedRenderer) renderLink(w util.BufWriter, source []byte, node ast.No
|
|||
pageInner: pageInner,
|
||||
destination: string(n.Destination),
|
||||
title: string(n.Title),
|
||||
text: hstring.RenderedHTML(text),
|
||||
text: hstring.HTML(text),
|
||||
plainText: string(n.Text(source)),
|
||||
AttributesHolder: attributes.Empty,
|
||||
},
|
||||
|
@ -355,7 +355,7 @@ func (r *hookedRenderer) renderAutoLink(w util.BufWriter, source []byte, node as
|
|||
page: page,
|
||||
pageInner: pageInner,
|
||||
destination: url,
|
||||
text: hstring.RenderedHTML(label),
|
||||
text: hstring.HTML(label),
|
||||
plainText: label,
|
||||
AttributesHolder: attributes.Empty,
|
||||
},
|
||||
|
@ -442,7 +442,7 @@ func (r *hookedRenderer) renderHeading(w util.BufWriter, source []byte, node ast
|
|||
pageInner: pageInner,
|
||||
level: n.Level,
|
||||
anchor: string(anchor),
|
||||
text: hstring.RenderedHTML(text),
|
||||
text: hstring.HTML(text),
|
||||
plainText: string(n.Text(source)),
|
||||
AttributesHolder: attributes.New(n.Attributes(), attributes.AttributesOwnerGeneral),
|
||||
},
|
||||
|
|
|
@ -132,7 +132,7 @@ func (r *htmlRenderer) renderCell(w util.BufWriter, source []byte, node ast.Node
|
|||
alignment = "left"
|
||||
}
|
||||
|
||||
cell := hooks.TableCell{Text: hstring.RenderedHTML(text), Alignment: alignment}
|
||||
cell := hooks.TableCell{Text: hstring.HTML(text), Alignment: alignment}
|
||||
|
||||
if node.Parent().Kind() == gast.KindTableHeader {
|
||||
table.THead[len(table.THead)-1] = append(table.THead[len(table.THead)-1], cell)
|
||||
|
|
Loading…
Reference in a new issue