I have written a README for my filter (both included in the attached zip file) which should answer most questions about my approach. Den fre 13 jan. 2023 01:14Howard Borchew skrev: > > > On Thursday, January 12, 2023 at 9:36:04 AM UTC-8 BPJ wrote: > > > Den tors 12 jan. 2023 18:00Howard Borchew skrev: > Hello, > > There is an example lua filter in pandoc.org called: > "Replacing placeholders with their metadata value" > > This does exactly what I need but for one exception: > If I set a metadata value on the pandoc command line > with --metadata=KEY[:VALUE] > then the placeholder is not replaced with anything and not the command > line VALUE > using this example lua filter. > > Probably because if you set the metadata value on the command line it is > just a raw string, not a list of inlines as the filter and pandoc.Span > expect. > > > > Is there an easy fix for this? > > Set the variables in a metadata block in the document or in a metadata > file. > > > > The document is under revision control and I want to change placeholders > from the command line at the time of running pandoc. > > > I am pasting the example from https://pandoc.org/lua-filters.html below. > > Thanks, > Howard > ---- > local vars = {} > > function get_vars (meta) > for k, v in pairs(meta) do > if pandoc.utils.type(v) == 'Inlines' then > vars["%" .. k .. "%"] = {table.unpack(v)} > end > end > end > > It could be expanded to wrap a raw string value in a Str and an Inlines, > and to convert a Blocks value to an Inlines with > pandoc.utils.blocks_to_inlines. > > > I don't quite get your suggestion: I presume the list gets to get_vars > through the argument meta and meta is iterated over in key(k)/value(v) > pairs in the for-do loop. > Only when passing the value(v) type=="Inlines" check does a placeholder > %key% and value(v) get added to the vars table. > While iterating over pairs(meta) would the for-do loop encounter the > --metadata KEY[VALUE] items that were set by the command line switch? > Is it then simply a matter to pass that type check and add it to vars > (type is raw string keyword?). > > > > function replace (el) > if vars[el.text] then > return pandoc.Span(vars[el.text]) > else > return el > end > end > > return {{Meta = get_vars}, {Str = replace}} > > My take is to use a Code or CodeBlock with class .var and the variable > name as text. More to type but more robust. > > > If I can get the command line KEY[VALUE] table items into vars above, I > don't think this replace function would need to change. > > Can you show some examples what you have in mind? Code or CodeBlock? > > -- > 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/8db3a838-8431-4b75-aac1-94bc29fac675n%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/d1590311-ccb2-4e57-b518-be8c14c49ba8n%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/CADAJKhB50pgQNQ7yqeVCHC1JO9RovX-ARtHMTYKJM-H9XPfsNQ%40mail.gmail.com.