compiletime

Simple Haxe Macro Helpers that let you do or get things at compile-time.


Keywords
cross, helpers, macro
License
MIT
Install
haxelib install compiletime 2.7.0

Documentation

Compile Time

Simple Haxe Macro Helpers that let you do or get things at compile-time.

Usage

// Compile date and time

var date = CompileTime.buildDate();						// Equivalent of writing `new Date(2012,11,25,20,48,15);`
var dateAsString = CompileTime.buildDateString();		// A string saying "2012-12-25 20:48:15"

// Compile git commit sha

var sha = CompileTime.buildGitCommitSha();
//'104ad4e'

// Read a file

var file = CompileTime.readFile("README.md"); // will be compiled as an ordinary string in your code

// Read a file and use String Interpolation

var name="Jason", age=25;
var greeting = CompileTime.interpolateFile("test.txt");
	// Reads the contents of test.txt, and interpolates local values, similar to single quote string interpolation
	// Same as writing greeting = 'Hello my name is $name and I am ${age-5} years old'
	// Result will be "Hello my name is Jason and I am 20 years old";

// Import a whole package to make sure it's included in compilation.  Does not affect dead-code-elimination.

CompileTime.importPackage("server.controllers");

// Read a file, and check it is valid XML.  Will give a compile time error if it's not XML.

var xmlString = CompileTime.readXmlFile("haxelib.xml");	// Will insert it as a String.  
Xml.parse(xmlString);

// Read a file, and check it is valid JSON.  Will give a compile time error if it's not valid Json.

var jsonString = CompileTime.readJsonFile("test.json"); // Inserts the contents of text.json as a String

// Parse the JSON file, so it is inserted as an object declaration into the code.
// This has the added benefit of giving you compile time typing and autocompletion.

var jsonObject = CompileTime.parseJsonFile("test.json");
var typedJsonObject:Person = CompileTime.parseJsonFile("test.json"); // Same as above, but check the result matches a typedef

// Parse the JSON file, so it is inserted as an object declaration into the code.
// This has the added benefit of giving you compile time typing and autocompletion.

var yamlObject = CompileTime.parseYamlFile("test.yaml");
var yamlObject:Person = CompileTime.parseYamlFile("test.yaml"); // Check the type is correct.

// Read a markdown file, convert to HTML and check the result is valid XML.  Will give a compile time error if it doesn't validate.

var htmlString = CompileTime.readMarkdownFile("test.md");	// Will insert it as a HTML String.  
Xml.parse(htmlString);

// Get lists of classes that have been compiled

// Returns a list of all the classes in the "my.package" package, including sub-packages
CompileTime.getAllClasses("my.package");

// Returns a list of only the classes in the "my.package" package, so not including sub-packages
CompileTime.getAllClasses("my.package", false);

// Returns a list of all the classes that inherit MySuperClass, no matter what package
CompileTime.getAllClasses(MySuperClass);

// Returns a list of all the classes in the "my.package" package that inherit MySuperClass.
CompileTime.getAllClasses("my.package", MySuperClass);

// Returns a list of all the classes that implement MyInterface, no matter what package.
CompileTime.getAllClasses(MyInterface);

// Returns a list of all the classes in the "my.package" package that implement MyInterface.
CompileTime.getAllClasses("my.package", MyInterface);