public inbox archive for pandoc-discuss@googlegroups.com
 help / color / mirror / Atom feed
From: Claudio Di Vita <claudio.divita-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: pandoc-discuss <pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
Subject: Re: help with lua filter "Replacing placeholders with their metadata value"
Date: Fri, 13 Jan 2023 01:11:25 -0800 (PST)	[thread overview]
Message-ID: <1d02199c-86ad-4730-9458-419babd9fab3n@googlegroups.com> (raw)
In-Reply-To: <d1590311-ccb2-4e57-b518-be8c14c49ba8n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>


[-- Attachment #1.1: Type: text/plain, Size: 4307 bytes --]

May I suggest to use this 
filter: https://github.com/cdivita/pandoc-curly-switch ?

The following syntax is supported for defining variables placeholders:

   - ${...}, the curly brackets syntax
   - !...!, the exclamation marks syntax

Variable can be referenced using an object-like notation, using any of the 
supported syntax. The exclamation marks syntax is suggested for LaTeX 
blocks (if you use them).

From the tests I've made it works fine also with metadata specified through 
the command line.

Cheers,

Claudio

Il giorno venerdì 13 gennaio 2023 alle 01:13:41 UTC+1 hbor...-Re5JQEeQqe8@public.gmane.orgm ha 
scritto:

> On Thursday, January 12, 2023 at 9:36:04 AM UTC-8 BPJ wrote:
>
>
> Den tors 12 jan. 2023 18:00Howard Borchew <hbor...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 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.
>
> <https://pandoc.org/MANUAL.html#option--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 
> <https://groups.google.com/d/msgid/pandoc-discuss/8db3a838-8431-4b75-aac1-94bc29fac675n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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/1d02199c-86ad-4730-9458-419babd9fab3n%40googlegroups.com.

[-- Attachment #1.2: Type: text/html, Size: 7604 bytes --]

  parent reply	other threads:[~2023-01-13  9:11 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-12 16:59 Howard Borchew
     [not found] ` <8db3a838-8431-4b75-aac1-94bc29fac675n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2023-01-12 17:35   ` BPJ
     [not found]     ` <CADAJKhCJK59eix-A_-21UfnxnuDPi6r_jZV0RNSF01UuFzKcbA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2023-01-13  0:13       ` Howard Borchew
     [not found]         ` <d1590311-ccb2-4e57-b518-be8c14c49ba8n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2023-01-13  9:11           ` Claudio Di Vita [this message]
2023-01-14 21:35           ` BPJ

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1d02199c-86ad-4730-9458-419babd9fab3n@googlegroups.com \
    --to=claudio.divita-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).