downlit icon indicating copy to clipboard operation
downlit copied to clipboard

Fix: `downlit_html_*()` keeps all pre classes

Open etiennebacher opened this issue 1 year ago • 3 comments

Close #149, close #156 (and v2 of #155).

downlit_html() now keeps all pre classes, which allows for customization of code blocks in pkgdown using chunk options class.source and attr.source.

Current behavior (.my-class and .another-class are dropped):

library(downlit)

html <- xml2::read_xml("
<div>
  <div class='sourceCode'>
    <pre class='sourceCode r my-class'>
      <code class='sourceCode r'>
        <span>Hello</span>
      </code>
    </pre>
  </div>
  <div class='sourceCode'>
    <pre class='sourceCode r another-class'>
      <code class='sourceCode r'>
        <span>Hello</span>
      </code>
    </pre>
  </div>
</div>")
downlit_html_node(html)
html
#> {xml_document}
#> <div>
#> [1] <div class="sourceCode">\n  <pre class="downlit sourceCode r">\n<code cla ...
#> [2] <div class="sourceCode">\n  <pre class="downlit sourceCode r">\n<code cla ...

New behavior:

library(downlit)

html <- xml2::read_xml("
<div>
  <div class='sourceCode'>
    <pre class='sourceCode r my-class'>
      <code class='sourceCode r'>
        <span>Hello</span>
      </code>
    </pre>
  </div>
  <div class='sourceCode'>
    <pre class='sourceCode r another-class'>
      <code class='sourceCode r'>
        <span>Hello</span>
      </code>
    </pre>
  </div>
</div>")
downlit_html_node(html)
html
#> {xml_document}
#> <div>
#> [1] <div class="sourceCode">\n  <pre class="downlit sourceCode r my-class">\n ...
#> [2] <div class="sourceCode">\n  <pre class="downlit sourceCode r another-clas ...

etiennebacher avatar Sep 20 '22 15:09 etiennebacher

Test failures are unrelated to this PR.

etiennebacher avatar Sep 20 '22 15:09 etiennebacher