Kaynağa Gözat

make script type checker plugable

Nicolas Cannasse 4 yıl önce
ebeveyn
işleme
2e868f4e34
1 değiştirilmiş dosya ile 14 ekleme ve 4 silme
  1. 14 4
      hide/comp/ScriptEditor.hx

+ 14 - 4
hide/comp/ScriptEditor.hx

@@ -13,12 +13,13 @@ class ScriptChecker {
 
 	static var TYPES_SAVE = new Map();
 	static var ERROR_SAVE = new Map();
+	static var TYPE_CHECK_HOOKS : Array<ScriptChecker->Void> = [];
 	var ide : hide.Ide;
 	var apiFiles : Array<String>;
-	var config : hide.Config;
-	var documentName : String;
-	var constants : Map<String,Dynamic>;
-	var evalTo : String;
+	public var config : hide.Config;
+	public var documentName : String;
+	public var constants : Map<String,Dynamic>;
+	public var evalTo : String;
 	public var checker(default,null) : hscript.Checker;
 
 	public function new( config : hide.Config, documentName : String, ?constants : Map<String,Dynamic> ) {
@@ -144,6 +145,8 @@ class ScriptChecker {
 		}
 		checker.allowUntypedMeta = true;
 		checker.allowGlobalsDefine = allowGlobalsDefine;
+		for( c in TYPE_CHECK_HOOKS )
+			c(this);
 	}
 
 	function getFields( tpath : String ) {
@@ -386,4 +389,11 @@ class ScriptEditor extends CodeEditor {
 			setError(hscript.Printer.errorToString(error), error.line, error.pmin, error.pmax);
 	}
 
+	public static function register( cl : Class<Dynamic> ) : Bool {
+		@:privateAccess ScriptChecker.TYPE_CHECK_HOOKS.push(function(checker) {
+			Type.createInstance(cl,[checker]);
+		});
+		return true;
+	}
+
 }