Deep-Symmetry / bytefield-svg

Node module that generates byte field diagrams in SVG format
Eclipse Public License 2.0
126 stars 20 forks source link

Apply requested substitutions to the original source #27

Closed JaredReisinger closed 2 years ago

JaredReisinger commented 2 years ago

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 19 was using attrs.subs as the "source" argument to $apply_subs(), rather than passing the original source. Using source here seems to fix things.

djencks commented 2 years ago

It looks to me as if I supplied you with an egregious bug and that no one has tried using subs before. Thanks Jared!!

brunchboy commented 2 years ago

Thanks so much for weighing in, @djencks, and for identifying and contributing this fix, @JaredReisinger!