View Source Yex.Text (y_ex v0.7.1)

A shareable type that is optimized for shared editing on text.

Summary

Types

delta()

@type delta() ::
  [%{:insert => Yex.input_type(), optional(:attributes) => map()}]
  | [%{delete: integer()}]
  | [%{:retain => integer(), optional(:attributes) => map()}]

t()

@type t() :: %Yex.Text{doc: Yex.Doc.t(), reference: reference()}

Functions

apply_delta(text, delta)

@spec apply_delta(t(), delta()) :: :ok | :error

Transforms this type to a Quill Delta

Examples Syncs two clients by exchanging the complete document structure

iex> doc = Yex.Doc.new()
iex> text = Yex.Doc.get_text(doc, "text")
iex> delta = [%{ "retain" => 1}, %{ "delete" => 3}]
iex> Yex.Text.insert(text,0, "12345")
iex> Yex.Text.apply_delta(text,delta)
iex> Yex.Text.to_delta(text)
[%{insert: "15"}]

delete(text, index, length)

@spec delete(t(), integer(), integer()) :: :ok | :error

format(text, index, length, attr)

@spec format(t(), integer(), integer(), map()) :: :ok | :error

insert(text, index, content)

@spec insert(t(), integer(), Yex.input_type()) :: :ok | :error

insert(text, index, content, attr)

@spec insert(t(), integer(), Yex.input_type(), map()) :: :ok | :error

length(text)

@spec length(t()) :: integer()

to_delta(text)

@spec to_delta(t()) :: delta()

Transforms this type to a Quill Delta

Examples creates a few changes, then gets them back as a batch of change maps

iex> doc = Yex.Doc.new()
iex> text = Yex.Doc.get_text(doc, "text")
iex> Yex.Text.insert(text, 0, "12345")
iex> Yex.Text.insert(text, 0, "0", %{"bold" => true})
iex> Yex.Text.to_delta(text)
[%{insert: "0", attributes: %{"bold" => true}}, %{insert: "12345"}]

to_string(text)

@spec to_string(t()) :: binary()