KissFrontEnd.dsl(). Related to #157
This commit is contained in:
@@ -5,17 +5,29 @@ import tink.syntaxhub.*;
|
|||||||
import haxe.macro.Expr;
|
import haxe.macro.Expr;
|
||||||
import haxe.macro.Context;
|
import haxe.macro.Context;
|
||||||
import haxe.macro.Expr.ImportMode;
|
import haxe.macro.Expr.ImportMode;
|
||||||
|
using StringTools;
|
||||||
|
|
||||||
class KissFrontend implements FrontendPlugin {
|
class KissFrontend implements FrontendPlugin {
|
||||||
|
|
||||||
public function new() {}
|
var extension:String;
|
||||||
|
var dslFile:String;
|
||||||
|
public function new(extension = "kiss", dslFile = "") {
|
||||||
|
this.extension = extension;
|
||||||
|
this.dslFile = dslFile;
|
||||||
|
}
|
||||||
|
|
||||||
public function extensions()
|
public function extensions() {
|
||||||
return ['kiss'].iterator();
|
return [extension].iterator();
|
||||||
|
}
|
||||||
|
|
||||||
public function parse(file:String, context:FrontendContext):Void {
|
public function parse(file:String, context:FrontendContext):Void {
|
||||||
|
|
||||||
final fields = Kiss.build(file,null,false,context);
|
var files = [file];
|
||||||
|
if (dslFile.length > 0) {
|
||||||
|
files.unshift(dslFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
final fields = Kiss.buildAll(files,null,false,context);
|
||||||
#if debug
|
#if debug
|
||||||
trace(context.name);
|
trace(context.name);
|
||||||
#end
|
#end
|
||||||
@@ -29,6 +41,14 @@ class KissFrontend implements FrontendPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static function use()
|
static function use() {
|
||||||
tink.SyntaxHub.frontends.whenever(new KissFrontend());
|
tink.SyntaxHub.frontends.whenever(new KissFrontend());
|
||||||
|
}
|
||||||
|
|
||||||
|
static function dsl(extension:String, dslFile:String) {
|
||||||
|
if (extension.startsWith(".")) {
|
||||||
|
extension = extension.substr(1);
|
||||||
|
}
|
||||||
|
tink.SyntaxHub.frontends.whenever(new KissFrontend(extension, dslFile));
|
||||||
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user