Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Template/Compiler/Tag/Js.php
<?php

namespace XF\Template\Compiler\Tag;

use
XF\Template\Compiler\Syntax\Tag;
use
XF\Template\Compiler;

class
Js extends AbstractTag
{
    public function
compile(Tag $tag, Compiler $compiler, array $context, $inlineExpected)
    {
       
$context['escape'] = false;
       
$attributes = $tag->attributes;

        if (
$attributes)
        {
            if (!isset(
$attributes['src']) && !isset($attributes['dev']) && !isset($attributes['prod']))
            {
                throw
$tag->exception(\XF::phrase('at_least_one_attribute_of_src_dev_or_prod_must_be_provided'));
            }

            if (isset(
$attributes['src']) && (isset($attributes['dev']) || isset($attributes['prod'])))
            {
                throw
$tag->exception(\XF::phrase('src_attribute_must_not_be_specified_when_using_dev_or_prod_attributes'));
            }

           
$options = $this->compileAttributesAsArray($attributes, $compiler, $context);
           
$indent = $compiler->indent();
           
$optionsCode = "array(" . implode('', $options) . "\n$indent)";

           
$compiler->write("{$compiler->templaterVariable}->includeJs({$optionsCode});");
        }

        if (
$tag->children)
        {
           
$inline = $compiler->compileInlineList($tag->children, $context);
           
$compiler->write("{$compiler->templaterVariable}->inlineJs($inline);");
        }

        return
$inlineExpected ? "''" : false;
    }
}