public inbox archive for pandoc-discuss@googlegroups.com
 help / color / mirror / Atom feed
* Pandoc 2.18 - Custom writer working example
@ 2022-06-01 23:01 Felix SOEDJEDE
       [not found] ` <8528d41a-d6dd-4ca7-b38a-13955a9d1eabn-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Felix SOEDJEDE @ 2022-06-01 23:01 UTC (permalink / raw)
  To: pandoc-discuss


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

Hello everyone,

In Pandoc 2.18, custom writers were added: 
https://pandoc.org/custom-writers.html#new-style

I tried to use it but it's not working and I don't know if it's an error or 
I'm using it the wrong way.

I have a lua filter
--
PANDOC_VERSION:must_be_at_least '2.18'
print(PANDOC_DOCUMENT)
function Writer(doc, opts)
print('We enter don\'t enter "Writer"')
return pandoc.write(doc, 'markdown', opts)
end

function Doc(body, meta, vars)
print('We enter don\'t enter "Doc"')
vars.date = vars.date or meta.data or os.date '%B %e, %Y'
return body, vars
end

function Pandoc(doc)
print('We enter "Pandoc"')
end

function Header(header)
print('We enter "Header"')
end
--
Command used "pandoc --standalone --verbose --lua-filter=sample.lua 
--output=output.md sample.md"

   - None of *Doc*, *Writer* is called.
   

   - "print(PANDOC_DOCUMENT)" returns "nil"
   

Some links
- https://github.com/jgm/pandoc/pull/7897 (The MR to see "Writer" was 
implemented)
- https://gist.github.com/tarleb/5a9c3fbfa47b0e6d3643efd8af2994b9 : exemple 
filter I tested but not working
- https://groups.google.com/g/pandoc-discuss/c/Ti4Qsehn1Z8/m/Btu_uE6IBwAJ: 
Question asked but another person before the fonctionnality was released. 
It does not contains an answer to my question

Question:
Does anyone have a minimal working example for "Doc" or "Writer" I could 
use?

Regards


-- 
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/8528d41a-d6dd-4ca7-b38a-13955a9d1eabn%40googlegroups.com.

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Pandoc 2.18 - Custom writer working example
       [not found] ` <8528d41a-d6dd-4ca7-b38a-13955a9d1eabn-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
@ 2022-06-02  5:27   ` Albert Krewinkel
       [not found]     ` <87fskn6345.fsf-9EawChwDxG8hFhg+JK9F0w@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Albert Krewinkel @ 2022-06-02  5:27 UTC (permalink / raw)
  To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw


Felix SOEDJEDE <soefelix-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> writes:

> In Pandoc 2.18, custom writers were added:
> https://pandoc.org/custom-writers.html#new-style
>
> I tried to use it but it's not working and I don't know if it's an
> error or I'm using it the wrong way.
>
> [...]
>
> Command used "pandoc --standalone --verbose --lua-filter=sample.lua
> --output=output.md sample.md"

Pandoc expects the custom writer to be given as the argument of
`-t`/`--to`/`-w`/`--write`.

    pandoc --standalone --verbose --to=sample.lua ...

> Does anyone have a minimal working example for "Doc" or "Writer" I
> could use?

Here's a custom Markdown writer. It's an experiment designed to show how
a new writer might be structured. It's a bit slow though.
https://gist.github.com/tarleb/5a9c3fbfa47b0e6d3643efd8af2994b9


-- 
Albert Krewinkel
GPG: 8eed e3e2 e8c5 6f18 81fe  e836 388d c0b2 1f63 1124


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Pandoc 2.18 - Custom writer working example
       [not found]     ` <87fskn6345.fsf-9EawChwDxG8hFhg+JK9F0w@public.gmane.org>
@ 2022-06-02  8:10       ` Felix SOEDJEDE
       [not found]         ` <cde6d369-8813-41ed-a1ea-253901014b46n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Felix SOEDJEDE @ 2022-06-02  8:10 UTC (permalink / raw)
  To: pandoc-discuss


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

@Albert

1/ Writer
Using *--to=sample.lua* works when *--standalone* is not present and .
Otherwise I have this error: *Could not find data file 
templates/default.sample.lua*

Using *--writer=sample.lua* does not work. 
Error: "Unknown option --writer."

I now know why using "--to" did not work.

2/ Accessing variables in lua filter
I would like to have access to "variables" in lua filter.
Currently I have access to "metadata" when I use "*function Pandoc(doc) ... 
end*"
In the doc: https://pandoc.org/custom-writers.html#a-custom-html-writer, I 
saw this "*function Doc(body, meta, vars) ... end*" but it's never called 
in my tests.
I prefer not to use "*function Writer*" for now if possible.
Do you have any tips or working examples for that one?

Thanks

Le jeudi 2 juin 2022 à 07:33:54 UTC+2, Albert Krewinkel a écrit :

>
> Felix SOEDJEDE <soef...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> writes:
>
> > In Pandoc 2.18, custom writers were added:
> > https://pandoc.org/custom-writers.html#new-style
> >
> > I tried to use it but it's not working and I don't know if it's an
> > error or I'm using it the wrong way.
> >
> > [...]
> >
> > Command used "pandoc --standalone --verbose --lua-filter=sample.lua
> > --output=output.md sample.md"
>
> Pandoc expects the custom writer to be given as the argument of
> `-t`/`--to`/`-w`/`--write`.
>
> pandoc --standalone --verbose --to=sample.lua ...
>
> > Does anyone have a minimal working example for "Doc" or "Writer" I
> > could use?
>
> Here's a custom Markdown writer. It's an experiment designed to show how
> a new writer might be structured. It's a bit slow though.
> https://gist.github.com/tarleb/5a9c3fbfa47b0e6d3643efd8af2994b9
>
>
> -- 
> Albert Krewinkel
> GPG: 8eed e3e2 e8c5 6f18 81fe e836 388d c0b2 1f63 1124
>

-- 
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/cde6d369-8813-41ed-a1ea-253901014b46n%40googlegroups.com.

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Pandoc 2.18 - Custom writer working example
       [not found]         ` <cde6d369-8813-41ed-a1ea-253901014b46n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
