From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.text.pandoc/32063 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: John MacFarlane Newsgroups: gmane.text.pandoc Subject: more fun with pandoc lua Date: Sat, 21 Jan 2023 11:05:41 -0800 Message-ID: Reply-To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\)) Content-Type: text/plain; charset="UTF-8" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="36688"; mail-complaints-to="usenet@ciao.gmane.io" To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org Original-X-From: pandoc-discuss+bncBDW7ZIEHTIIBBCHPWCPAMGQEHBGAEUA-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org Sat Jan 21 20:05:48 2023 Return-path: Envelope-to: gtp-pandoc-discuss@m.gmane-mx.org Original-Received: from mail-oa1-f61.google.com ([209.85.160.61]) by ciao.gmane.io with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pJJBT-0009J3-MX for gtp-pandoc-discuss@m.gmane-mx.org; Sat, 21 Jan 2023 20:05:47 +0100 Original-Received: by mail-oa1-f61.google.com with SMTP id 586e51a60fabf-15eeaed3f9fsf3995967fac.19 for ; Sat, 21 Jan 2023 11:05:47 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1674327946; cv=pass; d=google.com; s=arc-20160816; b=MoRBClvrjsixZEZJ+2z7YZul9Rv5rqXTuOAdJK/AzWtIH03L/ZBBOA+t/Om02yLUML 6/oz1hjvUfuv8vZy7CWyO/g9mQUpBUdhmF0pMXz8YptXlK6ZckX3ULxINQ9glUUSi9A7 NnSMwIIsZW5hjdIrFzxqjDgK4sI2fSjrZdcPtMU0dnaTxK7Edh3tOLxPEflKNMEaNchG ofWkn8yCBUnA4voRfo+rkIJgLznCR0VZWWXVJxWeXAmK0Eu/v4ogTU1T2LtuKNJx8VsN vfz1aNDzQKq37e3XPb3swJt5S4ALKD7/Cbk/T0A5cesqdhOLyIbTxJ2tIfF9H/2GhI9C Dp0g== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to:to:date:message-id:subject :mime-version:from:sender:dkim-signature:dkim-signature; bh=GzO2IINgPeCg4p/v+fVzPxv54ijXlE3hRBot0Poxa28=; b=NlfkNmBCmbUqV9rFRiHWci4sgn98NE1cv1a6GVwI6FGpcFsQ/sWdcVUqN9AKXKG9qg JuRvumgUYi3/RrAwAZm45SuQnlpTVe7Rvt2it++Adkp51BAxiLMUSW4gL9ICH8KRZinc hy6GBKWjEKYVVLx8QCFFs5v+FHcwPLfCUz1CI2ulgPlYSsCES6JPBlccl1qaNBjtby6R XkeIJMbG2EBzWnKw54zpVKosQxoCHXBTQCVIq4oVwlOr0INvvk9japQZLX7MpxC4uFLO s5r4B1oZUq1S3beIOWpiPfBfCGAzZh6Rdm9eVrCA92tglpGmxCGa0IrWhTd6UHKe78Ub cH1w== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="Af/xoi4l"; spf=pass (google.com: domain of fiddlosopher-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org designates 2607:f8b0:4864:20::1036 as permitted sender) smtp.mailfrom=fiddlosopher-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20210112; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:to:date :message-id:subject:mime-version:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=GzO2IINgPeCg4p/v+fVzPxv54ijXlE3hRBot0Poxa28=; b=HleglMmXsBKYzDvYnPhHmW7xNSh21RCLX5z4fZOiFGRvgp/mX3hKdgY9U8tilWoNqL aVNd7JyIQbwt6QV6xc2rimnJBCx+ArQeEzJz3lMOTKWNmpHCJArViL0fxO5gpxhAmJO4 1PJeQI6IHCsVfpULwaNELOZ2tfuoqMFJvdry1QVatcDdKgNTA6NqcT/8+Gxxrd8SMpxJ OU2XMuW7/j7zQYkCYDGDA8utHMq2h4zCt7wytiD1GG5CSgNLD3e/vAA/1EfAJ2iis9+l FbBEzfs3hHmFqj4TRrtLqwcJn+yJh1R+HF4uD3o3JqNy+kkpZ6okci0oK0e1R6tsOpfo q0ZA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:to:date :message-id:subject:mime-version:from:from:to:cc:subject:date :message-id:reply-to; bh=GzO2IINgPeCg4p/v+fVzPxv54ijXlE3hRBot0Poxa28=; b=jVM8OWiAWpCm629zlZVAZQbAUpKfZE2Vzpf0IBdgd3f33BBmkgJzCRj7wgkt3ptYxH mQGblvCrgTv1AaaUBG2xz+rqqTXXTPD6BjB5ltmjfmWVKo9r7KWStQyQ4F6+lljPKxI6 AUK1bQiGJODxWAMvM/H4UkI0bsaLLosOPRpKvI0j5aJA/vcxu1BNSslbMBl4+B1rtuz4 DaXH8+6tVatCfqWdTaFa/LSkT3/7kfbVSoCuwWVhIYc1GJX1xLEHygeQDIzGatqJXCoJ WOSbqkZmACsjladK2NAHxRD6TrdMBNMVlJkn9fKMQpABmEClRKZaEFlLXbbtOwWDngZ9 OheQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:to:date :message-id:subject:mime-version:from:x-gm-message-state:sender:from :to:cc:subject:date:message-id:reply-to; bh=GzO2IINgPeCg4p/v+fVzPxv54ijXlE3hRBot0Poxa28=; b=LA5/ud8V7jBz72f+/kamXukBwFSx26u3UqUH1IoIVo94cjjJ8AzKlVwY8TkfIJhYgh jqmqvWkq7Oe1xNrHkSJrWtFF60lBzMcGuXSmFYvgT7TbW9SN6AL1TdxyM1N94/Z7ZlvB 1lRSzKxBGqDatzxkE9uHUNnQPGZWwnQki1tqLy7uultpInmxI+P6UHhdV+1lQP+Q48Rt iuTYSb6qnfSqK5Tk+UYUOUOYR/RSi6Db6MPtG6GbgLQG1GU6OjSWcj3GbyvDKzknSUJF ahKOR1d0h5cWdv+s5fMqtGNCaJh50fyi+xFmq15yz38Ax53ttLBBNSGXkD+LDZiP+Gnu G Original-Sender: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org X-Gm-Message-State: AFqh2krbuVyeODdsKhwpdA82Y/nH4KHfRqVPzplvXD5z8fAGbG2xNW+Z npN99yD0uH0FGKK9ISzDIpk= X-Google-Smtp-Source: AMrXdXvLQ7BalhY+SarnhjoM005wRcyOdllCWw8Br9ssAILCl0lOZnwyK5iRFQ2chrt6pkVjq3w/Ew== X-Received: by 2002:a05:6830:1db1:b0:686:548f:918d with SMTP id z17-20020a0568301db100b00686548f918dmr985445oti.4.1674327946498; Sat, 21 Jan 2023 11:05:46 -0800 (PST) X-BeenThere: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org Original-Received: by 2002:a54:4f9b:0:b0:36b:9295:8fcc with SMTP id g27-20020a544f9b000000b0036b92958fccls2407792oiy.9.-pod-prod-gmail; Sat, 21 Jan 2023 11:05:44 -0800 (PST) X-Received: by 2002:a05:6808:19a5:b0:364:73f2:b639 with SMTP id bj37-20020a05680819a500b0036473f2b639mr11125153oib.54.1674327943985; Sat, 21 Jan 2023 11:05:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674327943; cv=none; d=google.com; s=arc-20160816; b=ahVr8tg25yArLtsq6S42gLeTeZXy0JxbhFwJifdH+UrimV588D4OgMqElwRVMTY/sx 7o6bTLYpPbnq4upo9JWmyU8pBA97qEI5eojwFciTNGCDJ61+cRlOtQSy1aCf2pQk982+ ZZn5jZbdRVMGkofBsjQ/4GnnUwA1uEDFrBSBXx9VIYdq4svD+v/EE/xlJ0z9Pk7qKVr+ vVP/ICvXOljcMzPuPd1aDugIRT9ggyOv72bYK2ocB8woGs1CmVnD2NqqPNWfDiBQGjgk aqScut/2hiI/rYjm0ttLAvHiU4QxCw+YUHo4RyidG51yEMKng+XNjm1KAu1BuvCEFX3U relQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=to:date:message-id:subject:mime-version:content-transfer-encoding :from:dkim-signature; bh=ddwSjuAfltquDeoXrlMTxqB/xA9Mo8ICzjc+aVeRnaA=; b=JeWK1i47s/U7ady61uOON/14lKONNhT+03BoRQSgjnetKzjmkoofBZVNa1soGMf/ee pOZEuxeQsipDrR78krtZKnVd9+wOUCFFayAhHpdXbG0KKykDCq0xLvXhwsP0UDiCX2LC iYGVF7X51jRGvI84xpXeQrLvteIBmqDkwi93bKjkR0aNTuhi7U3wuHzoHqDfxL1YKX5I i6knwulMdcOXdIzMuVZBjTR6QfkZ6rqJVcxfZKCxeIqLNV0jOyKiE6dqGDh9Lx6liLp8 kYfgjMrHyw3WohouMDG0+6ITtnWqREOsLIVUt94y9Z/0neItTs+d1e7enBLG/LFZ5tHX t59g== ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="Af/xoi4l"; spf=pass (google.com: domain of fiddlosopher-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org designates 2607:f8b0:4864:20::1036 as permitted sender) smtp.mailfrom=fiddlosopher-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Original-Received: from mail-pj1-x1036.google.com (mail-pj1-x1036.google.com. [2607:f8b0:4864:20::1036]) by gmr-mx.google.com with ESMTPS id 71-20020a9d064d000000b0067054a075b7si3685126otn.2.2023.01.21.11.05.43 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 21 Jan 2023 11:05:43 -0800 (PST) Received-SPF: pass (google.com: domain of fiddlosopher-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org designates 2607:f8b0:4864:20::1036 as permitted sender) client-ip=2607:f8b0:4864:20::1036; Original-Received: by mail-pj1-x1036.google.com with SMTP id bj3so8509925pjb.0 for ; Sat, 21 Jan 2023 11:05:43 -0800 (PST) X-Received: by 2002:a17:902:b095:b0:192:bdf8:1a5c with SMTP id p21-20020a170902b09500b00192bdf81a5cmr19432474plr.33.1674327943273; Sat, 21 Jan 2023 11:05:43 -0800 (PST) Original-Received: from smtpclient.apple ([2601:644:4780:3350:7414:c5b:a55e:f54b]) by smtp.gmail.com with ESMTPSA id y2-20020a17090264c200b001930b7e2c04sm25973067pli.287.2023.01.21.11.05.42 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 21 Jan 2023 11:05:42 -0800 (PST) X-Mailer: Apple Mail (2.3696.120.41.1.1) X-Original-Sender: fiddlosopher-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="Af/xoi4l"; spf=pass (google.com: domain of fiddlosopher-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org designates 2607:f8b0:4864:20::1036 as permitted sender) smtp.mailfrom=fiddlosopher-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Precedence: list Mailing-list: list pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org; contact pandoc-discuss+owners-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org List-ID: X-Google-Group-Id: 1007024079513 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , Xref: news.gmane.io gmane.text.pandoc:32063 Archived-At: -- This Lua script, when run using `pandoc lua`, will create an HTML -- file rosetta.html that compares how the same content is represented -- in all the text markup languages pandoc supports: local inp = [[ # Heading ## level 2 ### level 3 #### level 4 with attributes {.blue #foobar} - Unordered - list 1. ordered 2. list a) Lettered list with continuation paragraph > Block quote ``` {.lua} local formats = pandoc.writers for format,_ in formats do print(format) end ``` *emphasized text **with strong emphasis*** `verbatim text` and a [link with `verbatim`](http://example.com) ]] local doc = pandoc.read(inp, "markdown") local formats = pandoc.writers -- remove binary formats: formats.docx = nil formats.pptx = nil formats.odt = nil formats.epub2 = nil formats.epub3 = nil formats.epub = nil formats.chunkedhtml = nil formats.biblatex = nil formats.bibtex = nil formats.csljson = nil local blocks = {} -- Table of code languages to use for highlighting, when it differs -- from the format name: local langs = { icml = "xml", jira = "xml", fb2 = "xml", docbook = "xml", docbook4 = "xml", docbook5 = "xml", commonmark = "markdown", commonmark_x = "markdown", context = "latex", dzslides = "html5", slideous = "html", slidy = "html", man = "troff", ms = "troff", gfm = "markdown", markdown_mmd = "multimarkdown", markdown_github = "markdown", revealjs = "html", beamer = "latex", ipynb = "json", opendocument = "xml", native = "haskell", html5 = "html", html4 = "html", } local sorted_formats = {} for format,_ in pairs(formats) do table.insert(sorted_formats, format) end table.sort(sorted_formats) -- construct document part for each format for _,format in ipairs(sorted_formats) do table.insert(blocks, pandoc.Header(2, format)) local lang = langs[format] or format table.insert(blocks, pandoc.CodeBlock(pandoc.write(doc, format), {class = lang})) end local template = pandoc.template.compile(pandoc.template.default("html5")) local html = pandoc.write(pandoc.Pandoc(blocks, {title = "Markup Rosetta Stone"}), "html5", { template = template }) io.open("rosetta.html", "w"):write(html) print("Created rosetta.html")