Packages
kino
0.12.1
0.19.0
0.18.0
0.17.0
0.16.1
0.16.0
0.15.3
0.15.2
0.15.1
0.15.0
0.14.2
0.14.1
0.14.0
0.13.2
0.13.1
0.13.0
0.12.3
0.12.2
0.12.1
0.12.0
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.1
0.8.0
0.7.0
0.6.2
0.6.1
0.6.0
retired
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.3
0.1.2
0.1.1
0.1.0
Interactive widgets for Livebook
Current section
Files
Jump to
Current section
Files
lib/kino/text.ex
defmodule Kino.Text do
@moduledoc ~S'''
A kino for rendering text content.
For rich text, use `Kino.Markdown`.
## Examples
Kino.Text.new("Hello!")
[:green, "Hello!"]
|> IO.ANSI.format()
|> IO.iodata_to_binary()
|> Kino.Text.new(terminal: true)
'''
@enforce_keys [:text]
defstruct [:text, :terminal, :chunk]
@opaque t :: %__MODULE__{
text: String.t(),
terminal: boolean(),
chunk: boolean()
}
@doc """
Creates a new kino displaying the given text content.
## Options
* `:terminal` - whether to render the text as if it were printed to
standard output, supporting ANSI escape codes. Defaults to `false`
* `:chunk` - whether this is a part of a larger text. Adjacent chunks
are merged into a single text. This is useful for streaming content.
Defaults to `false`
"""
@spec new(String.t(), opts) :: t() when opts: [terminal: boolean(), chunk: boolean()]
def new(text, opts \\ []) when is_binary(text) do
opts = Keyword.validate!(opts, terminal: false, chunk: false)
%__MODULE__{text: text, terminal: opts[:terminal], chunk: opts[:chunk]}
end
end