Skip to content

Commit d6e61d3

Browse files
CIAvashalecthomas
authored andcommitted
Use span for .line, put code inside <code>
Apparently only "phrasing content" are permitted inside `pre` and `code`, and `div` is not one of them, so replace it with `span`, `div` wasn't necessary anyway. Also it makes sense to put code inside `code` tag(except for line numbers). Removed `overflow:auto` and `width: auto` as they didn't seem to be necessary and actually prevented horizontal scroll bar to appear when content didn't fit in the viewport.
1 parent 5ed5054 commit d6e61d3

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

Diff for: formatters/html/html.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -139,17 +139,17 @@ var (
139139
defaultPreWrapper = preWrapper{
140140
start: func(code bool, styleAttr string) string {
141141
if code {
142-
return fmt.Sprintf(`<pre tabindex="0"%s>`, styleAttr)
142+
return fmt.Sprintf(`<pre tabindex="0"%s><code>`, styleAttr)
143143
}
144144

145-
return fmt.Sprintf(`<div tabindex="0"%s>`, styleAttr)
145+
return fmt.Sprintf(`<pre tabindex="0"%s>`, styleAttr)
146146
},
147147
end: func(code bool) string {
148148
if code {
149-
return `</pre>`
149+
return `</code></pre>`
150150
}
151151

152-
return `</div>`
152+
return `</pre>`
153153
},
154154
}
155155
)
@@ -250,7 +250,7 @@ func (f *Formatter) writeHTML(w io.Writer, style *chroma.Style, tokens []chroma.
250250
}
251251

