Skip to content

Instantly share code, notes, and snippets.

View nadako's full-sized avatar

Dan Korostelev nadako

View GitHub Profile
@:jsRequire("remote")
extern class Remote {
static function require(module:String):Dynamic;
}
extern class BrowserWindow {
function new();
}
@:jsRequire("browser-window")
class Main {
static function main() {
var s = new Signature<Int->Void>();
}
}
@:build(MyMacro.build())
abstract MapItem(Array<Dynamic>) {
var itemId:Int;
var defId:String;
}
class Main {
static function main() {
var item = new MapItem();
item.itemId = 10;
@nadako
nadako / LocaleMacro.hx
Created July 21, 2015 14:42
Type-safe localization.
import haxe.macro.Context;
import haxe.macro.Expr;
import haxe.macro.Type;
using haxe.macro.Tools;
class LocaleMacro {
static function build():Array<Field> {
var fields = Context.getBuildFields();
var newFields:Array<Field> = [];
for (field in fields) {
@nadako
nadako / Data.hx
Last active August 29, 2015 14:24
import js.html.ArrayBuffer;
import js.html.DataView;
import DataTypes;
@:dce
@:build(DataMacro.build())
abstract Data(DataView) {
var byte:Uint8;
var int:Int32;
var float:Float32;
@nadako
nadako / Main.hx
Created June 24, 2015 19:36
Haxe + SDL = native love \o/
class Main {
static function main() {
Sdl.init(Sdl.INIT_EVERYTHING);
var win = Sdl.createWindow("Hello", 100, 100, 800, 600, Sdl.WINDOW_OPENGL);
var ren = Sdl.createRenderer(win, -1, Sdl.RENDERER_ACCELERATED);
var bmp = Sdl.loadBMP("test.bmp");
var tex = Sdl.createTextureFromSurface(ren, bmp);
Sdl.freeSurface(bmp);
for (i in 0...3) {
@nadako
nadako / Choice.hx
Created April 23, 2015 12:26
Poor man's enum
#if macro
import haxe.macro.Context;
import haxe.macro.Expr;
import haxe.macro.Type;
using haxe.macro.Tools;
#end
abstract Choice<T>(T) from T {
public macro function match(self, match) {
switch (match.expr) {
@nadako
nadako / DI.hx
Created April 16, 2015 19:04
Simple macro-based dependency injection system based on factory functions
import haxe.macro.Expr;
import haxe.Constraints.Function;
#if macro
import haxe.macro.Context;
import haxe.macro.Type;
using haxe.macro.Tools;
#end
class DI {
using Tools;
class Main {
static function main() {
var a = haxe.ds.Option.Some(42);
var s = a.extract(Some(v) => {value: v});
trace(s);
}
}
import haxe.Constraints.Function;
@:pythonImport("flask", "Flask")
extern class Flask {
function new(module:String);
function run():Void;
function route<T:Function>(path:String):T->T;
}
class Main {