Thank you BPJ and Bastien for great examples and clarifications around the `walk_block` function and how to do the specific changes I was struggling with. In this specific case, I could omit the formatting, but at the same time, I didn't know that `pandoc.utils.stringify` does that. About the string protecting, it is a great idea, but I have to study a little bit more because I am getting lost there :) Thank you guys for your help! Dne středa 12. ledna 2022 v 10:46:13 UTC+1 uživatel BPJ napsal: > 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-discus...-/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/a56ac936-48ce-4cc8-9053-c28a9d66f6d1n%40googlegroups.com.