Why not use the clone method to get a copy? That said I like that walk modifies a copy. The only builtin Lua function which alters its argument in place I can think of OTTOMH is table.sort, which is a gotcha because strings are immutable so I always forget that table.sort modifies in place. Den sön 12 juni 2022 13:18Bastien DUMONT skrev: > Hi all, > > I just discovered by chance that the method walk returns a deep copy of > the passed object, leaving the original object untouched. See the following > test case: > > ```deep-copy.lua > local orig = pandoc.Emph({ pandoc.Str('one'), pandoc.Space(), > pandoc.Str('two') }) > local copy = orig:walk({}) > table.insert(copy.content, pandoc.Space()) > table.insert(copy.content, pandoc.Str('three')) > assert(#orig.content == 3) > assert(#copy.content == 5) > ``` > `pandoc -L deep-copy.lua <<< ''` should return nothing (i.e. no error). > > However, in the documentation, it is only stated that the “Result” is the > “filtered block/inline element”: from this indication alone, it seems not > obvious to me whether the passed object is changed (as it is customary with > functions operating on Lua tables or userdata) or the method returns a new > object. > > To be clear, I am very happy with the current behaviour, for it gives a > very simple means to get several deep copies of an objet and to manipulate > them separately without having to regenerate the original object (e.g. via > rather expensive calls to `pandoc.read()`). Nevertheless, since it is not > really documented, can it be considered to be deliberate and stable? If > this is the case, could it be possible to make explicit in the > documentation, under the header “Result”, that the original block or inline > element is left unchanged? > > -- > 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/YqXK0Gyv%2B18RwQd1%40localhost > . > -- 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/CADAJKhA9JY8Xm0X6SFe_2E8DBCwcdtSctuMgKWn2EoYC4gQyCQ%40mail.gmail.com.