SCLParser.ExpressionParser (scl_parser v1.0.0)
Parses SCL expression strings like $var('foo') |> $jq('.bar').
These expressions typically appear within backtick strings in SCL files.
Summary
Functions
Parses an SCL expression string.
Functions
Parses an SCL expression string.
Handles function calls starting with $ and allows piping with |>.
Parameters can be strings (single, double, backtick quoted), numbers, or booleans.
Examples
iex> SCLParser.ExpressionParser.parse("$var('foo')")
{:ok, [%{fn: "var", params: ["foo"]}]}
iex> SCLParser.ExpressionParser.parse("$var(123) |> $add(10)")
{:ok, [%{fn: "var", params: [123]}, %{fn: "add", params: [10]}]}
iex> SCLParser.ExpressionParser.parse("not an expression")
{:error, "Expression must start with '$'"}
iex> SCLParser.ExpressionParser.parse("$func(unterminated 'string)")
{:error, "Unterminated single-quoted string in parameter list"}
iex> SCLParser.ExpressionParser.parse("$func() |> ")
{:error, "Expected '$' after '|>'"}Returns
{:ok, list_of_maps}where each map is%{fn: String.t(), params: list()}.{:error, reason :: String.t()}on failure.