252252
// Start of Line
253-
fmt.Fprint(w, `<div`)
253+
fmt.Fprint(w, `<span`)
254254
if highlight {
255255
// Line + LineHighlight
256256
if f.Classes {
@@ -281,7 +281,7 @@ func (f *Formatter) writeHTML(w io.Writer, style *chroma.Style, tokens []chroma.
281281

282282
fmt.Fprint(w, `</span>`) // End of CodeLine
283283

284-
fmt.Fprint(w, `</div>`) // End of Line
284+
fmt.Fprint(w, `</span>`) // End of Line
285285
}
286286

287287
fmt.Fprintf(w, f.preWrapper.End(true))
@@ -454,8 +454,8 @@ func (f *Formatter) styleToCSS(style *chroma.Style) map[chroma.TokenType]string
454454
// All rules begin with default rules followed by user provided rules
455455
classes[chroma.Line] = `display: flex;` + classes[chroma.Line]
456456
classes[chroma.LineNumbers] = lineNumbersStyle + classes[chroma.LineNumbers]
457-
classes[chroma.LineNumbersTable] = `font-family: monospace; font-size: inherit;` + lineNumbersStyle + classes[chroma.LineNumbersTable]
458-
classes[chroma.LineTable] = "border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block;" + classes[chroma.LineTable]
457+
classes[chroma.LineNumbersTable] = lineNumbersStyle + classes[chroma.LineNumbersTable]
458+
classes[chroma.LineTable] = "border-spacing: 0; padding: 0; margin: 0; border: 0;" + classes[chroma.LineTable]
459459
classes[chroma.LineTableTD] = "vertical-align: top; padding: 0; margin: 0; border: 0;" + classes[chroma.LineTableTD]
460460
return classes
461461
}

Diff for: formatters/html/html_test.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ func TestHighlightLines(t *testing.T) {
129129
err = f.Format(&buf, styles.Fallback, it)
130130
assert.NoError(t, err)
131131

132-
assert.Contains(t, buf.String(), `<div class="line hl"><span class="cl">`)
132+
assert.Contains(t, buf.String(), `<span class="line hl"><span class="cl">`)
133133
}
134134

135135
func TestLineNumbers(t *testing.T) {
@@ -141,7 +141,7 @@ func TestLineNumbers(t *testing.T) {
141141
err = f.Format(&buf, styles.Fallback, it)
142142
assert.NoError(t, err)
143143

144-
assert.Contains(t, buf.String(), `<div class="line"><span class="ln">1</span><span class="cl"><span class="nb">echo</span> FOO</span></div>`)
144+
assert.Contains(t, buf.String(), `<span class="line"><span class="ln">1</span><span class="cl"><span class="nb">echo</span> FOO</span></span>`)
145145
}
146146

147147
func TestPreWrapper(t *testing.T) {
@@ -153,7 +153,7 @@ func TestPreWrapper(t *testing.T) {
153153
err = f.Format(&buf, styles.Fallback, it)
154154
assert.NoError(t, err)
155155

156-
assert.Regexp(t, "<body class=\"bg\">\n<pre.*class=\"chroma\"><div class=\"line\"><span class=\"cl\"><span class=\"nb\">echo</span> FOO</span></div></pre>\n</body>\n</html>", buf.String())
156+
assert.Regexp(t, "<body class=\"bg\">\n<pre.*class=\"chroma\"><code><span class=\"line\"><span class=\"cl\"><span class=\"nb\">echo</span> FOO</span></span></code></pre>\n</body>\n</html>", buf.String())
157157
assert.Regexp(t, `\.bg { .+ }`, buf.String())
158158
assert.Regexp(t, `\.chroma { .+ }`, buf.String())
159159
}
@@ -252,17 +252,17 @@ func TestWithPreWrapper(t *testing.T) {
252252

253253
t.Run("Regular", func(t *testing.T) {
254254
s := format(New(WithClasses(true)))
255-
assert.Equal(t, s, `<pre tabindex="0" class="chroma"><div class="line"><span class="cl"><span class="nb">echo</span> FOO</span></div></pre>`)
255+
assert.Equal(t, s, `<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl"><span class="nb">echo</span> FOO</span></span></code></pre>`)
256256
})
257257

258258
t.Run("PreventSurroundingPre", func(t *testing.T) {
259259
s := format(New(PreventSurroundingPre(true), WithClasses(true)))
260-
assert.Equal(t, s, `<div class="line"><span class="cl"><span class="nb">echo</span> FOO</span></div>`)
260+
assert.Equal(t, s, `<span class="line"><span class="cl"><span class="nb">echo</span> FOO</span></span>`)
261261
})
262262

263263
t.Run("Wrapper", func(t *testing.T) {
264264
s := format(New(WithPreWrapper(wrapper), WithClasses(true)))
265-
assert.Equal(t, s, `<foo class="chroma" id="code-true"><div class="line"><span class="cl"><span class="nb">echo</span> FOO</span></div></foo>`)
265+
assert.Equal(t, s, `<foo class="chroma" id="code-true"><span class="line"><span class="cl"><span class="nb">echo</span> FOO</span></span></foo>`)
266266
})
267267

268268
t.Run("Wrapper, LineNumbersInTable", func(t *testing.T) {
@@ -273,7 +273,7 @@ func TestWithPreWrapper(t *testing.T) {
273273
<foo class="chroma" id="code-false"><span class="lnt">1
274274
</span></foo></td>
275275
<td class="lntd">
276-
<foo class="chroma" id="code-true"><div class="line"><span class="cl"><span class="nb">echo</span> FOO</span></div></foo></td></tr></table>
276+
<foo class="chroma" id="code-true"><span class="line"><span class="cl"><span class="nb">echo</span> FOO</span></span></foo></td></tr></table>
277277
</div>
278278
`)
279279
})
@@ -296,7 +296,7 @@ func TestReconfigureOptions(t *testing.T) {
296296
err = f.Format(&buf, styles.Fallback, it)
297297

298298
assert.NoError(t, err)
299-
assert.Equal(t, `<pre tabindex="0" class="chroma"><div class="line"><span class="cl"><span class="nb">echo</span> FOO</span></div></pre>`, buf.String())
299+
assert.Equal(t, `<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl"><span class="nb">echo</span> FOO</span></span></code></pre>`, buf.String())
300300
}
301301

302302
func TestWriteCssWithAllClasses(t *testing.T) {

0 commit comments

Comments
 (0)