2016-09-12 7 views
3

Быстрый вопрос о conditional parsing on hexIoC.Использовать условные переменные во время выполнения с помощью XmlCompiler

Как я знаю, hexIoC поддерживает парсинг DSL во время компиляции и времени выполнения, с многопроходным.

Есть ли решение для использования XmlCompiler с условными значениями переменных, определяемыми во время выполнения?

Что-то вроде:

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

ответ

3

No. Позвольте мне объяснить, почему именно сейчас.

Xml, обработанный XmlCompiler, генерирует код платформы (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 = истина

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

Если вы хотите, чтобы разобрать часть вашего DSL с условиями во время выполнения, вы должны использовать XmlReader вместо XmlCompiler для этой части ,

 Смежные вопросы

  • Нет связанных вопросов^_^