gleamgen/expression/block

Types

pub type UseFunction(callback_args, ret) {
  UseFunction(
    function: expression.Expression(types.Dynamic),
    args: List(expression.Expression(types.Dynamic)),
  )
}

Constructors

Values

pub fn new(
  statements: List(statement.Statement),
  return: types.GeneratedType(type_),
) -> expression.Expression(type_)

Create a block expression that returns a specific type (see also new_dynamic) Prefer building a block implicitly using the with_ functions of this module

pub fn new_dynamic(
  statements: List(statement.Statement),
) -> expression.Expression(any)
pub fn use_function1(
  func: expression.Expression(fn(a, callback) -> ret),
  arg1: expression.Expression(a),
) -> UseFunction(callback, ret)
pub fn use_function2(
  func: expression.Expression(fn(a, b, callback) -> ret),
  arg1: expression.Expression(a),
  arg2: expression.Expression(b),
) -> UseFunction(callback, ret)
pub fn use_function3(
  func: expression.Expression(fn(a, b, c, callback) -> ret),
  arg1: expression.Expression(a),
  arg2: expression.Expression(b),
  arg3: expression.Expression(c),
) -> UseFunction(callback, ret)
pub fn use_function4(
  func: expression.Expression(fn(a, b, c, d, callback) -> ret),
  arg1: expression.Expression(a),
  arg2: expression.Expression(b),
  arg3: expression.Expression(c),
  arg4: expression.Expression(d),
) -> UseFunction(callback, ret)
pub fn use_function5(
  func: expression.Expression(fn(a, b, c, d, e, callback) -> ret),
  arg1: expression.Expression(a),
  arg2: expression.Expression(b),
  arg3: expression.Expression(c),
  arg4: expression.Expression(d),
  arg5: expression.Expression(e),
) -> UseFunction(callback, ret)
pub fn use_function6(
  func: expression.Expression(
    fn(a, b, c, d, e, f, callback) -> ret,
  ),
  arg1: expression.Expression(a),
  arg2: expression.Expression(b),
  arg3: expression.Expression(c),
  arg4: expression.Expression(d),
  arg5: expression.Expression(e),
  arg6: expression.Expression(f),
) -> UseFunction(callback, ret)
pub fn use_function7(
  func: expression.Expression(
    fn(a, b, c, d, e, f, g, callback) -> ret,
  ),
  arg1: expression.Expression(a),
  arg2: expression.Expression(b),
  arg3: expression.Expression(c),
  arg4: expression.Expression(d),
  arg5: expression.Expression(e),
  arg6: expression.Expression(f),
  arg7: expression.Expression(g),
) -> UseFunction(callback, ret)
pub fn use_function8(
  func: expression.Expression(
    fn(a, b, c, d, e, f, g, h, callback) -> ret,
  ),
  arg1: expression.Expression(a),
  arg2: expression.Expression(b),
  arg3: expression.Expression(c),
  arg4: expression.Expression(d),
  arg5: expression.Expression(e),
  arg6: expression.Expression(f),
  arg7: expression.Expression(g),
  arg8: expression.Expression(h),
) -> UseFunction(callback, ret)
pub fn use_function9(
  func: expression.Expression(
    fn(a, b, c, d, e, f, g, h, i, callback) -> ret,
  ),
  arg1: expression.Expression(a),
  arg2: expression.Expression(b),
  arg3: expression.Expression(c),
  arg4: expression.Expression(d),
  arg5: expression.Expression(e),
  arg6: expression.Expression(f),
  arg7: expression.Expression(g),
  arg8: expression.Expression(h),
  arg9: expression.Expression(i),
) -> UseFunction(callback, ret)
pub fn use_function_dynamic(
  func: expression.Expression(any),
  args: List(expression.Expression(types.Dynamic)),
) -> UseFunction(callback, ret)
pub fn with_comments(
  comments: List(String),
  handler: fn() -> expression.Expression(ret),
) -> expression.Expression(ret)
pub fn with_empty_line(
  handler: fn() -> expression.Expression(ret),
) -> expression.Expression(ret)
pub fn with_expression(
  expression: expression.Expression(type_),
  handler: fn() -> expression.Expression(ret),
) -> expression.Expression(ret)
pub fn with_let_declaration(
  variable: String,
  value: expression.Expression(type_),
  handler: fn(expression.Expression(type_)) -> expression.Expression(
    ret,
  ),
) -> expression.Expression(ret)
{
  use x <- block.with_let_declaration("x", expression.int(4))
  use y <- block.with_let_declaration(
    "y",
    expression.math_operator(x, expression.Add, expression.int(5)),
  )
  y
}
|> expression.render(render.default_context())
|> render.to_string()

outputs:

