mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
parent
915202494b
commit
c950c86b4e
3 changed files with 27 additions and 1 deletions
|
@ -1123,7 +1123,7 @@ ABC.
|
||||||
els := stats.HTMLElements
|
els := stats.HTMLElements
|
||||||
|
|
||||||
b.Assert(els.Classes, qt.HasLen, 3606) // (4 * 900) + 4 +2
|
b.Assert(els.Classes, qt.HasLen, 3606) // (4 * 900) + 4 +2
|
||||||
b.Assert(els.Tags, qt.HasLen, 8)
|
b.Assert(els.Tags, qt.HasLen, 9)
|
||||||
b.Assert(els.IDs, qt.HasLen, 1)
|
b.Assert(els.IDs, qt.HasLen, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -116,7 +116,13 @@ func (w *cssClassCollectorWriter) Write(p []byte) (n int, err error) {
|
||||||
|
|
||||||
w.buff.Reset()
|
w.buff.Reset()
|
||||||
|
|
||||||
|
if strings.HasPrefix(s, "</") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
s, tagName := w.insertStandinHTMLElement(s)
|
||||||
el := parseHTMLElement(s)
|
el := parseHTMLElement(s)
|
||||||
|
el.Tag = tagName
|
||||||
|
|
||||||
w.collector.mu.Lock()
|
w.collector.mu.Lock()
|
||||||
w.collector.elementSet[s] = true
|
w.collector.elementSet[s] = true
|
||||||
|
@ -132,6 +138,20 @@ func (w *cssClassCollectorWriter) Write(p []byte) (n int, err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The net/html parser does not handle single table elemnts as input, e.g. tbody.
|
||||||
|
// We only care about the element/class/ids, so just store away the original tag name
|
||||||
|
// and pretend it's a <div>.
|
||||||
|
func (c *cssClassCollectorWriter) insertStandinHTMLElement(el string) (string, string) {
|
||||||
|
tag := el[1:]
|
||||||
|
spacei := strings.Index(tag, " ")
|
||||||
|
if spacei != -1 {
|
||||||
|
tag = tag[:spacei]
|
||||||
|
}
|
||||||
|
newv := strings.Replace(el, tag, "div", 1)
|
||||||
|
return newv, strings.ToLower(tag)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func (c *cssClassCollectorWriter) endCollecting(drop bool) {
|
func (c *cssClassCollectorWriter) endCollecting(drop bool) {
|
||||||
c.isCollecting = false
|
c.isCollecting = false
|
||||||
c.inQuote = false
|
c.inQuote = false
|
||||||
|
|
|
@ -51,6 +51,12 @@ func TestClassCollector(t *testing.T) {
|
||||||
{"duplicates", `<div class="b a b"></div>`, f("div", "a b", "")},
|
{"duplicates", `<div class="b a b"></div>`, f("div", "a b", "")},
|
||||||
{"single quote", `<body class='b a'></body>`, f("body", "a b", "")},
|
{"single quote", `<body class='b a'></body>`, f("body", "a b", "")},
|
||||||
{"no quote", `<body class=b id=myelement></body>`, f("body", "b", "myelement")},
|
{"no quote", `<body class=b id=myelement></body>`, f("body", "b", "myelement")},
|
||||||
|
{"thead", `
|
||||||
|
https://github.com/gohugoio/hugo/issues/7318
|
||||||
|
<table class="cl1">
|
||||||
|
<thead class="cl2"><tr class="cl3"><td class="cl4"></td></tr></thead>
|
||||||
|
<tbody class="cl5"><tr class="cl6"><td class="cl7"></td></tr></tbody>
|
||||||
|
</table>`, f("table tbody td thead tr", "cl1 cl2 cl3 cl4 cl5 cl6 cl7", "")},
|
||||||
// https://github.com/gohugoio/hugo/issues/7161
|
// https://github.com/gohugoio/hugo/issues/7161
|
||||||
{"minified a href", `<a class="b a" href=/></a>`, f("a", "a b", "")},
|
{"minified a href", `<a class="b a" href=/></a>`, f("a", "a b", "")},
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue