package dedent
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=f221a9cecb9ed932a7b58018fb31fb19a7b2eb2e3aba6a953235f807b7668f71
Description
A library for improving redability of multi-line string constants in code.
Published: 14 Jun 2023
README
"Dedent"
Dedent is a library for improving readability of multi-line string constants in code:
- you can put string delimiters on their own lines
- you can indent lines to the level of surrounding code
- you can start each line with a line prefix,
>
More precisely, on an input string, Dedent does the following:
- breaks the string into lines
- strips trailing whitespace from all lines
- drops the first line and the last line, if they are empty
- finds the line with the least indendation, and drops that indentation from all lines
- drops the line prefix from all lines, if it is present on all lines
For example:
let string =
{|
> a
> b
> c
|} |> Dedent.stringThat yields the string "a\n b\n c".
Use Dedent.lines to dedent and return a list of lines rather than a string. For the above example, Dedent.lines yields:
[ "a"; " b"; " c" ]Each of the aspects of Dedent's input handling is optional. You don't have to use a line prefix. This yields the same string:
let string =
{|
a
b
c
|} |> Dedent.stringYou don't have to indent. This yields the same string:
let string =
{|
a
b
c
|} |> Dedent.stringYou don't have to put delimiters on their own lines. This yields the same string:
let string =
{|a
b
c|} |> Dedent.stringThere is also an extension syntax, [%string_dedent], that is a variant of [%string] that applies [Dedent.string] to its input before substitution. For example:
let bar = "BAR" in
let string =
[%string_dedent
{|
> foo
> %{bar}
|}]
inThat yields the string "foo\n BAR".