Module textwrap::core[][src]

Building blocks for advanced wrapping functionality.

The functions and structs in this module can be used to implement advanced wrapping functionality when the wrap and fill function don't do what you want.

In general, you want to follow these steps when wrapping something:

  1. Split your input into Fragments. These are abstract blocks of text or content which can be wrapped into lines. You can use find_words to do this for text.

  2. Potentially split your fragments into smaller pieces. This allows you to implement things like hyphenation. If wrapping text, split_words can help you do this.

  3. Potentially break apart fragments that are still too large to fit on a single line. This is implemented in break_words.

  4. Finally take your fragments and put them into lines. There are two algorithms for this: wrap_optimal_fit and wrap_first_fit. The former produces better line breaks, the latter is faster.

  5. Iterate through the slices returned by the wrapping functions and construct your lines of output.

Please open an issue if the functionality here is not sufficient or if you have ideas for improving it. We would love to hear from you!

Structs

Word

A piece of wrappable text, including any trailing whitespace.

Enums

WrapAlgorithm

Wrapping algorithms.

Traits

Fragment

A (text) fragment denotes the unit which we wrap into lines.

Functions

break_words

Forcibly break words wider than line_width into smaller words.

display_width

Compute the display width of text while skipping over ANSI escape sequences.

find_words

Split line into words separated by regions of ' ' characters.

split_words

Split words into smaller words according to the split points given by options.

wrap_first_fit

Wrap abstract fragments into lines with a first-fit algorithm.

wrap_optimal_fit

Wrap abstract fragments into lines with an optimal-fit algorithm.