OpenUILang.ZigNIF (openui_lang v1.0.0)

Copy Markdown View Source

Native Zig NIF bindings for OpenUI Lang 1.0 lexing, preprocessing, auto-closing, Pratt expression parsing, TUI symbol extraction, and statement merging.

Summary

Functions

auto_close(input)

@spec auto_close(String.t()) :: %{text: String.t(), was_incomplete: boolean()}

demux(input)

@spec demux(String.t()) :: %{prose: String.t(), code: String.t()}

parse_and_materialize(input, schema_id, schema_bin, root_name)

@spec parse_and_materialize(String.t(), non_neg_integer(), binary(), String.t()) ::
  map()

parse_merge_statements(input, strip_fences)

@spec parse_merge_statements(String.t(), non_neg_integer()) :: [
  {String.t(), String.t(), boolean(), boolean(), [String.t()]}
]

parse_pending(pending, need_refs)

@spec parse_pending(String.t(), non_neg_integer()) :: {boolean(), [map()]}

parse_source(input, need_refs)

@spec parse_source(String.t(), non_neg_integer()) :: :empty | {boolean(), [map()]}

parse_statements(closed, need_refs)

@spec parse_statements(String.t(), non_neg_integer()) :: [map()]

parse_symbols(input)

@spec parse_symbols(String.t()) :: %{optional(String.t()) => term()}

preprocess(input)

@spec preprocess(String.t()) :: String.t()

register_schema(schema_id, schema_bin)

@spec register_schema(non_neg_integer(), binary()) :: :ok

stream_get(stream_ref, complete, beam_mat_cache)

@spec stream_get(reference(), non_neg_integer(), map()) :: {map(), map()}

stream_new(schema_id, schema_bin, root_name)

@spec stream_new(non_neg_integer(), binary(), String.t()) :: reference()

stream_push(stream_ref, chunk, complete, beam_mat_cache)

@spec stream_push(reference(), String.t(), non_neg_integer(), map()) :: {map(), map()}

stream_reset(stream_ref)

@spec stream_reset(reference()) :: :ok

stream_set(stream_ref, full_text, complete, beam_mat_cache)

@spec stream_set(reference(), String.t(), non_neg_integer(), map()) :: {map(), map()}

strip_comments(input)

@spec strip_comments(String.t()) :: String.t()

tokenize(input)

@spec tokenize(String.t()) :: [OpenUILang.Lexer.token()]