Text wrapping and filling for OCaml
OCaml Makefile
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
src
.gitignore
CHANGES
LICENSE
Makefile
README.md
_oasis
_tags
configure
myocamlbuild.ml
opam
setup.ml

README.md

textwrap

An almost complete port of Python's [textwrap] 1 library to OCaml.

Installation

Just the usual OASIS routines -- follow the white rabbit:

$ ocaml setup.ml -configure
$ ocaml setup.ml -build
$ ocaml setup.ml -install

Example

So, what's in the box?

# let w = Wrapper.make 4 in
  print_endline (Wrapper.fill w "Hello world!");;
Hell
o wo
rld!
- : unit = ()

Here's a table of Wrapper.make arguments, controlling various aspects of wrapping:

| argument             | default | description                                        |
|----------------------+---------+----------------------------------------------------|
| initial_indent       | ""      | string that will be prepended to the first line    |
|                      |         | of wrapped output.                                 |
| subsequent_indent    | ""      | string that will be prepended to all but the       |
|                      |         | first lines of wrapped output.                     |
| expand_tabs          | true    | expand tabs in input string to spaces before       |
|                      |         | further processing -- each tab will become         |
|                      |         | 8 spaces; if `false`, each tab is treaded as a     |
|                      |         | single character.                                  |
| replace_whitespace   | true    | replace all whitespace characters in the input     |
|                      |         | text by spaces *after* tab expansion.              |
| fix_sentence_endings | false   | ensure that sentence-ending punctuation is         |
|                      |         | allways followed by two spaces.                    |
| break_long_words     | true    | break words longer than 'width', if `false`, those |
|                      |         | words won't be broken and some lines might be      |
|                      |         | longer that 'width'.                               |
| drop_whitespace      | true    | drop leading and trailing whitespace from lines.   |

Missing features

The only feature OCaml version is missing from the original [textwrap] 1 is [break_on_hyphens] 2, which requires a decent regex engine to implement; unfortunately, this is not the case for [Str] 3.