@ 2022-06-02  8:43           ` Albert Krewinkel
       [not found]             ` <87bkvb5tay.fsf-9EawChwDxG8hFhg+JK9F0w@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Albert Krewinkel @ 2022-06-02  8:43 UTC (permalink / raw)
  To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw

Hi Felix,

Felix SOEDJEDE <soefelix-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> writes:

> 1/ Writer
> Using --to=sample.lua works when --standalone is not present and .
> Otherwise I have this error: Could not find data file
>    templates/default.sample.lua

Ah, right. With `--standalone` pandoc is looking for a template that
matches the writer name. There isn't one of course. Just omit it.

> Using --writer=sample.lua does not work.
> Error: "Unknown option --writer."

Whoops, should have been `--write`. I'm cutting down on coffee, I guess
it shows. 😬

> 2/ Accessing variables in lua filter
> I would like to have access to "variables" in lua filter.

If you use `function Writer(doc, opts)`, then the variables are
available via `opts.variables`.

> I prefer not to use "function Writer" for now if possible.
> Do you have any tips or working examples for that one?

Do you mean an example of a classic custom writers? Pandoc has an
example built-in, it's available via

    pandoc --print-default-data-file=sample.lua

Classic writers are generally a bit easier (IMHO). I'd recommend new-
style writers if you either base the new writer on one that's already
included in pandoc, or if you want to make use of the `pandoc.layout`
module to get nicer looking output. Other than those cases, classic
writers are frequently the better choice.

Out of curiosity, what output format are planning to generate?

Cheers,
Albert

-- 
Albert Krewinkel
GPG: 8eed e3e2 e8c5 6f18 81fe  e836 388d c0b2 1f63 1124

-- 
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/87bkvb5tay.fsf%40zeitkraut.de.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Pandoc 2.18 - Custom writer working example
       [not found]             ` <87bkvb5tay.fsf-9EawChwDxG8hFhg+JK9F0w@public.gmane.org>
@ 2022-06-02 14:40               ` Felix SOEDJEDE
       [not found]                 ` <56920de7-922c-4491-86ee-c981beb37b78n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Felix SOEDJEDE @ 2022-06-02 14:40 UTC (permalink / raw)
  To: pandoc-discuss


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

Hi Albert,

> If you use `function Writer(doc, opts)`, then the variables are available 
via `opts.variables`. 
I will see if I can use it

> Do you mean an example of a classic custom writers? Pandoc has an example 
built-in, it's available via 
> pandoc --print-default-data-file=sample.lua 
In the output of this command, I have "function Doc(body, metadata, 
variables) ..." but I've not found how to use it.
My real need is that I want to be able to access variables in my lua 
filters.

> Out of curiosity, what output format are planning to generate? 
Nothing extra. It's just markdown but with some formatting on header, 
images, etc.
The markdown is used to keep documents contents in a readable while also 
keeping the styles which are relevant.
The markdown can then be converted to pdf (via Lualatex), epub, and maybe 
any other format in the future.

Thanks for your replies. I will take a step back and come back to it after 
few days.



Le jeudi 2 juin 2022 à 11:05:50 UTC+2, Albert Krewinkel a écrit :

> Hi Felix,
>
> Felix SOEDJEDE <soef...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> writes:
>
> > 1/ Writer
> > Using --to=sample.lua works when --standalone is not present and .
> > Otherwise I have this error: Could not find data file
> > templates/default.sample.lua
>
> Ah, right. With `--standalone` pandoc is looking for a template that
> matches the writer name. There isn't one of course. Just omit it.
>
> > Using --writer=sample.lua does not work.
> > Error: "Unknown option --writer."
>
> Whoops, should have been `--write`. I'm cutting down on coffee, I guess
> it shows. 😬
>
> > 2/ Accessing variables in lua filter
> > I would like to have access to "variables" in lua filter.
>
> If you use `function Writer(doc, opts)`, then the variables are
> available via `opts.variables`.
>
> > I prefer not to use "function Writer" for now if possible.
> > Do you have any tips or working examples for that one?
>
> Do you mean an example of a classic custom writers? Pandoc has an
> example built-in, it's available via
>
> pandoc --print-default-data-file=sample.lua
>
> Classic writers are generally a bit easier (IMHO). I'd recommend new-
> style writers if you either base the new writer on one that's already
> included in pandoc, or if you want to make use of the `pandoc.layout`
> module to get nicer looking output. Other than those cases, classic
> writers are frequently the better choice.
>
> Out of curiosity, what output format are planning to generate?
>
> Cheers,
> Albert
>
> -- 
> Albert Krewinkel
> GPG: 8eed e3e2 e8c5 6f18 81fe e836 388d c0b2 1f63 1124
>

-- 
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/56920de7-922c-4491-86ee-c981beb37b78n%40googlegroups.com.

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Pandoc 2.18 - Custom writer working example
       [not found]                 ` <56920de7-922c-4491-86ee-c981beb37b78n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
