gleamgen/expression

Types

pub type Comparison {
  GreaterThan
  GreaterThanOrEqual
  LessThan
  LessThanOrEqual
}

Constructors

  • GreaterThan
  • GreaterThanOrEqual
  • LessThan
  • LessThanOrEqual
pub opaque type Expression(type_)

See math_operator and math_operator_float

pub type MathOperator {
  Add
  Sub
  Mul
  Div
}

Constructors

  • Add
  • Sub
  • Mul
  • Div

Values

pub fn assert_(
  condition: Expression(Bool),
  as_string: option.Option(String),
) -> Expression(Nil)

Create an assert expression with an optional as clause

pub fn bool(value: Bool) -> Expression(Bool)
pub fn call0(func: Expression(fn() -> ret)) -> Expression(ret)

Call a function or constructor with no arguments

expression.call0(
  import_.function0(dict_module, dict.new)
)
|> expression.render(render.default_context())
|> render.to_string()
// -> "dict.new()"
pub fn call1(
  func: Expression(fn(arg1) -> ret),
  arg1: Expression(arg1),
) -> Expression(ret)

Call a function or constructor with one argument See call0

pub fn call2(
  func: Expression(fn(arg1, arg2) -> ret),
  arg1: Expression(arg1),
  arg2: Expression(arg2),
) -> Expression(ret)

Call a function or constructor with two arguments See call0

pub fn call3(
  func: Expression(fn(arg1, arg2, arg3) -> ret),
  arg1: Expression(arg1),
  arg2: Expression(arg2),
  arg3: Expression(arg3),
) -> Expression(ret)

Call a function or constructor with three arguments See call0

pub fn call4(
  func: Expression(fn(arg1, arg2, arg3, arg4) -> ret),
  arg1: Expression(arg1),
  arg2: Expression(arg2),
  arg3: Expression(arg3),
  arg4: Expression(arg4),
) -> Expression(ret)

Call a function or constructor with four arguments See call0

pub fn call5(
  func: Expression(fn(arg1, arg2, arg3, arg4, arg5) -> ret),
  arg1: Expression(arg1),
  arg2: Expression(arg2),
  arg3: Expression(arg3),
  arg4: Expression(arg4),
  arg5: Expression(arg5),
) -> Expression(ret)

Call a function or constructor with five arguments See call0

pub fn call6(
  func: Expression(fn(arg1, arg2, arg3, arg4, arg5, arg6) -> ret),
  arg1: Expression(arg1),
  arg2: Expression(arg2),
  arg3: Expression(arg3),
  arg4: Expression(arg4),
  arg5: Expression(arg5),
  arg6: Expression(arg6),
) -> Expression(ret)

Call a function or constructor with six arguments See call0

pub fn call7(
  func: Expression(
    fn(arg1, arg2, arg3, arg4, arg5, arg6, arg7) -> ret,
  ),
  arg1: Expression(arg1),
  arg2: Expression(arg2),
  arg3: Expression(arg3),
  arg4: Expression(arg4),
  arg5: Expression(arg5),
  arg6: Expression(arg6),
  arg7: Expression(arg7),
) -> Expression(ret)

Call a function or constructor with seven arguments See call0

pub fn call8(
  func: Expression(
    fn(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) -> ret,
  ),
  arg1: Expression(arg1),
  arg2: Expression(arg2),
  arg3: Expression(arg3),
  arg4: Expression(arg4),
  arg5: Expression(arg5),
  arg6: Expression(arg6),
  arg7: Expression(arg7),
  arg8: Expression(arg8),
) -> Expression(ret)

Call a function or constructor with eight arguments See call0

pub fn call9(
  func: Expression(
    fn(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) -> ret,
  ),
  arg1: Expression(arg1),
  arg2: Expression(arg2),
  arg3: Expression(arg3),
  arg4: Expression(arg4),
  arg5: Expression(arg5),
  arg6: Expression(arg6),
  arg7: Expression(arg7),
  arg8: Expression(arg8),
  arg9: Expression(arg9),
) -> Expression(ret)

Call a function or constructor with nine arguments See call0

