W3cubDocs

/Crystal

class PrettyPrint

Overview

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

References

Defined in:

pretty_print.cr

Constructors

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, &)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 ","
breakable

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 = "", &)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, &) : 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, &)Source

Increases the indentation for breakables inside the current group.

def surround(left, right, left_break = "", right_break = "", &) : 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–2020 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/0.35.1/PrettyPrint.html