使用条件变量在运行时使用XmlCompiler定义

时间:2016-09-12 08:18:30

标签: dsl haxe hexmachina

关于conditional parsing on hexIoC的快速提问。

据我所知,hexIoC支持在编译时和运行时进行DSL解析,具有多次传递。

是否有解决方案,在运行时使用带有条件变量值的XmlCompiler?

类似的东西:

var useHlsJs:Bool = true;
#if js
useHlsJs = useHlsJs && !this.isMobile();
#end
applicationAssembler = XmlCompiler.readXmlFile( "videoplayer/configuration/context.xml", null, ["useHlsJs" => useHlsJs] );

1 个答案:

答案 0 :(得分:3)

没有。 我现在解释一下原因。

XmlCompiler解析的Xml在最后生成平台代码(JS,Php ...),为此,它使用条件变量在生成之前解析DSL。

所以简而言之,这意味着在运行时这个条件DSL不再存在。您的DSL已经过解析并转换为平台代码,并且已删除条件变量排除的所有块。

<root name="applicationContext">
    <test if="js" id="s" value="hello JS"/>
    <test if="php" id="s" value="hello PHP"/>
</root>

这将使用 -D php = true

生成
coreFactory.register( "s", "hello PHP" );

如果你想在运行时用条件解析你的DSL的一部分,你应该使用XmlReader而不是XmlCompiler这个部分。