Skip to content

wartman/kit.macro

Repository files navigation

Kit Macro

Macro tools for Haxe

Usage

Kit Macros are build around composable BuildSteps which can be used to build classes.

// in "ObjectBuilder.hx":
import kit.macro.step.*;
import kit.macro.ClassBuilderFactory;

final builder = new ClassBuilderFactory([
	new AutoInitializedFieldBuildStep({
		meta: 'auto',
		hook: Init
	}),
	new ConstructorBuildStep({
		hook: Init
	}),
	new PropertyBuildStep(),
	new JsonSerializerBuildStep()
]);

function build() {
	return builder.fromContext().export();
}
// in "Object.hx"
@:autoBuild(ObjectBuilder.build())
interface Object {}
// in "Main.hx"
function main() {
  var name = new Name({first: 'Guy', last: 'Manly'});
  trace(name.full);
  trace(name.toJson());
}

class Name implements Object {
	@:auto public final first:String;
	@:auto public final last:String;
	@:prop(get = first + ' ' + last) public final full:String;
}

About

Composable macro builders for Haxe

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages