From: BPJ <melroch-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: pandoc-discuss <pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
Subject: Re: Wrapping sections of existing document in <div></div>
Date: Wed, 21 Jun 2023 17:36:48 +0200 [thread overview]
Message-ID: <CADAJKhBZGdihMMgb=2_9rT04RsobJyu+48HxtO5755ADPcnZBQ@mail.gmail.com> (raw)
In-Reply-To: <AC708553-331A-45D3-A618-EAA8BB7784A5-FcZObrvlYduBUy7/sJONFg@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 3927 bytes --]
1. You have two lists, the original/old one and the new one.
2. Push elements from the old list onto the new list until you get to the
first element which should go into the new nested div.
3. Create a third list and
push elements from the old list onto that list until you get to the last
element which should go into the div.
4. Create a div from the third
list.
5. Push the div onto the new list.
6. Either repeat steps 2–5 or resume pushing elements from the old
list onto the new list until you get to the last element.
``````lua
function Pandoc(doc)
local old = doc.blocks
local new = pandoc.Blocks({ })
local div = false
local i = 0
local elem = nil
while i < #old do
i = i + 1
elem = old[i]
if test_div_start_condition(elem) then
div = pandoc.Blocks({ elem })
elseif test_div_end_condition(elem) then
if div then
div[#div + 1] = elem
new[#new + 1] = pandoc.Div(div, { class = 'foo', bar = 'baz' })
div = nil
-- -- If this is the only div
-- while i < #old do
-- i = i + 1
-- new[#new + 1] = = old[i]
-- end
else
new[#new + 1] = elem
end
elseif div then
div[#div + 1] = elem
else
new[#new + 1] = elem
end
end
doc.blocks = new
return doc
end
``````
Den tis 20 juni 2023 02:16H <agents-FcZObrvlYduBUy7/sJONFg@public.gmane.org> skrev:
> On June 19, 2023 6:11:35 PM EDT, H <agents-FcZObrvlYduBUy7/sJONFg@public.gmane.org> wrote:
> >What is the "best" way of wrapping parts of an existing document in
> ><div></div> in a filter?
> >
> >Using insert.table(existingtable, pandoc.Div(existingtextblocks)) does
> >not work since the existing text blocks get duplicated in the output.
> >
> >I see two options but there might be others:
> >
> >- Surround existing text blocks with pandoc.RawInline(1, 'html,
> >'<div>') and pandoc.RawInLine('html', '</div>').
> >
> >- Create a new table and use insert.table(newtable,
> >pandoc.Div(existingtextblock)) and also insert the rest of the
> >document.
> >
> >Are there other options?
>
> Replying to my own question, it seems the most "elegant" way of
> accomplishing this requires this to be done be in two stages:
>
> - First, delete the blocks in question from the block list table, eg
> doc.blocks.
> - Second, insert them into the same table using pandoc.Div().
>
> Unfortunately it seems table.delete() does not accept a list of blocks,
> only one block at a time, pandoc.Div, on the other hand, accepts a table.
> Here is a code example when I was trying it out:
>
> local temp = {}
> for i = 3, 1, -1 do
> table.insert(temp, table.remove(doc.blocks, 5))
> end
>
> table.insert(doc.blocks, 2, pandoc.Div(temp))
>
> The above code removes blocks 5 through 7 from doc.blocks, then inserts
> them, in the same order but surrounded by <div></div>, in position 2.
>
> If there is a better way of accomplishing this, I would appreciate hearing
> it.
>
> --
> 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/AC708553-331A-45D3-A618-EAA8BB7784A5%40meddatainc.com
> .
>
--
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/CADAJKhBZGdihMMgb%3D2_9rT04RsobJyu%2B48HxtO5755ADPcnZBQ%40mail.gmail.com.
[-- Attachment #2: Type: text/html, Size: 6071 bytes --]
next prev parent reply other threads:[~2023-06-21 15:36 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-19 22:11 H
[not found] ` <e3258495-d762-2f54-cff3-a2607261bcf7-FcZObrvlYduBUy7/sJONFg@public.gmane.org>
2023-06-20 0:14 ` H
[not found] ` <AC708553-331A-45D3-A618-EAA8BB7784A5-FcZObrvlYduBUy7/sJONFg@public.gmane.org>
2023-06-20 10:37 ` mf
[not found] ` <e42adc8d-f75c-4b91-7777-cc162e157c64-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2023-06-21 0:21 ` H
2023-06-21 15:36 ` BPJ [this message]
[not found] ` <CADAJKhBZGdihMMgb=2_9rT04RsobJyu+48HxtO5755ADPcnZBQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2023-06-21 22:58 ` 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='CADAJKhBZGdihMMgb=2_9rT04RsobJyu+48HxtO5755ADPcnZBQ@mail.gmail.com' \
--to=melroch-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).