From: "'William Lupton' via pandoc-discuss" <pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
Subject: Re: Wrapping sections of text with <div></div> in custom filter
Date: Thu, 1 Jun 2023 09:34:44 +0100 [thread overview]
Message-ID: <CAEe_xxhTjZJRuNZFtYMqh1eSNM9yobfgs_YTj2muxs1px0ygjg@mail.gmail.com> (raw)
In-Reply-To: <05ba5663-1578-d555-8539-d6a2bdff6743-FcZObrvlYduBUy7/sJONFg@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 5899 bytes --]
Am I correct in thinking that when you say "filter" here, you really mean
"writer"?
In filters, you can use the 'traverse' field to force top-down traversal.
See https://pandoc.org/lua-filters.html#traversal-order
In writers, you can choose to call doc:walk(), which will honour
'traverse'. See
https://pandoc.org/custom-writers.html#example-modified-markdown-writer
(and example below)
However, if you use pandoc.scaffolding.Writer (as I think you are?) then I
suspect that you can't control the traversal order (but I'm not sure that
it makes sense to do so, because, for example, surely you always want the
contents of a <div> to have been traversed before you add '<div>' and
'</div>'?).
With the custom writer shown below, and with an input file that consists of
the single line 'Text' (and using my logging module
<https://github.com/pandoc-ext/logging>), you get this with the default
'typewise' traversal:
(#) inline Str "Text"
(#) inlines Inlines[1] {[1] Str "Text"}
(#) block Para {content: Inlines[1] {[1] Str "Text"}}
(#) blocks Blocks[1] {[1] Para {content: Inlines[1] {[1] Str "Text"}}}
(#) meta Meta {}
(#) doc Pandoc {
blocks: Blocks[1] {
[1] Para {
content: Inlines[1] {
[1] Str "Text"
}
}
}
meta: Meta {}
}
...and this with 'topdown' traversal:
(#) doc Pandoc {
blocks: Blocks[1] {
[1] Para {
content: Inlines[1] {
[1] Str "Text"
}
}
}
meta: Meta {}
}
(#) meta Meta {}
(#) blocks Blocks[1] {[1] Para {content: Inlines[1] {[1] Str "Text"}}}
(#) block Para {content: Inlines[1] {[1] Str "Text"}}
(#) inlines Inlines[1] {[1] Str "Text"}
(#) inline Str "Text"
The writer:
local logging = require 'logging'
local function report(label, elem)
logging.temp(label, elem)
end
-- 'typewise' (default) or 'topdown'
local traverse = 'topdown'
function Writer (doc, opts)
local filter = {
traverse = traverse,
Inline = function(inline)
report('inline', inline)
end,
Inlines= function(inlines)
report('inlines', inlines)
end,
Block = function(block)
report('block', block)
end,
Blocks = function(blocks)
report('blocks', blocks)
end,
Meta = function(meta)
report('meta', meta)
end,
Pandoc = function(doc)
report('doc', doc)
end,
}
return pandoc.write(doc:walk(filter), 'html', opts)
end
On Tue, 30 May 2023 at 20:23, H <agents-FcZObrvlYduBUy7/sJONFg@public.gmane.org> wrote:
> On 05/30/2023 02:30 PM, H wrote:
>
> On 05/29/2023 12:31 AM, H wrote:
>
> On May 28, 2023 8:50:56 PM EDT, H <agents-FcZObrvlYduBUy7/sJONFg@public.gmane.org>
> <agents-FcZObrvlYduBUy7/sJONFg@public.gmane.org> wrote:
>>
>> On 05/26/2023 03:43 PM, H wrote:
>>
>> No CSS (I had mentioned that in a previous message), also no
>> modifications to the markdown file so the entire interpretation of layout,
>> adding style information etc. needs to be in my custom PDF writer. This
>> custom writer will - obviously - be specific for this single dedicated use
>> by myself.
>>
>> Any pointers (links, code fragments to look at etc.) as to how I should
>> traverse the tree to be able to output my custom PDF would be greatly
>> appreciated since this will be my first pandoc writer.
>>
>> I am making some progress working on my custom writer for my desired html
>> output layout. I am using the 3.0 syntax where the output function looks
>> like
>>
>> Writer.Pandoc = function(doc)
>> return Writer.Blocks(doc.blocks)
>> end
>>
>> At the start of my document I also have
>>
>> Writer = pandoc.scaffolding.Writer
>>
>> with customization added for inlines and blocks added.
>>
>> In the Writer.Pandoc function above, is there a way I can see exactly in
>> which order the document is evaluated? I am interested in exploring
>> traverse = 'topdown' vs. traverse = 'typewise' as I think the topdown
>> traversal will be required to add the necessary <div> and </div> in the
>> correct locations to my final document.
>>
>> Again, please bear in mind that I will do /all/ processing in this my
>> custom lua writer.
>>
>> Thanks.
>>
>
> Upon further reading, it looks like the traverse directive might only be
> applicable to filters when the AST is being processed
>
> Is this correct? If so, is there anyway I can view the traversal
> processing sequence in my filter when I am writing and debugging it?
>
> Hoping someone can shed some light on the 'traverse' directive and how I
> can debug my filter using different 'traverse' directives.
>
> Thanks.
>
> Upon further experimentation, it looks like outputting to 'native' format,
> ie the AST tree after running a filter will show me what the modified tree
> looks like.
>
> It would have been nice to have some version of 'verbose' to apply to a
> filter to see in which order elements are processed.
>
>
> --
> 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/05ba5663-1578-d555-8539-d6a2bdff6743%40meddatainc.com
> <https://groups.google.com/d/msgid/pandoc-discuss/05ba5663-1578-d555-8539-d6a2bdff6743%40meddatainc.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/CAEe_xxhTjZJRuNZFtYMqh1eSNM9yobfgs_YTj2muxs1px0ygjg%40mail.gmail.com.
[-- Attachment #2: Type: text/html, Size: 8985 bytes --]
next prev parent reply other threads:[~2023-06-01 8:34 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-24 20:51 H
[not found] ` <2fc450a6-5a16-316c-02c8-8ef055bccd11-FcZObrvlYduBUy7/sJONFg@public.gmane.org>
2023-05-24 23:20 ` H
[not found] ` <93e5b610-66a2-6ac7-1d53-8a04a8314249-FcZObrvlYduBUy7/sJONFg@public.gmane.org>
2023-05-25 10:42 ` Felix SOEDJEDE
[not found] ` <853c402b-d9ee-4c9d-8bae-15b20faf7194n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2023-05-25 19:36 ` H
[not found] ` <1F66BB1E-B5C8-4062-8202-D82C5CE9A3D0-FcZObrvlYduBUy7/sJONFg@public.gmane.org>
2023-05-25 20:38 ` 'William Lupton' via pandoc-discuss
[not found] ` <CAEe_xxgNr8O73TNGgV5y=gwiLAKB3WFuX5a49Vv_RJDtojVcSQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2023-05-26 0:31 ` H
[not found] ` <6d414734-e661-ae2d-68a1-4dfc9cb4f035-FcZObrvlYduBUy7/sJONFg@public.gmane.org>
2023-05-26 6:33 ` 'William Lupton' via pandoc-discuss
[not found] ` <CAEe_xxg9ExgK4WCNz6G=r=s4DSCs4CBPERcUV431yov2UmeO8w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2023-05-26 19:43 ` H
[not found] ` <cee5298a-37c9-6e17-6370-eecda5d9d6fb-FcZObrvlYduBUy7/sJONFg@public.gmane.org>
2023-05-26 21:01 ` 'William Lupton' via pandoc-discuss
2023-05-29 0:50 ` H
[not found] ` <4c58dad0-bd86-608e-2d68-74bd6f2f808b-FcZObrvlYduBUy7/sJONFg@public.gmane.org>
2023-05-29 4:31 ` H
[not found] ` <F41D20AD-EDDD-4AF4-A9AD-AAB8581086BF-FcZObrvlYduBUy7/sJONFg@public.gmane.org>
2023-05-30 18:30 ` H
[not found] ` <574fbf9f-c1b8-711a-f14a-3acd75cbf634-FcZObrvlYduBUy7/sJONFg@public.gmane.org>
2023-05-30 19:23 ` H
[not found] ` <05ba5663-1578-d555-8539-d6a2bdff6743-FcZObrvlYduBUy7/sJONFg@public.gmane.org>
2023-06-01 8:34 ` 'William Lupton' via pandoc-discuss [this message]
[not found] ` <CAEe_xxhTjZJRuNZFtYMqh1eSNM9yobfgs_YTj2muxs1px0ygjg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2023-06-06 19:14 ` H
[not found] ` <7878b22d-bf64-2d25-1136-d9f9cf5e135b-FcZObrvlYduBUy7/sJONFg@public.gmane.org>
2023-06-11 2:25 ` H
[not found] ` <992af9a4-285c-a20f-56de-347ea88f021f-FcZObrvlYduBUy7/sJONFg@public.gmane.org>
2023-06-11 13:51 ` BPJ
[not found] ` <CADAJKhDBqvOL469ZXigacDug2dMx=OiGWjteOM3fXqT-29BM5A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2023-06-11 15:54 ` H
[not found] ` <b189960a-3e0d-19b8-91e2-c16dc88cd595-FcZObrvlYduBUy7/sJONFg@public.gmane.org>
2023-06-12 21:09 ` 'William Lupton' via pandoc-discuss
[not found] ` <CAEe_xxjer3B9Qy8oGGNx_ARySSMD1mG8-AD6-EJQQXYnddFMYA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2023-06-12 21:18 ` H
[not found] ` <EAF5063B-4655-48B3-8961-AF664AE3C94F-FcZObrvlYduBUy7/sJONFg@public.gmane.org>
2023-06-13 8:28 ` 'William Lupton' via pandoc-discuss
[not found] ` <CAEe_xxjdOUK-tpNsw65u_v_gNr0nUkF5vfrQc0RQyLhJyjtHSA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2023-06-13 17:28 ` H
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=CAEe_xxhTjZJRuNZFtYMqh1eSNM9yobfgs_YTj2muxs1px0ygjg@mail.gmail.com \
--to=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).