@doc """
Returns a string with indentation applied at the start of every line.
## Options
* `indentation` - An `t:indentation/0` option specifier to apply:
* `spaces: amount`: an `amount` of spaces
* `tabs: amount`: an `amount` of tabs
* `binary: {string, times}`: some `string` multiple `times`
* `binary: string`: an arbitrary `string`
* `:newlines` - Any valid `pattern` to `split/3`. The default
`~r/\r\n|\r|\n/` correctly handles cross-platform newlines. You might use
`~r/(\r\n|\r|\n)+(?!$)/` to skip indenting empty or trailing lines.
## Examples
iex> string = "every\\n\\nwhich\\nway\\n"
iex> String.indent(string)
" every\\n \\n which\\n way\\n "
iex> string = "every\\n\\nwhich\\nway\\n"
iex> String.indent(string, newlines: ~r/(\r\\n|\r|\\n)+(?!$)/)
" every\\n\\n which\\n way\\n"
iex> string = "every\\n\\nwhich\\nway\\n"
iex> String.indent(string, spaces: 4)
" every\\n \\n which\\n way\\n "
iex> string = "every\\n\\nwhich\\nway\\n"
iex> String.indent(string, tabs: 1)
"\tevery\\n\t\\n\twhich\\n\tway\\n\t"
iex> string = "every\\n\\nwhich\\nway\\n"
iex> String.indent(string, binary: {"~", 2})
"~~every\\n~~\\n~~which\\n~~way\\n~~"
iex> string = "every\\n\\nwhich\\nway\\n"
iex> String.indent(string, binary: "+ ")
"+ every\\n+ \\n+ which\\n+ way\\n+ "
"""
@doc since: "1.20.0"
@spec indent(t, list(indent_opt)) :: t
def indent(string, opts \\ [])