@ 2022-06-02 16:40                   ` Albert Krewinkel
       [not found]                     ` <87tu933tb0.fsf-9EawChwDxG8hFhg+JK9F0w@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Albert Krewinkel @ 2022-06-02 16:40 UTC (permalink / raw)
  To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw; +Cc: Felix SOEDJEDE


Felix SOEDJEDE <soefelix-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> writes:

> My real need is that I want to be able to access variables in my lua
> filters.

In that case there might be a simpler solution: The global
PANDOC_WRITER_OPTIONS became available in pandoc 2.17. With that you can
access variables in writers by indexing
`PANDOC_WRITER_OPTIONS.variables`.

To give a short example: if you call pandoc with

    pandoc --lua-filter=var-test.lua --variable foo=hello <<< ''

where `var-test.lua` contains

    print(PANDOC_WRITER_OPTIONS.variables.foo)

then you'll get `hello` printed to the terminal.

HTH,
Albert


-- 
Albert Krewinkel
GPG: 8eed e3e2 e8c5 6f18 81fe  e836 388d c0b2 1f63 1124


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Pandoc 2.18 - Custom writer working example
       [not found]                     ` <87tu933tb0.fsf-9EawChwDxG8hFhg+JK9F0w@public.gmane.org>
@ 2022-06-03  7:31                       ` Felix SOEDJEDE
  0 siblings, 0 replies; 7+ messages in thread
From: Felix SOEDJEDE @ 2022-06-03  7:31 UTC (permalink / raw)
  To: pandoc-discuss


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

Well that was easier than I thought.

I did not try that. My bad 🤦🏽‍♂️.
It's all good now

Have a nice day

Le jeudi 2 juin 2022 à 18:48:43 UTC+2, Albert Krewinkel a écrit :

>
> Felix SOEDJEDE <soef...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> writes:
>
> > My real need is that I want to be able to access variables in my lua
> > filters.
>
> In that case there might be a simpler solution: The global
> PANDOC_WRITER_OPTIONS became available in pandoc 2.17. With that you can
> access variables in writers by indexing
> `PANDOC_WRITER_OPTIONS.variables`.
>
> To give a short example: if you call pandoc with
>
> pandoc --lua-filter=var-test.lua --variable foo=hello <<< ''
>
> where `var-test.lua` contains
>
> print(PANDOC_WRITER_OPTIONS.variables.foo)
>
> then you'll get `hello` printed to the terminal.
>
> HTH,
> Albert
>
>
> -- 
> Albert Krewinkel
> GPG: 8eed e3e2 e8c5 6f18 81fe e836 388d c0b2 1f63 1124
>

-- 
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/35a61b60-d763-4d60-a545-cd5329f65883n%40googlegroups.com.

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-06-03  7:31 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-01 23:01 Pandoc 2.18 - Custom writer working example Felix SOEDJEDE
     [not found] ` <8528d41a-d6dd-4ca7-b38a-13955a9d1eabn-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2022-06-02  5:27   ` Albert Krewinkel
     [not found]     ` <87fskn6345.fsf-9EawChwDxG8hFhg+JK9F0w@public.gmane.org>
2022-06-02  8:10       ` Felix SOEDJEDE
     [not found]         ` <cde6d369-8813-41ed-a1ea-253901014b46n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2022-06-02  8:43           ` Albert Krewinkel
     [not found]             ` <87bkvb5tay.fsf-9EawChwDxG8hFhg+JK9F0w@public.gmane.org>
2022-06-02 14:40               ` Felix SOEDJEDE
     [not found]                 ` <56920de7-922c-4491-86ee-c981beb37b78n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2022-06-02 16:40                   ` Albert Krewinkel
     [not found]                     ` <87tu933tb0.fsf-9EawChwDxG8hFhg+JK9F0w@public.gmane.org>
2022-06-03  7:31                       ` Felix SOEDJEDE

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).