public inbox archive for pandoc-discuss@googlegroups.com
 help / color / mirror / Atom feed
From: "Clément Aubert" <aubert.clement-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
Subject: Re: Passing multiple options to lua-filter from CLI
Date: Fri, 20 Aug 2021 14:19:37 -0400	[thread overview]
Message-ID: <CAPGHSexHuj0T1n+-rOFjnVe5ZLw5Y_iqQEsn1yjECZSdy3e9QQ@mail.gmail.com> (raw)
In-Reply-To: <CAEe_xxjF_GT3XXobnhGizje_U6VDcODV0ubGR0dDN=Dj_U2B3A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 13506 bytes --]

I'm sorry, the issue is on my end.
It works perfectly on your small example, but not on my bigger document
that involves multiple other options, make file and the like.

I'll investigate, but you definitely answered my question, thanks a lot!
Clément.

Le ven. 20 août 2021 à 13:21, William Lupton <wlupton@broadband-forum.org>
a écrit :

> You can't use my utils because I didn't supply it! I suggested using
> inspect (https://github.com/kikito/inspect.lua) to get something similar.
> Sorry... I was just using my utils to illustrate the AST.
>
> Anyway, please can you run this in your local environment and report what
> you see? If you don't see the same as me then I don't know what to suggest!
>
> Filter (this has changed a little bit but not substantively):
>
> *% *cat default-code-class.lua
>
> local use_utils = false
>
> local utils = nil
>
>
> if use_utils then
>
>     utils = require 'utils'
>
> end
>
>
> local default_code_classes = {}
>
>
> local function get_default_code_class(meta)
>
>   if utils then
>
>       utils.temp('meta', meta)
>
>   end
>
>   if meta['default-code-class'] then
>
>       default_code_classes =
>
>           {pandoc.utils.stringify(meta['default-code-class'])}
>
>   end
>
> end
>
>
> local function add_default_code_class(el)
>
>     if utils then
>
>         utils.temp(el)
>
>     end
>
>     if #(el.classes) == 0 then
>
>         el.classes = default_code_classes
>
>         return el
>
>     end
>
> end
>
>
> return {{Meta=get_default_code_class},
>
>         {Code=add_default_code_class, CodeBlock=add_default_code_class}}
>
> Markdown:
>
> *% *cat code.md
>
> This is `inline code`.
>
>
> ```
>
> This is a code block.
>
> ```
>
> Invocation:
>
> *% *pandoc -L default-code-class.lua code.md -M default-code-class="c
> numberLines"
>
> <p>This is <code class="c numberLines">inline code</code>.</p>
>
> <pre class="c numberLines"><code>This is a code block.</code></pre>
>
> On Fri, 20 Aug 2021 at 18:03, Clément Aubert <aubert.clement@gmail.com>
> wrote:
>
>> Thanks!
>>
>> pandoc -v
>> pandoc 2.14.1
>> Compiled with pandoc-types 1.22, texmath 0.12.3, skylighting 0.11,
>> citeproc 0.4.1, ipynb 0.1.0.1
>> User data directory: /home/caubert/.local/share/pandoc
>>
>> with the first line (about utils), I now get
>>
>> Error running filter templates/filters/default-code-class.lua:
>> templates/filters/default-code-class.lua:1: module 'utils' not found:
>>         utilsis not one of pandoc's default packages
>>         no field package.preload['utils']
>>         no file '/usr/local/share/lua/5.3/utils.lua'
>>         no file '/usr/local/share/lua/5.3/utils/init.lua'
>>         no file '/usr/local/lib/lua/5.3/utils.lua'
>>         no file '/usr/local/lib/lua/5.3/utils/init.lua'
>>         no file './utils.lua'
>>         no file './utils/init.lua'
>>         no file '/usr/local/lib/lua/5.3/utils.so'
>>         no file '/usr/local/lib/lua/5.3/loadall.so'
>>         no file './utils.so'
>> stack traceback:
>>         [C]: in function 'require'
>>         templates/filters/default-code-class.lua:1: in main chunk
>> make: *** [Makefile:281: build/labs/If/index.html] Error 83
>>
>> without it, I get
>>
>> Error running filter templates/filters/default-code-class.lua:
>> templates/filters/default-code-class.lua:7: attempt to index a nil value
>> (global 'utils')
>> stack traceback:
>>         templates/filters/default-code-class.lua:7: in function
>> 'get_default_code_class'
>> make: *** [Makefile:281: build/labs/If/index.html] Error 83
>>
>>
>>
>>
>>
>> Le ven. 20 août 2021 à 12:26, William Lupton <wlupton@broadband-forum.org>
>> a écrit :
>>
>>> Inline...
>>>
>>> On Fri, 20 Aug 2021 at 17:06, Clément Aubert <aubert.clement@gmail.com>
>>> wrote:
>>>
>>>> Thanks a lot for looking into it!
>>>> It does not seem to produce the desired effect on my end.
>>>>
>>>> Could you explain how changing
>>>> return {{Meta = get_default_code_class},
>>>>         {Code = add_default_code_class},
>>>>         {CodeBlock = add_default_code_class}}
>>>> into
>>>> return {{Meta=get_default_code_class},
>>>> {CodeBlock=add_default_code_class}}
>>>> (as far as I can tell, this is the only modification) is supposed to
>>>> achieve the desired effect?
>>>>
>>>
>>> Ah, well I don't think that you included this in your original message,
>>> so I thought that was the problem :).
>>>
>>> return {{Meta = get_default_code_class},
>>>         {Code = add_default_code_class},
>>>         {CodeBlock = add_default_code_class}}
>>>
>>> You are correct: the only difference is that you have Code. You could
>>> combine Code and CodeBlock into a single pass, as in:
>>>
>>> return {{Meta=get_default_code_class},
>>>         {Code=add_default_code_class, CodeBlock=add_default_code_class}}
>>>
>>> But it _does_ work for me! Maybe add some debug output? Here I'm using
>>> my own inspect-like function but the standard inspect would probably be
>>> similar.
>>>
>>> Pandoc version? I'm using 2.14.1.
>>>
>>> *% *cat default-code-class.lua
>>>
>>> utils = require 'utils'
>>>
>>>
>>> local default_code_classes = {}
>>>
>>>
>>> function get_default_code_class(meta)
>>>
>>>   utils.temp('meta', meta)
>>>
>>>   if meta['default-code-class'] then
>>>
>>>     default_code_classes =
>>> {pandoc.utils.stringify(meta['default-code-class'])}
>>>
>>>   end
>>>
>>> end
>>>
>>>
>>> function add_default_code_class(el)
>>>
>>>   utils.temp(el.tag, el)
>>>
>>>   if #(el.classes) == 0 then
>>>
>>>     el.classes = default_code_classes
>>>
>>>     return el
>>>
>>>   end
>>>
>>> end
>>>
>>>
>>> return {{Meta=get_default_code_class},
>>>
>>>         {Code=add_default_code_class, CodeBlock=add_default_code_class}}
>>>
>>>
>>> *% *LUA_PATH=../?.lua pandoc -L default-code-class.lua code.md -M
>>> default-code-class="c numberLines"
>>>
>>> (#) meta {default-code-class: "c numberLines"}
>>>
>>> (#) Code Code {
>>>
>>>   attr: Attr {
>>>
>>>     attributes: {}
>>>
>>>     classes: {}
>>>
>>>     identifier: ""
>>>
>>>   }
>>>
>>>   text: "inline code"
>>>
>>> }
>>>
>>> (#) CodeBlock CodeBlock {
>>>
>>>   attr: Attr {
>>>
>>>     attributes: {}
>>>
>>>     classes: {}
>>>
>>>     identifier: ""
>>>
>>>   }
>>>
>>>   text: "This is a code block."
>>>
>>> }
>>>
>>> <p>This is <code class="c numberLines">inline code</code>.</p>
>>>
>>> <pre class="c numberLines"><code>This is a code block.</code></pre>
>>>
>>> Thanks!
>>>>
>>>> Le ven. 20 août 2021 à 11:57, William Lupton <
>>>> wlupton-QSt+ys/nuMyEUIsrzH9SikB+6BGkLq7r@public.gmane.org> a écrit :
>>>>
>>>>> I think you need a two-pass filter, one to pick up the metadata and
>>>>> the other to use it (this is because Meta is called nearly last).
>>>>>
>>>>> This works (I've re-ordered your functions and declared a local
>>>>> variable, but this probably wasn't necessary).
>>>>>
>>>>> *% *cat default-code-class.lua
>>>>>
>>>>> local default_code_classes = {}
>>>>>
>>>>>
>>>>> function get_default_code_class(meta)
>>>>>
>>>>>   if meta['default-code-class'] then
>>>>>
>>>>>     default_code_classes =
>>>>> {pandoc.utils.stringify(meta['default-code-class'])}
>>>>>
>>>>>   end
>>>>>
>>>>> end
>>>>>
>>>>>
>>>>> function add_default_code_class(el)
>>>>>
>>>>>   if #(el.classes) == 0 then
>>>>>
>>>>>     el.classes = default_code_classes
>>>>>
>>>>>     return el
>>>>>
>>>>>   end
>>>>>
>>>>> end
>>>>>
>>>>>
>>>>> return {{Meta=get_default_code_class},
>>>>> {CodeBlock=add_default_code_class}}
>>>>>
>>>>>
>>>>> *% *pandoc -L default-code-class.lua code.md -M default-code-class="c
>>>>> numberLines"
>>>>>
>>>>> <pre class="c numberLines"><code></code></pre>
>>>>>
>>>>> On Fri, 20 Aug 2021 at 16:29, Clément Aubert <aubert.clement@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> This question relates to
>>>>>> https://github.com/jgm/pandoc/issues/2104#issuecomment-595983954
>>>>>> There is a lua filter containing
>>>>>>
>>>>>> ``` lua
>>>>>> function add_default_code_class(el)
>>>>>>   if #(el.classes) == 0 then
>>>>>>     el.classes = default_code_classes
>>>>>>     return el
>>>>>>   end
>>>>>> end
>>>>>>
>>>>>> function get_default_code_class(meta)
>>>>>>   if meta['default-code-class'] then
>>>>>>     default_code_classes =
>>>>>> {pandoc.utils.stringify(meta['default-code-class'])}
>>>>>>   end
>>>>>> end
>>>>>> ```
>>>>>>
>>>>>> and I'm trying to tweak it so that two classes can be passed from the
>>>>>> command-line, eg. using
>>>>>>
>>>>>> --lua-filter default-code-class.lua -M default-code-class=c,
>>>>>> numberLines
>>>>>>
>>>>>> but can't find a way.
>>>>>>
>>>>>> Thanks!
>>>>>> Clément.
>>>>>>
>>>>>> --
>>>>>> 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/c025fcc7-ff39-4993-97f0-3dc8a7107724n%40googlegroups.com
>>>>>> <https://groups.google.com/d/msgid/pandoc-discuss/c025fcc7-ff39-4993-97f0-3dc8a7107724n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to a topic in the
>>>>> Google Groups "pandoc-discuss" group.
>>>>> To unsubscribe from this topic, visit
>>>>> https://groups.google.com/d/topic/pandoc-discuss/NrRuAcm1otQ/unsubscribe
>>>>> .
>>>>> To unsubscribe from this group and all its topics, 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/CAEe_xxgqyK6%2BT3kmb7sNUckEJrS81cwm05iCvauKOA0Z3doRcg%40mail.gmail.com
>>>>> <https://groups.google.com/d/msgid/pandoc-discuss/CAEe_xxgqyK6%2BT3kmb7sNUckEJrS81cwm05iCvauKOA0Z3doRcg%40mail.gmail.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/CAPGHSezmvUZSEApp0fGCezjUNcqSJJCMBaLGTaPUc86tSoUS0A%40mail.gmail.com
>>>> <https://groups.google.com/d/msgid/pandoc-discuss/CAPGHSezmvUZSEApp0fGCezjUNcqSJJCMBaLGTaPUc86tSoUS0A%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> --
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "pandoc-discuss" group.
>>> To unsubscribe from this topic, visit
>>> https://groups.google.com/d/topic/pandoc-discuss/NrRuAcm1otQ/unsubscribe
>>> .
>>> To unsubscribe from this group and all its topics, 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/CAEe_xxgDzL%2BQjar4bGfUndO7Pq-RimWPmN5tzYSV3B6BUh0Nrg%40mail.gmail.com
>>> <https://groups.google.com/d/msgid/pandoc-discuss/CAEe_xxgDzL%2BQjar4bGfUndO7Pq-RimWPmN5tzYSV3B6BUh0Nrg%40mail.gmail.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/CAPGHSewt%3DnK73AHRJ4C6yMs_rdRkcXAiJXeY0MEYo1pAxX4ugQ%40mail.gmail.com
>> <https://groups.google.com/d/msgid/pandoc-discuss/CAPGHSewt%3DnK73AHRJ4C6yMs_rdRkcXAiJXeY0MEYo1pAxX4ugQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "pandoc-discuss" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/pandoc-discuss/NrRuAcm1otQ/unsubscribe.
> To unsubscribe from this group and all its topics, 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/CAEe_xxjF_GT3XXobnhGizje_U6VDcODV0ubGR0dDN%3DDj_U2B3A%40mail.gmail.com
> <https://groups.google.com/d/msgid/pandoc-discuss/CAEe_xxjF_GT3XXobnhGizje_U6VDcODV0ubGR0dDN%3DDj_U2B3A%40mail.gmail.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/CAPGHSexHuj0T1n%2B-rOFjnVe5ZLw5Y_iqQEsn1yjECZSdy3e9QQ%40mail.gmail.com.

[-- Attachment #2: Type: text/html, Size: 47918 bytes --]

      parent reply	other threads:[~2021-08-20 18:19 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-20 15:29 Clément Aubert
     [not found] ` <c025fcc7-ff39-4993-97f0-3dc8a7107724n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2021-08-20 15:57   ` William Lupton
     [not found]     ` <CAEe_xxgqyK6+T3kmb7sNUckEJrS81cwm05iCvauKOA0Z3doRcg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2021-08-20 16:06       ` Clément Aubert
     [not found]         ` <CAPGHSezmvUZSEApp0fGCezjUNcqSJJCMBaLGTaPUc86tSoUS0A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2021-08-20 16:26           ` William Lupton
     [not found]             ` <CAEe_xxgDzL+Qjar4bGfUndO7Pq-RimWPmN5tzYSV3B6BUh0Nrg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2021-08-20 17:03               ` Clément Aubert
     [not found]                 ` <CAPGHSewt=nK73AHRJ4C6yMs_rdRkcXAiJXeY0MEYo1pAxX4ugQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2021-08-20 17:21                   ` William Lupton
     [not found]                     ` <CAEe_xxjF_GT3XXobnhGizje_U6VDcODV0ubGR0dDN=Dj_U2B3A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2021-08-20 18:19                       ` Clément Aubert [this message]

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=CAPGHSexHuj0T1n+-rOFjnVe5ZLw5Y_iqQEsn1yjECZSdy3e9QQ@mail.gmail.com \
    --to=aubert.clement-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).