pub fn call_dynamic(
  func: Expression(types.Dynamic),
  args: List(Expression(types.Dynamic)),
) -> Expression(types.Dynamic)

Call a function or constructor without type checking

pub fn coerce_dynamic_unsafe(
  type_: Expression(t1),
) -> Expression(t2)

Convert an expression to any type without checking

pub fn comparison(
  expr1: Expression(Int),
  operator: Comparison,
  expr2: Expression(Int),
) -> Expression(Bool)
pub fn comparison_float(
  expr1: Expression(Float),
  operator: Comparison,
  expr2: Expression(Float),
) -> Expression(Bool)
pub fn concat_string(
  expr1: Expression(String),
  expr2: Expression(String),
) -> Expression(String)

Use the <> operator to concatenate two strings

expression.concat_string(expression.string("hello "), expression.string("world"))
|> expression.render(render.default_context())
|> render.to_string()
// -> "\"hello \" <> \"world\""
pub fn construct0(
  constructor: Expression(fn() -> ret),
) -> Expression(ret)
pub const construct1: fn(Expression(fn(a) -> b), Expression(a)) -> Expression(
  b,
)
pub const construct2: fn(
  Expression(fn(c, d) -> e),
  Expression(c),
  Expression(d),
) -> Expression(e)
pub const construct3: fn(
  Expression(fn(f, g, h) -> i),
  Expression(f),
  Expression(g),
  Expression(h),
) -> Expression(i)
pub const construct4: fn(
  Expression(fn(j, k, l, m) -> n),
  Expression(j),
  Expression(k),
  Expression(l),
  Expression(m),
) -> Expression(n)
pub const construct5: fn(
  Expression(fn(o, p, q, r, s) -> t),
  Expression(o),
  Expression(p),
  Expression(q),
  Expression(r),
  Expression(s),
) -> Expression(t)
pub const construct6: fn(
  Expression(fn(u, v, w, x, y, z) -> aa),
  Expression(u),
  Expression(v),
  Expression(w),
  Expression(x),
  Expression(y),
  Expression(z),
) -> Expression(aa)
pub const construct7: fn(
  Expression(fn(ab, ac, ad, ae, af, ag, ah) -> ai),
  Expression(ab),
  Expression(ac),
  Expression(ad),
  Expression(ae),
  Expression(af),
  Expression(ag),
  Expression(ah),
) -> Expression(ai)
pub const construct8: fn(
  Expression(fn(aj, ak, al, am, an, ao, ap, aq) -> ar),
  Expression(aj),
  Expression(ak),
  Expression(al),
  Expression(am),
  Expression(an),
  Expression(ao),
  Expression(ap),
  Expression(aq),
) -> Expression(ar)
pub const construct9: fn(
  Expression(fn(as, at, au, av, aw, ax, ay, az, ba) -> bb),
  Expression(as),
  Expression(at),
  Expression(au),
  Expression(av),
  Expression(aw),
  Expression(ax),
  Expression(ay),
  Expression(az),
  Expression(ba),
) -> Expression(bb)
pub fn echo_(
  expression: Expression(a),
  as_string: option.Option(String),
) -> Expression(a)
pub fn equals(
  first: Expression(a),
  second: Expression(a),
) -> Expression(Bool)
pub fn error(
  err_value: Expression(err),
) -> Expression(Result(ok, err))
pub fn float(value: Float) -> Expression(Float)
pub fn int(value: Int) -> Expression(Int)
pub fn list(value: List(Expression(t))) -> Expression(List(t))
pub fn list_prepend(
  prepending: List(Expression(t)),
  original: Expression(List(t)),
) -> Expression(List(t))

Prepend value(s) to list using [value, ..original] syntax

pub fn math_operator(
  expr1: Expression(Int),
  op: MathOperator,
  expr2: Expression(Int),
) -> Expression(Int)

Apply a math operator to two expressions with the type of Int

expression.math_operator(expression.int(3), expression.Add, expression.int(5))
|> expression.render(render.default_context())
|> render.to_string()
// -> "3 + 5"
pub fn math_operator_float(
  expr1: Expression(Float),
  op: MathOperator,
  expr2: Expression(Float),
) -> Expression(Int)

