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š <tomas....-hR4I4Euo7CWBik42HM7KXg@public.gmane.org> 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', '<note>' .. content.. '</note>')
  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', '<note>')
local post = pandoc.RawBlock('html', '</note>')

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š <tomas....-hR4I4Euo7CWBik42HM7KXg@public.gmane.org> 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 `<div class='replace-me'>` tag with `<note>` tag in similar (highly simplified) HTML file:

```.{html}
<html>
<body>
<p> First line. </p>
<div class="replace-me another-class"> This should carry on to converted document. </div>
<p>End.</p>
</body>
</html>
```

I have tried to detect the `<div>` tag, use `walk_block` to get the `<div>` content and put it in `<note>` tag, I also found a code using `:walk` method. Lastly, I tried to convert `<div>` 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', '<note>' .. content.. '</note>')
  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...@googlegroups.com.
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...@googlegroups.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-/JYPxA39Uh5TLH3MbocFFw@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.