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....@integromat.com> 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-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@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.