package dedent
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
sha256=f221a9cecb9ed932a7b58018fb31fb19a7b2eb2e3aba6a953235f807b7668f71
    
    
  doc/README.html
"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".