public inbox archive for pandoc-discuss@googlegroups.com
 help / color / mirror / Atom feed
From: Qubyte <mark.s.everitt-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
Subject: Making a simple script to send coloured output to a terminal.
Date: Sun, 21 Oct 2012 02:15:43 -0700 (PDT)	[thread overview]
Message-ID: <c64868b9-ee1b-4b9d-bc30-dbe430d5d432@googlegroups.com> (raw)

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

Hi all,

Someone recently asked me if it was possible to pretty print markdown in a 
terminal, for example to preview git commit messages and such. I'm playing 
around with the idea as basically stripping some formatting (I don't need # 
or === but I want to keep bullets or numbers for lists) and injecting in 
colours, bold, underlines etc. So far I have:

import Text.Pandoc

colour :: Block -> Block
colour (Header n xs) = Para $ map modHeader xs
--colour (BulletList xs) = BulletList $ map modBullet xs
colour x = x

modHeader :: Inline -> Inline
modHeader (Str xs) = Str $ "\x1b[1m\x1b[32m" ++ xs ++ "\x1b[0m"
modHeader x = x

--modBullets :: Block -> Block
--modBullets (Plain xs) = Plain $ map modBullet xs

--modBullet :: Inline -> Inline
--modBullet (Str xs) = Str $ "\x1b[1m\x1b[32m" ++ xs ++ "\x1b[0m"

main :: IO ()
main = toJsonFilter $ colour

Which just makes all headers green (I'll add in cases for different depths 
later). I'm having trouble with bullet lists though. I'd like to mutate 
them either into a single paragraph with injected newlines and dashes for 
bullets (and characters for colour encoding) or modify the content of each 
point with inline colour encoding. To execute what I have so far, I compile 
as toTerminal and run files through pandoc like:

pandoc -t json something.markdown | ./toTerminal | pandoc -f json -t plain

And hints or tips would be very much appreciated! If I can get the bullet 
lists working, I'm pretty sure I can figure the rest out. :)

Thanks,

Mark

-- 
You received this message because you are subscribed to the Google Groups "pandoc-discuss" group.
To post to this group, send email to pandoc-discuss-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To view this discussion on the web visit https://groups.google.com/d/msg/pandoc-discuss/-/7NiJS5t6WnAJ.
For more options, visit https://groups.google.com/groups/opt_out.



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

             reply	other threads:[~2012-10-21  9:15 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-21  9:15 Qubyte [this message]
     [not found] ` <c64868b9-ee1b-4b9d-bc30-dbe430d5d432-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2012-10-21 15:18   ` John MacFarlane
     [not found]     ` <20121021151831.GB30752-9Rnp8PDaXcadBw3G0RLmbRFnWt+6NQIA@public.gmane.org>
2012-10-22 14:39       ` Qubyte

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=c64868b9-ee1b-4b9d-bc30-dbe430d5d432@googlegroups.com \
    --to=mark.s.everitt-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).