Function textwrap::unfill

source ·
pub fn unfill(text: &str) -> (String, Options<'_>)
Expand description

Unpack a paragraph of already-wrapped text.

This function attempts to recover the original text from a single paragraph of wrapped text, such as what fill() would produce. This means that it turns

textwrap: a small
library for
wrapping text.

back into

textwrap: a small library for wrapping text.

In addition, it will recognize a common prefix and a common line ending among the lines.

The prefix of the first line is returned in Options::initial_indent and the prefix (if any) of the the other lines is returned in Options::subsequent_indent.

Line ending is returned in Options::line_ending. If line ending can not be confidently detected (mixed or no line endings in the input), LineEnding::LF will be returned.

In addition to ' ', the prefixes can consist of characters used for unordered lists ('-', '+', and '*') and block quotes ('>') in Markdown as well as characters often used for inline comments ('#' and '/').

The text must come from a single wrapped paragraph. This means that there can be no empty lines ("\n\n" or "\r\n\r\n") within the text. It is unspecified what happens if unfill is called on more than one paragraph of text.

§Examples

use textwrap::{LineEnding, unfill};

let (text, options) = unfill("\
* This is an
  example of
  a list item.
");

assert_eq!(text, "This is an example of a list item.\n");
assert_eq!(options.initial_indent, "* ");
assert_eq!(options.subsequent_indent, "  ");
assert_eq!(options.line_ending, LineEnding::LF);