Skip to content

testingrequired/reqlang-expr-tspl

Repository files navigation

reqlang-expr-tspl

A toy transpiler to convert reqlang-expr expressions to Typescript.

This is not a serious project.

Example

(id `foo`)

transpiles to

// This file was generated by reqlang-expr-tspl
import * as ReqlangExpr from "@reqlang-expr-tspl/runtime";

const expression: ReqlangExpr.Expression = (ctx) => {
  return ctx.builtins.id("foo");
};

const args = ReqlangExpr.getArgs();

const env = new ReqlangExpr.Env(
  args.vars,
  args.prompts,
  args.secrets,
  args.client
);

const context = {
  env,
  builtins: ReqlangExpr.builtinFns,
};

const value = expression(context);

console.log(JSON.stringify(value));

See: @reqlang-expr-tspl/runtime

Running Transpiled Files

reqlang-expr-tspl spec/greeting_name.expr > spec/greeting_name.expr.ts

npx tsx spec/greeting_name.expr.ts \
  --var 'greeting=Hello' \
  --prompt 'name=World'

# "Hello World"

Development

Running CLI

The reqlang-expr-tspl.sh script helps run the latest development version of the CLI.

./reqlang-expr-tspl.sh spec/greeting_name.expr > spec/greeting_name.expr.ts

npx tsx spec/greeting_name.expr.ts \
  --var 'greeting=Hello' \
  --prompt 'name=World'

# "Hello World"

Tests

Verify

The spec directory has several input *.expr with corrosponding *.expr.ts expected generated code.

  • cargo test Transpiles the *.expr files and checks the *.expr.ts files for equality.
  • npm run test Runs the *.expr.ts files using npx tsx and compares results against *.expr.ts.interpreted files
  • npm run check Typechecks the *.expr.ts files
  • just test Runs all tests

About

A toy transpiler to convert reqlang-expr expressions to Typescript.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages