Fix markup for fenced code with linenos (#1746)
* fix fenced code blocks with linenos and minify_html * fix test cases involving linenos
This commit is contained in:
parent
4bcbf2a545
commit
78b19d7133
@ -162,6 +162,10 @@ impl<'config> CodeBlock<'config> {
|
|||||||
|
|
||||||
let highlighted_line = self.highlighter.highlight_line(line);
|
let highlighted_line = self.highlighter.highlight_line(line);
|
||||||
maybe_mark(&mut buffer, &highlighted_line);
|
maybe_mark(&mut buffer, &highlighted_line);
|
||||||
|
|
||||||
|
if self.line_numbers {
|
||||||
|
buffer.push_str("</td></tr>");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(rest) = self.highlighter.finalize() {
|
if let Some(rest) = self.highlighter.finalize() {
|
||||||
@ -169,7 +173,7 @@ impl<'config> CodeBlock<'config> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if self.line_numbers {
|
if self.line_numbers {
|
||||||
buffer.push_str("</tr></tbody></table>");
|
buffer.push_str("</tbody></table>");
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer
|
buffer
|
||||||
|
@ -32,7 +32,7 @@ bar
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
res.body,
|
res.body,
|
||||||
"<pre data-linenos style=\"background-color:#2b303b;color:#c0c5ce;\"><code><table><tbody><tr><td>1</td><td><span>foo\n</span><tr><td>2</td><td><span>bar\n</span></tr></tbody></table></code></pre>\n"
|
"<pre data-linenos style=\"background-color:#2b303b;color:#c0c5ce;\"><code><table><tbody><tr><td>1</td><td><span>foo\n</span></td></tr><tr><td>2</td><td><span>bar\n</span></td></tr></tbody></table></code></pre>\n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ bar
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
res.body,
|
res.body,
|
||||||
"<pre data-linenos style=\"background-color:#2b303b;color:#c0c5ce;\"><code><table><tbody><tr><td>40</td><td><span>foo\n</span><tr><td>41</td><td><span>bar\n</span></tr></tbody></table></code></pre>\n"
|
"<pre data-linenos style=\"background-color:#2b303b;color:#c0c5ce;\"><code><table><tbody><tr><td>40</td><td><span>foo\n</span></td></tr><tr><td>41</td><td><span>bar\n</span></td></tr></tbody></table></code></pre>\n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,6 +92,6 @@ bar
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
res.body,
|
res.body,
|
||||||
"<pre data-linenos style=\"background-color:#2b303b;color:#c0c5ce;\"><code><table><tbody><tr><td>1</td><td><span>foo\n</span><tr><td><mark style=\"background-color:#65737e30;\">2</mark></td><td><mark style=\"background-color:#65737e30;\"><span>bar\n</span></mark></tr></tbody></table></code></pre>\n"
|
"<pre data-linenos style=\"background-color:#2b303b;color:#c0c5ce;\"><code><table><tbody><tr><td>1</td><td><span>foo\n</span></td></tr><tr><td><mark style=\"background-color:#65737e30;\">2</mark></td><td><mark style=\"background-color:#65737e30;\"><span>bar\n</span></mark></td></tr></tbody></table></code></pre>\n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -63,7 +63,7 @@ fn can_render_shortcode_in_codeblock() {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
res.body,
|
res.body,
|
||||||
"<pre data-linenos data-lang=\"html\" class=\"language-html \"><code class=\"language-html\" data-lang=\"html\"><table><tbody><tr><td>1</td><td><div id="custom-attr">\n<tr><td>2</td><td><div >\n<tr><td>3</td><td> <iframe src="https://www.youtube-nocookie.com/embed/dQw4w9WgXcQ" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>\n<tr><td>4</td><td></div>\n<tr><td>5</td><td>\n<tr><td>6</td><td></div>\n</tr></tbody></table></code></pre>\n"
|
"<pre data-linenos data-lang=\"html\" class=\"language-html \"><code class=\"language-html\" data-lang=\"html\"><table><tbody><tr><td>1</td><td><div id="custom-attr">\n</td></tr><tr><td>2</td><td><div >\n</td></tr><tr><td>3</td><td> <iframe src="https://www.youtube-nocookie.com/embed/dQw4w9WgXcQ" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>\n</td></tr><tr><td>4</td><td></div>\n</td></tr><tr><td>5</td><td>\n</td></tr><tr><td>6</td><td></div>\n</td></tr></tbody></table></code></pre>\n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,17 +131,17 @@ text 3
|
|||||||
assert_eq!(
|
assert_eq!(
|
||||||
res.body,
|
res.body,
|
||||||
r#"<pre data-linenos data-lang="html" class="language-html "><code class="language-html" data-lang="html"><table><tbody><tr><td>1</td><td><span>text 1</span>
|
r#"<pre data-linenos data-lang="html" class="language-html "><code class="language-html" data-lang="html"><table><tbody><tr><td>1</td><td><span>text 1</span>
|
||||||
<tr><td>2</td><td><div >
|
</td></tr><tr><td>2</td><td><div >
|
||||||
<tr><td>3</td><td> <iframe src="https://www.youtube-nocookie.com/embed/dQw4w9WgXcQ" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
|
</td></tr><tr><td>3</td><td> <iframe src="https://www.youtube-nocookie.com/embed/dQw4w9WgXcQ" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
|
||||||
<tr><td>4</td><td></div>
|
</td></tr><tr><td>4</td><td></div>
|
||||||
<tr><td>5</td><td>
|
</td></tr><tr><td>5</td><td>
|
||||||
<tr><td>6</td><td><span>text 2</span>
|
</td></tr><tr><td>6</td><td><span>text 2</span>
|
||||||
<tr><td>7</td><td><div class="gist">
|
</td></tr><tr><td>7</td><td><div class="gist">
|
||||||
<tr><td>8</td><td> <script src="https:&#x2F;&#x2F;gist.github.com&#x2F;Keats&#x2F;e5fb6aad409f28721c0ba14161644c57.js"></script>
|
</td></tr><tr><td>8</td><td> <script src="https:&#x2F;&#x2F;gist.github.com&#x2F;Keats&#x2F;e5fb6aad409f28721c0ba14161644c57.js"></script>
|
||||||
<tr><td>9</td><td></div>
|
</td></tr><tr><td>9</td><td></div>
|
||||||
<tr><td>10</td><td>
|
</td></tr><tr><td>10</td><td>
|
||||||
<tr><td>11</td><td><span>text 3</span>
|
</td></tr><tr><td>11</td><td><span>text 3</span>
|
||||||
</tr></tbody></table></code></pre>
|
</td></tr></tbody></table></code></pre>
|
||||||
"#
|
"#
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -175,7 +175,7 @@ fn is_highlighting_linenos_still_working() {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
res.body,
|
res.body,
|
||||||
"<pre data-linenos data-lang=\"html\" style=\"background-color:#2b303b;color:#c0c5ce;\" class=\"language-html \"><code class=\"language-html\" data-lang=\"html\"><table><tbody><tr><td>1</td><td><span><</span><span style=\"color:#bf616a;\">div </span><span style=\"color:#8fa1b3;\">id</span><span>="</span><span style=\"color:#a3be8c;\">custom-attr</span><span>">\n</span><tr><td>2</td><td><span><</span><span style=\"color:#bf616a;\">div </span><span>>\n</span><tr><td>3</td><td><span> <</span><span style=\"color:#bf616a;\">iframe </span><span style=\"color:#d08770;\">src</span><span>="</span><span style=\"color:#a3be8c;\">https://www.youtube-nocookie.com/embed/dQw4w9WgXcQ</span><span>" </span><span style=\"color:#d08770;\">webkitallowfullscreen mozallowfullscreen allowfullscreen</span><span>></</span><span style=\"color:#bf616a;\">iframe</span><span>>\n</span><tr><td>4</td><td><span></</span><span style=\"color:#bf616a;\">div</span><span>>\n</span><tr><td>5</td><td><span>\n</span><tr><td>6</td><td><span></</span><span style=\"color:#bf616a;\">div</span><span>>\n</span></tr></tbody></table></code></pre>\n"
|
"<pre data-linenos data-lang=\"html\" style=\"background-color:#2b303b;color:#c0c5ce;\" class=\"language-html \"><code class=\"language-html\" data-lang=\"html\"><table><tbody><tr><td>1</td><td><span><</span><span style=\"color:#bf616a;\">div </span><span style=\"color:#8fa1b3;\">id</span><span>="</span><span style=\"color:#a3be8c;\">custom-attr</span><span>">\n</span></td></tr><tr><td>2</td><td><span><</span><span style=\"color:#bf616a;\">div </span><span>>\n</span></td></tr><tr><td>3</td><td><span> <</span><span style=\"color:#bf616a;\">iframe </span><span style=\"color:#d08770;\">src</span><span>="</span><span style=\"color:#a3be8c;\">https://www.youtube-nocookie.com/embed/dQw4w9WgXcQ</span><span>" </span><span style=\"color:#d08770;\">webkitallowfullscreen mozallowfullscreen allowfullscreen</span><span>></</span><span style=\"color:#bf616a;\">iframe</span><span>>\n</span></td></tr><tr><td>4</td><td><span></</span><span style=\"color:#bf616a;\">div</span><span>>\n</span></td></tr><tr><td>5</td><td><span>\n</span></td></tr><tr><td>6</td><td><span></</span><span style=\"color:#bf616a;\">div</span><span>>\n</span></td></tr></tbody></table></code></pre>\n"
|
||||||
);
|
);
|
||||||
// multiple shortcode mixed with syntax and line numbers
|
// multiple shortcode mixed with syntax and line numbers
|
||||||
let res = render_content(
|
let res = render_content(
|
||||||
@ -194,17 +194,17 @@ fn is_highlighting_linenos_still_working() {
|
|||||||
assert_eq!(
|
assert_eq!(
|
||||||
res.body,
|
res.body,
|
||||||
r#"<pre data-linenos data-lang="html" style="background-color:#2b303b;color:#c0c5ce;" class="language-html "><code class="language-html" data-lang="html"><table><tbody><tr><td>1</td><td><span><</span><span style="color:#bf616a;">span</span><span>>text 1</</span><span style="color:#bf616a;">span</span><span>>
|
r#"<pre data-linenos data-lang="html" style="background-color:#2b303b;color:#c0c5ce;" class="language-html "><code class="language-html" data-lang="html"><table><tbody><tr><td>1</td><td><span><</span><span style="color:#bf616a;">span</span><span>>text 1</</span><span style="color:#bf616a;">span</span><span>>
|
||||||
</span><tr><td>2</td><td><span><</span><span style="color:#bf616a;">div </span><span>>
|
</span></td></tr><tr><td>2</td><td><span><</span><span style="color:#bf616a;">div </span><span>>
|
||||||
</span><tr><td>3</td><td><span> <</span><span style="color:#bf616a;">iframe </span><span style="color:#d08770;">src</span><span>="</span><span style="color:#a3be8c;">https://www.youtube-nocookie.com/embed/dQw4w9WgXcQ</span><span>" </span><span style="color:#d08770;">webkitallowfullscreen mozallowfullscreen allowfullscreen</span><span>></</span><span style="color:#bf616a;">iframe</span><span>>
|
</span></td></tr><tr><td>3</td><td><span> <</span><span style="color:#bf616a;">iframe </span><span style="color:#d08770;">src</span><span>="</span><span style="color:#a3be8c;">https://www.youtube-nocookie.com/embed/dQw4w9WgXcQ</span><span>" </span><span style="color:#d08770;">webkitallowfullscreen mozallowfullscreen allowfullscreen</span><span>></</span><span style="color:#bf616a;">iframe</span><span>>
|
||||||
</span><tr><td>4</td><td><span></</span><span style="color:#bf616a;">div</span><span>>
|
</span></td></tr><tr><td>4</td><td><span></</span><span style="color:#bf616a;">div</span><span>>
|
||||||
</span><tr><td>5</td><td><span>
|
</span></td></tr><tr><td>5</td><td><span>
|
||||||
</span><tr><td>6</td><td><span><</span><span style="color:#bf616a;">span</span><span>>text 2</</span><span style="color:#bf616a;">span</span><span>>
|
</span></td></tr><tr><td>6</td><td><span><</span><span style="color:#bf616a;">span</span><span>>text 2</</span><span style="color:#bf616a;">span</span><span>>
|
||||||
</span><tr><td>7</td><td><span><</span><span style="color:#bf616a;">div </span><span style="color:#d08770;">class</span><span>="</span><span style="color:#a3be8c;">gist</span><span>">
|
</span></td></tr><tr><td>7</td><td><span><</span><span style="color:#bf616a;">div </span><span style="color:#d08770;">class</span><span>="</span><span style="color:#a3be8c;">gist</span><span>">
|
||||||
</span><tr><td>8</td><td><span> <</span><span style="color:#bf616a;">script </span><span style="color:#d08770;">src</span><span>="</span><span style="color:#a3be8c;">https:</span><span style="color:#8fa1b3;">&#x</span><span style="color:#d08770;">2F;</span><span style="color:#8fa1b3;">&#x</span><span style="color:#d08770;">2F;</span><span style="color:#a3be8c;">gist.github.com</span><span style="color:#8fa1b3;">&#x</span><span style="color:#d08770;">2F;</span><span style="color:#a3be8c;">Keats</span><span style="color:#8fa1b3;">&#x</span><span style="color:#d08770;">2F;</span><span style="color:#a3be8c;">e5fb6aad409f28721c0ba14161644c57.js</span><span>"></</span><span style="color:#bf616a;">script</span><span>>
|
</span></td></tr><tr><td>8</td><td><span> <</span><span style="color:#bf616a;">script </span><span style="color:#d08770;">src</span><span>="</span><span style="color:#a3be8c;">https:</span><span style="color:#8fa1b3;">&#x</span><span style="color:#d08770;">2F;</span><span style="color:#8fa1b3;">&#x</span><span style="color:#d08770;">2F;</span><span style="color:#a3be8c;">gist.github.com</span><span style="color:#8fa1b3;">&#x</span><span style="color:#d08770;">2F;</span><span style="color:#a3be8c;">Keats</span><span style="color:#8fa1b3;">&#x</span><span style="color:#d08770;">2F;</span><span style="color:#a3be8c;">e5fb6aad409f28721c0ba14161644c57.js</span><span>"></</span><span style="color:#bf616a;">script</span><span>>
|
||||||
</span><tr><td>9</td><td><span></</span><span style="color:#bf616a;">div</span><span>>
|
</span></td></tr><tr><td>9</td><td><span></</span><span style="color:#bf616a;">div</span><span>>
|
||||||
</span><tr><td>10</td><td><span>
|
</span></td></tr><tr><td>10</td><td><span>
|
||||||
</span><tr><td>11</td><td><span><</span><span style="color:#bf616a;">span</span><span>>text 3</</span><span style="color:#bf616a;">span</span><span>>
|
</span></td></tr><tr><td>11</td><td><span><</span><span style="color:#bf616a;">span</span><span>>text 3</</span><span style="color:#bf616a;">span</span><span>>
|
||||||
</span></tr></tbody></table></code></pre>
|
</span></td></tr></tbody></table></code></pre>
|
||||||
"#
|
"#
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -248,24 +248,24 @@ A quote
|
|||||||
assert_eq!(
|
assert_eq!(
|
||||||
res.body,
|
res.body,
|
||||||
r#"<pre data-linenos data-lang="html" style="background-color:#2b303b;color:#c0c5ce;" class="language-html "><code class="language-html" data-lang="html"><table><tbody><tr><td>1</td><td><span><</span><span style="color:#bf616a;">a </span><span style="color:#d08770;">href</span><span>="</span><span style="color:#a3be8c;">javascript:void(0);</span><span>">{{ before(texts="1") }}</</span><span style="color:#bf616a;">a</span><span>>
|
r#"<pre data-linenos data-lang="html" style="background-color:#2b303b;color:#c0c5ce;" class="language-html "><code class="language-html" data-lang="html"><table><tbody><tr><td>1</td><td><span><</span><span style="color:#bf616a;">a </span><span style="color:#d08770;">href</span><span>="</span><span style="color:#a3be8c;">javascript:void(0);</span><span>">{{ before(texts="1") }}</</span><span style="color:#bf616a;">a</span><span>>
|
||||||
</span><tr><td>2</td><td><span>Normally people would not write something & like </span><span style="background-color:#bf616a;color:#2b303b;"><></span><span> this:
|
</span></td></tr><tr><td>2</td><td><span>Normally people would not write something & like </span><span style="background-color:#bf616a;color:#2b303b;"><></span><span> this:
|
||||||
</span><tr><td>3</td><td><span><</span><span style="color:#bf616a;">div </span><span style="color:#8fa1b3;">id</span><span>="</span><span style="color:#a3be8c;">custom-attr</span><span>">
|
</span></td></tr><tr><td>3</td><td><span><</span><span style="color:#bf616a;">div </span><span style="color:#8fa1b3;">id</span><span>="</span><span style="color:#a3be8c;">custom-attr</span><span>">
|
||||||
</span><tr><td>4</td><td><span>An inline <</span><span style="color:#bf616a;">div </span><span style="color:#d08770;">class</span><span>="</span><span style="color:#a3be8c;">youtube</span><span>">
|
</span></td></tr><tr><td>4</td><td><span>An inline <</span><span style="color:#bf616a;">div </span><span style="color:#d08770;">class</span><span>="</span><span style="color:#a3be8c;">youtube</span><span>">
|
||||||
</span><tr><td>5</td><td><span> <</span><span style="color:#bf616a;">iframe </span><span style="color:#d08770;">src</span><span>="</span><span style="color:#a3be8c;">https://www.youtube-nocookie.com/embed/dQw4w9WgXcQ?autoplay=1</span><span>" </span><span style="color:#d08770;">webkitallowfullscreen mozallowfullscreen allowfullscreen</span><span>></</span><span style="color:#bf616a;">iframe</span><span>>
|
</span></td></tr><tr><td>5</td><td><span> <</span><span style="color:#bf616a;">iframe </span><span style="color:#d08770;">src</span><span>="</span><span style="color:#a3be8c;">https://www.youtube-nocookie.com/embed/dQw4w9WgXcQ?autoplay=1</span><span>" </span><span style="color:#d08770;">webkitallowfullscreen mozallowfullscreen allowfullscreen</span><span>></</span><span style="color:#bf616a;">iframe</span><span>>
|
||||||
</span><tr><td>6</td><td><span></</span><span style="color:#bf616a;">div</span><span>>
|
</span></td></tr><tr><td>6</td><td><span></</span><span style="color:#bf616a;">div</span><span>>
|
||||||
</span><tr><td>7</td><td><span> shortcode
|
</span></td></tr><tr><td>7</td><td><span> shortcode
|
||||||
</span><tr><td>8</td><td><span></</span><span style="color:#bf616a;">div</span><span>>
|
</span></td></tr><tr><td>8</td><td><span></</span><span style="color:#bf616a;">div</span><span>>
|
||||||
</span><tr><td>9</td><td><span>Plain text in-between
|
</span></td></tr><tr><td>9</td><td><span>Plain text in-between
|
||||||
</span><tr><td>10</td><td><span>{% quote(author="Vincent") %}
|
</span></td></tr><tr><td>10</td><td><span>{% quote(author="Vincent") %}
|
||||||
</span><tr><td>11</td><td><span>A quote
|
</span></td></tr><tr><td>11</td><td><span>A quote
|
||||||
</span><tr><td>12</td><td><span>{% end %}
|
</span></td></tr><tr><td>12</td><td><span>{% end %}
|
||||||
</span><tr><td>13</td><td><span><</span><span style="color:#bf616a;">div </span><span style="color:#d08770;">class</span><span>="</span><span style="color:#a3be8c;">gist</span><span>">
|
</span></td></tr><tr><td>13</td><td><span><</span><span style="color:#bf616a;">div </span><span style="color:#d08770;">class</span><span>="</span><span style="color:#a3be8c;">gist</span><span>">
|
||||||
</span><tr><td>14</td><td><span> <</span><span style="color:#bf616a;">script </span><span style="color:#d08770;">src</span><span>="</span><span style="color:#a3be8c;">https:</span><span style="color:#8fa1b3;">&#x</span><span style="color:#d08770;">2F;</span><span style="color:#8fa1b3;">&#x</span><span style="color:#d08770;">2F;</span><span style="color:#a3be8c;">gist.github.com</span><span style="color:#8fa1b3;">&#x</span><span style="color:#d08770;">2F;</span><span style="color:#a3be8c;">Keats</span><span style="color:#8fa1b3;">&#x</span><span style="color:#d08770;">2F;</span><span style="color:#a3be8c;">e5fb6aad409f28721c0ba14161644c57.js</span><span>"></</span><span style="color:#bf616a;">script</span><span>>
|
</span></td></tr><tr><td>14</td><td><span> <</span><span style="color:#bf616a;">script </span><span style="color:#d08770;">src</span><span>="</span><span style="color:#a3be8c;">https:</span><span style="color:#8fa1b3;">&#x</span><span style="color:#d08770;">2F;</span><span style="color:#8fa1b3;">&#x</span><span style="color:#d08770;">2F;</span><span style="color:#a3be8c;">gist.github.com</span><span style="color:#8fa1b3;">&#x</span><span style="color:#d08770;">2F;</span><span style="color:#a3be8c;">Keats</span><span style="color:#8fa1b3;">&#x</span><span style="color:#d08770;">2F;</span><span style="color:#a3be8c;">e5fb6aad409f28721c0ba14161644c57.js</span><span>"></</span><span style="color:#bf616a;">script</span><span>>
|
||||||
</span><tr><td>15</td><td><span></</span><span style="color:#bf616a;">div</span><span>>
|
</span></td></tr><tr><td>15</td><td><span></</span><span style="color:#bf616a;">div</span><span>>
|
||||||
</span><tr><td>16</td><td><span>
|
</span></td></tr><tr><td>16</td><td><span>
|
||||||
</span><tr><td>17</td><td><span>{# A Tera comment, you should see it #}
|
</span></td></tr><tr><td>17</td><td><span>{# A Tera comment, you should see it #}
|
||||||
</span><tr><td>18</td><td><span style="color:#65737e;"><!-- end text goes here -->
|
</span></td></tr><tr><td>18</td><td><span style="color:#65737e;"><!-- end text goes here -->
|
||||||
</span></tr></tbody></table></code></pre>
|
</span></td></tr></tbody></table></code></pre>
|
||||||
"#
|
"#
|
||||||
);
|
);
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user