LuaBuilder class final

A builder that compiles Lua scripts at build time.

This builder implements the Builder interface from package:hooks and can be used in a hook/build.dart to compile Lua scripts at build time.

Compilation modes

Mode Output Runtime
CompileMode.bytecode build/lua/*.lua (binary) Load bytes, run bytecode VM
CompileMode.dartSource build/lua/*.lua.dart (Dart src) Import & call directly
CompileMode.dartEmbed build/lua/*.lua.dart (Dart src) Import bytes, run bytecode VM

Example -- bytecode mode (default)

import 'package:hooks/hooks.dart';
import 'package:lualike_hooks/lualike_hooks.dart';

void main(List<String> args) async {
  await build(args, (input, output) async {
    final builder = LuaBuilder(
      sources: ['assets/lua/'],
    );
    await builder.run(input: input, output: output, logger: null);
  });
}

Example -- Dart source mode

void main(List<String> args) async {
  await build(args, (input, output) async {
    final builder = LuaBuilder(
      sources: ['assets/lua/'],
      mode: CompileMode.dartSource,
    );
    await builder.run(input: input, output: output, logger: null);
  });
}

Constructors

LuaBuilder({required List<String> sources, CompileMode mode = CompileMode.bytecode, String outputDirName = 'lua', bool enableConstantFolding = true, bool enablePeephole = true, bool stripDebug = false})
Creates a LuaBuilder with the supplied configuration.
const

Properties

enableConstantFolding bool
Whether to enable constant folding during compilation.
final
enablePeephole bool
Whether to enable peephole optimization during compilation.
final
hashCode int
The hash code for this object.
no setterinherited
mode CompileMode
How the Lua source should be compiled and embedded.
final
outputDirName String
The name of the output directory under build/.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
sources List<String>
The directories containing Lua source files to compile.
final
stripDebug bool
Whether to strip debug information from the compiled bytecode.
final

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
run({required BuildInput input, required BuildOutputBuilder output, required Logger? logger}) Future<void>
Runs the Lua compilation process.
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited