The div content is an enhanced `pandoc.List` table with some useful methods: https://pandoc.org/lua-filters.html#module-pandoc.list The filter documentation notes where you will find List objects in the type descriptions. BTW you probably don't want to use the return value of pandoc.utils.stringify the way you did because it strips all formatting. If you just inject the HTML tags the way I showed formatting in the div content will be preserved. Den tis 11 jan. 2022 15:08Tomáš Kruliš skrev: > Oh, so the `div` content is a `table` in lua terms? That didn't occured to > me, even though it probably should ... I actually managed to replace it not > as a `RawInline`, but `RawBlock`, like so: > > ```.{lua} > if elem.t == 'Div' and elem.classes[1] == "replace-me" then > content = pandoc.utils.stringify(elem.content) > return pandoc.RawBlock('html', '' .. content.. '') > else > return elem > end > ``` > > But thank you for your solution, for me it was very educational! > Another thing that I struggle with is to wrap my head around `walk_block` > function. From the examples in the pandoc official page it is not much > clearer to me. I think I now understand that they are used to > iterate/filter over the contents of the block that is being walked over. > But if the block element contains only String elements (paragraph with > simple text), then also Str-filter functions are applied to it? > Maybe my confusion can be voiced like this: When should I use > `pandoc.walk_block` function to get what I want and cannot use something > else? Explained not only with code, but also with commentary ... > Dne pondělí 10. ledna 2022 v 19:46:37 UTC+1 uživatel BPJ napsal: > >> It is neither possible nor needed to convert the whole block to HTML >> within the filter; rather you should just inject the start and end tags: >> >> ``````lua >> -- Create these only once, for speed and resources saving! >> local pre = pandoc.RawBlock('html', '') >> local post = pandoc.RawBlock('html', '') >> >> function Div (div) >> -- The order of the classes shouldn't matter! >> if div.classes:includes('replace-me') then >> local content = div.content >> table.insert(content, 1, pre) >> table.insert(content, post) >> return content >> end >> return nil >> end >> `````` >> >> Den mån 10 jan. 2022 15:33Tomáš Kruliš skrev: >> >>> Hello, >>> >>> I would like to ask how you should, in general, detect and manipulate >>> with Pandoc `block` elements. Currently, I am trying to replace `
>> class='replace-me'>` tag with `` tag in similar (highly simplified) >>> HTML file: >>> >>> ```.{html} >>> >>> >>>

First line.

>>>
This should carry on to converted >>> document.
>>>

End.

>>> >>> >>> ``` >>> >>> I have tried to detect the `
` tag, use `walk_block` to get the >>> `
` content and put it in `` tag, I also found a code using >>> `:walk` method. Lastly, I tried to convert `
` content to simple string >>> and concatenate that in `RawInline` type: >>> >>> ```.{lua} >>> if elem.t == 'Div' and elem.classes[1] == "replace-me" then >>> content = pandoc.utils.stringify(elem.content) >>> return pandoc.RawInline('html', '' .. content.. '') >>> else >>> return elem >>> end >>> ``` >>> >>> But none of that is working. I would like to ask you, how to work in >>> general with `pandoc_walk` or `:walk` (are they the same?) and how to deal >>> with my specific situation? >>> Thank you very much for any help, I ope that afterwards I will be able >>> to help myself a little bit more :) >>> Regards Tomas >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "pandoc-discuss" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to pandoc-discus...-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/pandoc-discuss/590abdf0-6bc5-4f37-a978-a46ad5cff5a8n%40googlegroups.com >>> >>> . >>> >> -- > You received this message because you are subscribed to the Google Groups > "pandoc-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To view this discussion on the web visit > https://groups.google.com/d/msgid/pandoc-discuss/aea85ef4-af50-46e5-8e21-d677801cb971n%40googlegroups.com > > . > -- You received this message because you are subscribed to the Google Groups "pandoc-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/CADAJKhD6WVs3UxD0Dt0bYLA8mE4-A4n%3DQyyKrwkT%3DMYO%2BQNaVg%40mail.gmail.com.