{
  let x = 4
  let y = x + 5
  y
}
pub fn with_matching_let_declaration(
  pattern: pattern.Pattern(type_, output),
  value: expression.Expression(type_),
  assert_ assert_: Bool,
  handler handler: fn(output) -> expression.Expression(ret),
) -> expression.Expression(ret)
pub fn with_statements(
  statements: List(statement.Statement),
  handler: fn() -> expression.Expression(ret),
) -> expression.Expression(ret)
pub fn with_use0(
  use_function: UseFunction(fn() -> ret, ret),
  callback: fn() -> expression.Expression(ret),
) -> expression.Expression(ret)
pub fn with_use1(
  use_function: UseFunction(fn(a) -> ret, ret),
  arg1: String,
  callback: fn(expression.Expression(a)) -> expression.Expression(
    ret,
  ),
) -> expression.Expression(ret)
pub fn with_use2(
  use_function: UseFunction(fn(a, b) -> ret, ret),
  arg1: String,
  arg2: String,
  callback: fn(expression.Expression(a), expression.Expression(b)) -> expression.Expression(
    ret,
  ),
) -> expression.Expression(ret)
pub fn with_use3(
  use_function: UseFunction(fn(a, b, c) -> ret, ret),
  arg1: String,
  arg2: String,
  arg3: String,
  callback: fn(
    expression.Expression(a),
    expression.Expression(b),
    expression.Expression(c),
  ) -> expression.Expression(ret),
) -> expression.Expression(ret)
pub fn with_use4(
  use_function: UseFunction(fn(a, b, c, d) -> ret, ret),
  arg1: String,
  arg2: String,
  arg3: String,
  arg4: String,
  callback: fn(
    expression.Expression(a),
    expression.Expression(b),
    expression.Expression(c),
    expression.Expression(d),
  ) -> expression.Expression(ret),
) -> expression.Expression(ret)
pub fn with_use5(
  use_function: UseFunction(fn(a, b, c, d, e) -> ret, ret),
  arg1: String,
  arg2: String,
  arg3: String,
  arg4: String,
  arg5: String,
  callback: fn(
    expression.Expression(a),
    expression.Expression(b),
    expression.Expression(c),
    expression.Expression(d),
    expression.Expression(e),
  ) -> expression.Expression(ret),
) -> expression.Expression(ret)
pub fn with_use6(
  use_function: UseFunction(fn(a, b, c, d, e, f) -> ret, ret),
  arg1: String,
  arg2: String,
  arg3: String,
  arg4: String,
  arg5: String,
  arg6: String,
  callback: fn(
    expression.Expression(a),
    expression.Expression(b),
    expression.Expression(c),
    expression.Expression(d),
    expression.Expression(e),
    expression.Expression(f),
  ) -> expression.Expression(ret),
) -> expression.Expression(ret)
pub fn with_use7(
  use_function: UseFunction(fn(a, b, c, d, e, f, g) -> ret, ret),
  arg1: String,
  arg2: String,
  arg3: String,
  arg4: String,
  arg5: String,
  arg6: String,
  arg7: String,
  callback: fn(
    expression.Expression(a),
    expression.Expression(b),
    expression.Expression(c),
    expression.Expression(d),
    expression.Expression(e),
    expression.Expression(f),
    expression.Expression(g),
  ) -> expression.Expression(ret),
) -> expression.Expression(ret)
pub fn with_use8(
  use_function: UseFunction(
    fn(a, b, c, d, e, f, g, h) -> ret,
    ret,
  ),
  arg1: String,
  arg2: String,
  arg3: String,
  arg4: String,
  arg5: String,
  arg6: String,
  arg7: String,
  arg8: String,
  callback: fn(
    expression.Expression(a),
    expression.Expression(b),
    expression.Expression(c),
    expression.Expression(d),
    expression.Expression(e),
    expression.Expression(f),
    expression.Expression(g),
    expression.Expression(h),
  ) -> expression.Expression(ret),
) -> expression.Expression(ret)
pub fn with_use9(
  use_function: UseFunction(
    fn(a, b, c, d, e, f, g, h, i) -> ret,
    ret,
  ),
  arg1: String,
  arg2: String,
  arg3: String,
  arg4: String,
  arg5: String,
  arg6: String,
  arg7: String,
  arg8: String,
  arg9: String,
  callback: fn(
    expression.Expression(a),
    expression.Expression(b),
    expression.Expression(c),
    expression.Expression(d),
    expression.Expression(e),
    expression.Expression(f),
    expression.Expression(g),
    expression.Expression(h),
    expression.Expression(i),
  ) -> expression.Expression(ret),
) -> expression.Expression(ret)
pub fn with_use_dynamic(
  use_function: UseFunction(any_func, ret),
  args: List(String),
  callback: fn(List(expression.Expression(types.Dynamic))) -> expression.Expression(
    ret,
  ),
) -> expression.Expression(ret)
Search Document