public inbox archive for pandoc-discuss@googlegroups.com
 help / color / mirror / Atom feed
From: H <agents-FcZObrvlYduBUy7/sJONFg@public.gmane.org>
To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
Subject: Re: Wrapping sections of text with <div></div> in custom filter
Date: Tue, 6 Jun 2023 15:14:11 -0400	[thread overview]
Message-ID: <7878b22d-bf64-2d25-1136-d9f9cf5e135b@meddatainc.com> (raw)
In-Reply-To: <CAEe_xxhTjZJRuNZFtYMqh1eSNM9yobfgs_YTj2muxs1px0ygjg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

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

On 06/01/2023 04:34 AM, 'William Lupton' via pandoc-discuss wrote:
> 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 <mailto:agents@meddatainc.com>> 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> <mailto: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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org <mailto:pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org <mailto:pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@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 <https://groups.google.com/d/msgid/pandoc-discuss/CAEe_xxhTjZJRuNZFtYMqh1eSNM9yobfgs_YTj2muxs1px0ygjg%40mail.gmail.com?utm_medium=email&utm_source=footer>.

Thank you for your thoughtful response. I realize I have used the term 'filter' and 'writer' cavalierly. I have a "slightly" complicated layout I want to output from the writer and my thought right now is that I should try to add the <div> and </div> in the right places in a filter and then let the writer just output the resulting html.

I may have to traverse the AST several times in my filter to accomplish the result since multiple <div></div> need to be added at different levels to achieve the desired output.

I just downloaded your logging filter to aid in the development and am also working on formalizing the rules for adding <div></div>.


-- 
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/7878b22d-bf64-2d25-1136-d9f9cf5e135b%40meddatainc.com.

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

  parent reply	other threads:[~2023-06-06 19:14 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
     [not found]                                                 ` <CAEe_xxhTjZJRuNZFtYMqh1eSNM9yobfgs_YTj2muxs1px0ygjg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2023-06-06 19:14                                                   ` H [this message]
     [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=7878b22d-bf64-2d25-1136-d9f9cf5e135b@meddatainc.com \
    --to=agents-fczobrvlydubuy7/sjonfg@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).