Deep-Symmetry / asciidoctor-bytefield

Asciidoctor.js extension to render byte field diagrams as SVG
Eclipse Public License 2.0
5 stars 1 forks source link

Apply substitutions to source #4

Closed JaredReisinger closed 2 years ago

JaredReisinger commented 2 years ago

(Note: I somehow got this fix on the wrong repo at first; see https://github.com/Deep-Symmetry/bytefield-svg/pull/27. Here is where I actually intended it—but they apparently both need it.)

I ran into this in a document with a bunch of bytefield displays, where I wanted/needed to reduce the duplication of the same (defattrs ...) over and over again. By using:

:bytefieldDefaults: (defattrs :plain {:font-family "inherit" :font-size 14})

[bytefield,subs=attributes]
----
{bytefieldDefaults}

(draw-column-headers)
(draw-box "foo")
(draw-column-bottom)
----

I expected to be able to inject some common defaults. Instead, I got a "Could not resolve symbol: normal [at line 1, column 1]" error.

Digging into the code, I found that the extension.js line 15 was using attrs.subs as the "source" argument to $apply_subs(), rather than passing the original source. Using source here seems to fix things.

brunchboy commented 2 years ago

Thanks again for finding and fixing this!