prettyprint.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Wed, 19 Dec 2018 14:07:30 +0200
changeset 2307 08aa10b9c7ff
parent 2285 41b2a3652b35
permissions -rw-r--r--
Add timestamp to Vagrant log.

.. -*- coding: utf-8; -*-

===========================
 Pretty print source code.
===========================
.. contents::
   :local:

About pretty printing.
======================

Code formatter, beautifier, pretty printer.

http://en.wikipedia.org/wiki/Pretty-printer
  Wiki article on pretty printing.

json
====

With ``jq`` (available in Debian/Cygwin)::

  $ jq  $FILE
  $ curl -s http://.../... | jq

By default ``jq`` produce colorized output in terminal!

With Python 2.6+::

  $ python -m simplejson.tool  $FILE
  $ python -m json.tool  $FILE

In terminal you can add color support with ``pygmentize``::

  $ curl -s http://.../... | python -m simplejson.tool | pygmentize -l json

xml
===

With tidy::

  $ tidy -xml -i -utf8 -o out.xml in.xml

or in Emacs::

  C-x h C-x <RET> c utf-8 <RET> C-u M-| tidy -q -xml -i -utf8 -

With xmllint::

  $ xmllint --format file.xml

Pretty print XMLs in place::

  for f in *.xml; do xmllint -o $f --format $f; done

In Emacs::

  : C-x h C-u M-| xmllint --format - <RET>

With Emacs and nxml you need introduce line-breaks and then::

  C-x h C-M-\

http://tidy.sourceforge.net
  Home page.
http://www.emacswiki.org/cgi-bin/wiki/tidy.el
  Emacs bindings.
http://xmlindent.sourceforge.net/
  xmlindent home page.

c/c++/java/c#.
==============

Artistic Style, astyle.
-----------------------

A Free, Fast and Small Automatic Formatter for C, C++, C#, and Java Source Code.

There are exist package for Cygwin, Debian.

http://astyle.sourceforge.net/
  home page

Uncrustify.
-----------

Source Code Beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA.

Exist package for Windows (binary from home page), Debian.

http://uncrustify.sourceforge.net/
  home page

jpplib.
-------

Pretty Printer Library.

http://jpplib.sourceforge.net/
  Home page.

Perl.
=====

http://perltidy.sourceforge.net/
  Home page.