/Crystal 0.31

class PrettyPrint


This class implements a pretty printing algorithm. It finds line breaks and nice indentations for grouped structure.


Defined in:



Class Method Summary

Instance Method Summary

Constructor Detail

def self.new(output : IO, maxwidth = 79, newline = "\n", indent = 0)Source

Creates a new pretty printer that will write to the given output and be capped at maxwidth.

Class Method Detail

def self.format(obj, io : IO, width : Int32, newline = "\n", indent = 0)Source

Pretty prints obj into io with the given width as a limit and starting with the given indentation.

def self.format(io : IO, width : Int32, newline = "\n", indent = 0, &block)Source

Creates a pretty printer and yields it to the block, appending any output to the given io.

Instance Method Detail

def breakable(sep = " ")Source

Appends an element that can turn into a newline if necessary.

def commaSource

Same as:

text ","

def fill_breakable(sep = " ")Source

Similar to #breakable except the decision to break or not is determined individually.

def flushSource

Outputs any buffered data.

def group(indent = 0, open_obj = "", close_obj = "", &block)Source

Creates a group of objects. Inside a group all breakable objects are either turned into newlines or are output as is, depending on the available width.

def list(left, elements, right, &block) : NilSource

Appends a list of elements surrounded by left and right and separated by commas, yielding each element to the given block.

def list(left, elements, right) : NilSource

Appends a list of elements surrounded by left and right and separated by commas.

def nest(indent = 1, &block)Source

Increases the indentation for breakables inside the current group.

def surround(left, right, left_break = "", right_break = "", &block) : NilSource

Appends a group that is surrounded by the given left and right objects, and optionally is surrounded by the given breakable objects.

def text(obj)Source

Appends a text element.

© 2012–2019 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.