Ihor Radchenko <yanta...@posteo.net> writes:

> David Masterson <dsmaster...@icloud.com> writes:
>
>> Interesting. My elisp is not strong, so a few questions:
>>
>> 1. Are you saying attr_all does not exist in Org and this code is
>>    creating it?
>
> Anything in the form of #+attr_<foo> is treated by Org mode as
> affiliated keyword. This keyword is stored alongside the following
> paragraph/drawer/block/etc in the syntax tree passed to the exporter.
> Export backend can then access it as needed. By convention, the backends
> make use of #+attr_<backend name> keywords (#+attr_html, #+attr_latex,
> etc) and ignore other. But nothing is technically stopping you from
> examining values of arbitrary #+attr_<foo> keywords during
> export. That's what I did in this code.

Ah! Kind of what I thought, but this is more precise explanation than I
could come up with.

>> 2. I assume 'backends' is a list I must create, correct?
>
> That's simply parsing #+attr_all: :export ... value.

Oh! I'm going to have to walk that pcase more carefully.

>> 3. What does the last argument ('t') to org-element-map do?
>> 4. Doesn't org-element-map return data, so isn't the last data
>>    unnecessary?
>
> The filter should return the modified syntax tree, while
> `org-element-map' returns a flattened list. So, we cannot use its return
> value. Instead, `org-element-extract' calls modify the tree by side
> effect and the whole filter later returns the modified tree (the last
> line in the function).

Makes sense.

Thanks for the explanation.

-- 
David Masterson

Reply via email to