Apply a math operator to two expressions with the type of Float

expression.math_operator_float(
  expression.float(3.3),
  expression.Sub,
  expression.unchecked_ident("other_float")
)
|> expression.render(render.default_context())
|> render.to_string()
// -> "3.3 -. other_float"
pub fn nil() -> Expression(Nil)
pub fn not_equals(
  first: Expression(a),
  second: Expression(a),
) -> Expression(Bool)
pub fn ok(
  ok_value: Expression(ok),
) -> Expression(Result(ok, err))
pub fn panic_(as_string: option.Option(String)) -> Expression(a)

Create a panic expression with an optional as clause

expression.todo_(option.Some("ahhhhhh!!!"))
|> expression.render(render.default_context())
|> render.to_string()
// -> "panic as \"ahhhhhh!!!\""
pub fn raw(value: String) -> Expression(a)

Provide an ident that could be of any type

pub fn raw_of_type(
  value: String,
  type_: types.GeneratedType(t),
) -> Expression(t)

Provide a string to inject without any checking of the specified type

pub fn render(
  expression: Expression(t),
  context: @internal Context,
) -> @internal Rendered
pub fn render_statement(
  statement: @internal Statement,
  context: @internal Context,
) -> @internal Rendered
pub fn string(value: String) -> Expression(String)
pub fn to_dynamic(
  type_: Expression(t),
) -> Expression(types.Dynamic)
pub fn todo_(as_string: option.Option(String)) -> Expression(a)

Create a todo expression with an optional as clause

expression.todo_(option.Some("some unimplemented thing"))
|> expression.render(render.default_context())
|> render.to_string()
// -> "todo as \"some unimplemented thing\""
pub fn tuple1(arg1: Expression(a)) -> Expression(#(a))
pub fn tuple2(
  arg1: Expression(a),
  arg2: Expression(b),
) -> Expression(#(a, b))
pub fn tuple3(
  arg1: Expression(a),
  arg2: Expression(b),
  arg3: Expression(c),
) -> Expression(#(a, b, c))
pub fn tuple4(
  arg1: Expression(a),
  arg2: Expression(b),
  arg3: Expression(c),
  arg4: Expression(d),
) -> Expression(#(a, b, c, d))
pub fn tuple5(
  arg1: Expression(a),
  arg2: Expression(b),
  arg3: Expression(c),
  arg4: Expression(d),
  arg5: Expression(e),
) -> Expression(#(a, b, c, d, e))
pub fn tuple6(
  arg1: Expression(a),
  arg2: Expression(b),
  arg3: Expression(c),
  arg4: Expression(d),
  arg5: Expression(e),
  arg6: Expression(f),
) -> Expression(#(a, b, c, d, e, f))
pub fn tuple7(
  arg1: Expression(a),
  arg2: Expression(b),
  arg3: Expression(c),
  arg4: Expression(d),
  arg5: Expression(e),
  arg6: Expression(f),
  arg7: Expression(g),
) -> Expression(#(a, b, c, d, e, f, g))
pub fn tuple8(
  arg1: Expression(a),
  arg2: Expression(b),
  arg3: Expression(c),
  arg4: Expression(d),
  arg5: Expression(e),
  arg6: Expression(f),
  arg7: Expression(g),
  arg8: Expression(h),
) -> Expression(#(a, b, c, d, e, f, g, h))
pub fn tuple9(
  arg1: Expression(a),
  arg2: Expression(b),
  arg3: Expression(c),
  arg4: Expression(d),
  arg5: Expression(e),
  arg6: Expression(f),
  arg7: Expression(g),
  arg8: Expression(h),
  arg9: Expression(i),
) -> Expression(#(a, b, c, d, e, f, g, h, i))
pub fn type_(expr: Expression(t)) -> types.GeneratedType(t)

Get the internal type of an expression

pub fn with_render_config(
  expression: Expression(t),
  config: config.Config,
) -> Expression(t)
Search Document