Example #1
0
        public override void execute(IndentWriter writer, JadeModel model, JadeTemplate template) //throws JadeCompilerException
        {
            try
            {
                Object result = ExpressionHandler.evaluateStringExpression(getValue(), model);
                if (result == null || !buffer)
                {
                    return;
                }
                String str = result.ToString();
                if (escape)
                {
                    str = Utils.escapeHTML(str);
                }
                writer.append(str);

                if (hasBlock())
                {
                    writer.increment();
                    block.execute(writer, model, template);
                    writer.decrement();
                    writer.newline();
                }
            }
            catch (ExpressionException e)
            {
                throw new JadeCompilerException(this, template.getTemplateLoader(), e);
            }
        }
Example #2
0
        // throws JadeCompilerException
        public override void execute(IndentWriter writer, JadeModel model, JadeTemplate template)
        {
            MixinNode mixin = model.getMixin(getName());
            if (mixin == null)
            {
                throw new JadeCompilerException(this, template.getTemplateLoader(), "mixin " + getName() + " is not defined");
            }

            // Clone mixin
            try
            {
                mixin = (MixinNode)mixin.Clone();
            }
            catch (Exception e)
            {
                // Can't happen
                throw;
            }

            if (hasBlock())
            {
                List<BlockNode> injectionPoints = getInjectionPoints(mixin.getBlock());
                foreach (BlockNode point in injectionPoints)
                {
                    point.getNodes().AddLast(block);
                }
            }

            model.pushScope();
            model.put("block", hasBlock());
            writeVariables(model, mixin, template);
            writeAttributes(model, mixin, template);
            mixin.getBlock().execute(writer, model, template);
            model.popScope();
        }
Example #3
0
        //throws JadeCompilerException
        public override void execute(IndentWriter writer, JadeModel model, JadeTemplate template)
        {
            try
            {
                Object result = ExpressionHandler.evaluateStringExpression(getValue(), model);
                if (result == null || !buffer)
                {
                    return;
                }
                String str = result.ToString();
                if (escape)
                {
                    str = Utils.escapeHTML(str);
                }
                writer.append(str);

                if (hasBlock())
                {
                    writer.increment();
                    block.execute(writer, model, template);
                    writer.decrement();
                    writer.newline();
                }

            }
            catch (ExpressionException e)
            {
                throw new JadeCompilerException(this, template.getTemplateLoader(), e);
            }
        }
Example #4
0
        private void writeVariables(JadeModel model, MixinNode mixin, JadeTemplate template)
        {
            List <String> names  = mixin.getArguments();
            List <String> values = arguments;

            if (names == null)
            {
                return;
            }
            for (int i = 0; i < names.Count; i++)
            {
                String key   = names[i];
                Object value = null;
                if (i < values.Count)
                {
                    value = values[i];
                }
                if (value != null)
                {
                    try
                    {
                        value = ExpressionHandler.evaluateExpression(values[i], model);
                    }
                    catch (Exception e)
                    {
                        throw new JadeCompilerException(this, template.getTemplateLoader(), e);
                    }
                }
                if (key != null)
                {
                    model.put(key, value);
                }
            }
        }
Example #5
0
 //throws JadeCompilerException
 public override void execute(IndentWriter writer, JadeModel model, JadeTemplate template)
 {
     Object result;
     try
     {
         result = ExpressionHandler.evaluateExpression(getCode(), model);
     }
     catch (ExpressionException e)
     {
         throw new JadeCompilerException(this, template.getTemplateLoader(), e);
     }
     if (result == null)
     {
         throw new JadeCompilerException(this, template.getTemplateLoader(), "[" + code + "] has to be iterable but was null");
     }
     model.pushScope();
     run(writer, model, result, template);
     model.popScope();
 }
Example #6
0
        public override void execute(IndentWriter writer, JadeModel model, JadeTemplate template)
        //throws JadeCompilerException
        {
            Object result;

            try
            {
                result = ExpressionHandler.evaluateExpression(getCode(), model);
            }
            catch (ExpressionException e)
            {
                throw new JadeCompilerException(this, template.getTemplateLoader(), e);
            }
            if (result == null)
            {
                throw new JadeCompilerException(this, template.getTemplateLoader(), "[" + code + "] has to be iterable but was null");
            }
            model.pushScope();
            run(writer, model, result, template);
            model.popScope();
        }
Example #7
0
 //throws JadeCompilerException
 public override void execute(IndentWriter writer, JadeModel model, JadeTemplate template)
 {
     Object result;
     try
     {
         result = ExpressionHandler.evaluateExpression(value, model);
     }
     catch (ExpressionException e)
     {
         throw new JadeCompilerException(this, template.getTemplateLoader(), e);
     }
     model.put(name, result);
 }
Example #8
0
 public override void execute(IndentWriter writer, JadeModel model, JadeTemplate template)
 //throws JadeCompilerException
 {
     try
     {
         String str = Utils.interpolate(preparedValue, model);
         writer.append(str);
     }
     catch (ExpressionException e)
     {
         throw new JadeCompilerException(this, template.getTemplateLoader(), e);
     }
 }
Example #9
0
        public override void execute(IndentWriter writer, JadeModel model, JadeTemplate template)
        //throws JadeCompilerException
        {
            Object result;

            try
            {
                result = ExpressionHandler.evaluateExpression(value, model);
            }
            catch (ExpressionException e)
            {
                throw new JadeCompilerException(this, template.getTemplateLoader(), e);
            }
            model.put(name, result);
        }
Example #10
0
 //throws JadeCompilerException
 public override void execute(IndentWriter writer, JadeModel model, JadeTemplate template)
 {
     try
     {
         model.pushScope();
         while (ExpressionHandler.evaluateBooleanExpression(value, model).Value)
         {
             block.execute(writer, model, template);
         }
         model.popScope();
     }
     catch (ExpressionException e)
     {
         throw new JadeCompilerException(this, template.getTemplateLoader(), e);
     }
 }
Example #11
0
 public override void execute(IndentWriter writer, JadeModel model, JadeTemplate template)
 //throws JadeCompilerException
 {
     try
     {
         model.pushScope();
         while (ExpressionHandler.evaluateBooleanExpression(value, model).Value)
         {
             block.execute(writer, model, template);
         }
         model.popScope();
     }
     catch (ExpressionException e)
     {
         throw new JadeCompilerException(this, template.getTemplateLoader(), e);
     }
 }
Example #12
0
 //throws JadeCompilerException
 public override void execute(IndentWriter writer, JadeModel model, JadeTemplate template)
 {
     try
     {
         foreach (CaseConditionNode caseConditionNode in caseConditionNodes)
         {
             if (caseConditionNode.isDefault() || checkCondition(model, caseConditionNode))
             {
                 caseConditionNode.execute(writer, model, template);
                 break;
             }
         }
     }
     catch (ExpressionException e)
     {
         throw new JadeCompilerException(this, template.getTemplateLoader(), e);
     }
 }
Example #13
0
 //throws JadeCompilerException
 public override void execute(IndentWriter writer, JadeModel model, JadeTemplate template)
 {
     foreach (IfConditionNode conditionNode in this.conditions)
     {
         try
         {
             if (conditionNode.isDefault() || checkCondition(model, conditionNode.getValue()) ^ conditionNode.isInverse())
             {
                 conditionNode.getBlock().execute(writer, model, template);
                 return;
             }
         }
         catch (ExpressionException e)
         {
             throw new JadeCompilerException(conditionNode, template.getTemplateLoader(), e);
         }
     }
 }
Example #14
0
        private String getInterpolatedAttributeValue(String name, Object attribute, JadeModel model, JadeTemplate template)
        //throws JadeCompilerException
        {
            if (!preparedAttributeValues.ContainsKey(name))
            {
                preparedAttributeValues.Add(name, Utils.prepareInterpolate((String)attribute, true));
            }
            List <Object> prepared = preparedAttributeValues[name];

            try
            {
                return(Utils.interpolate(prepared, model));
            }
            catch (ExpressionException e)
            {
                throw new JadeCompilerException(this, template.getTemplateLoader(), e);
            }
        }
Example #15
0
 //throws JadeCompilerException
 public override void execute(IndentWriter writer, JadeModel model, JadeTemplate template)
 {
     var filter = model.getFilter(getValue());
     String result = textBlock.getValue();
     if (filter != null)
     {
         result = filter.convert(result, attributes, model);
     }
     try
     {
         result = Utils.interpolate(result, model, false);
     }
     catch (ExpressionException e)
     {
         throw new JadeCompilerException(this, template.getTemplateLoader(), e);
     }
     writer.append(result);
 }
Example #16
0
 public override void execute(IndentWriter writer, JadeModel model, JadeTemplate template)
 //throws JadeCompilerException
 {
     try
     {
         foreach (CaseConditionNode caseConditionNode in caseConditionNodes)
         {
             if (caseConditionNode.isDefault() || checkCondition(model, caseConditionNode))
             {
                 caseConditionNode.execute(writer, model, template);
                 break;
             }
         }
     }
     catch (ExpressionException e)
     {
         throw new JadeCompilerException(this, template.getTemplateLoader(), e);
     }
 }
Example #17
0
 public override void execute(IndentWriter writer, JadeModel model, JadeTemplate template)
 //throws JadeCompilerException
 {
     foreach (IfConditionNode conditionNode in this.conditions)
     {
         try
         {
             if (conditionNode.isDefault() || checkCondition(model, conditionNode.getValue()) ^ conditionNode.isInverse())
             {
                 conditionNode.getBlock().execute(writer, model, template);
                 return;
             }
         }
         catch (ExpressionException e)
         {
             throw new JadeCompilerException(conditionNode, template.getTemplateLoader(), e);
         }
     }
 }
Example #18
0
        private String Attributes(JadeModel model, JadeTemplate template)
        {
            StringBuilder sb = new StringBuilder();

            Dictionary <String, Object> mergedAttributes = mergeInheritedAttributes(model);

            foreach (var entry in mergedAttributes)
            {
                try
                {
                    sb.Append(getAttributeString(entry.Key, entry.Value, model, template));
                }
                catch (ExpressionException e)
                {
                    throw new JadeCompilerException(this, template.getTemplateLoader(), e);
                }
            }

            return(sb.ToString());
        }
Example #19
0
        public override void execute(IndentWriter writer, JadeModel model, JadeTemplate template)
        //throws JadeCompilerException
        {
            var    filter = model.getFilter(getValue());
            String result = textBlock.getValue();

            if (filter != null)
            {
                result = filter.convert(result, attributes, model);
            }
            try
            {
                result = Utils.interpolate(result, model, false);
            }
            catch (ExpressionException e)
            {
                throw new JadeCompilerException(this, template.getTemplateLoader(), e);
            }
            writer.append(result);
        }
Example #20
0
        public override void execute(IndentWriter writer, JadeModel model, JadeTemplate template)// throws JadeCompilerException
        {
            MixinNode mixin = model.getMixin(getName());

            if (mixin == null)
            {
                throw new JadeCompilerException(this, template.getTemplateLoader(), "mixin " + getName() + " is not defined");
            }

            // Clone mixin
            try
            {
                mixin = (MixinNode)mixin.Clone();
            }
            catch (Exception e)
            {
                // Can't happen
                throw;
            }

            if (hasBlock())
            {
                List <BlockNode> injectionPoints = getInjectionPoints(mixin.getBlock());
                foreach (BlockNode point in injectionPoints)
                {
                    point.getNodes().AddLast(block);
                }
            }

            model.pushScope();
            model.put("block", hasBlock());
            writeVariables(model, mixin, template);
            writeAttributes(model, mixin, template);
            mixin.getBlock().execute(writer, model, template);
            model.popScope();
        }
Example #21
0
 private void writeVariables(JadeModel model, MixinNode mixin, JadeTemplate template)
 {
     List<String> names = mixin.getArguments();
     List<String> values = arguments;
     if (names == null)
     {
     return;
     }
     for (int i = 0; i < names.Count; i++)
     {
     String key = names[i];
     Object value = null;
     if (i < values.Count)
     {
         value = values[i];
     }
     if (value != null)
     {
         try
         {
             value = ExpressionHandler.evaluateExpression(values[i], model);
         }
         catch (Exception e)
         {
             throw new JadeCompilerException(this, template.getTemplateLoader(), e);
         }
     }
     if (key != null)
     {
         model.put(key, value);
     }
     }
 }
Example #22
0
        private String Attributes(JadeModel model, JadeTemplate template)
        {
            StringBuilder sb = new StringBuilder();

            Dictionary<String, Object> mergedAttributes = mergeInheritedAttributes(model);

            foreach (var entry in mergedAttributes)
            {
                try
                {
                    sb.Append(getAttributeString(entry.Key, entry.Value, model, template));
                }
                catch (ExpressionException e)
                {
                    throw new JadeCompilerException(this, template.getTemplateLoader(), e);
                }
            }

            return sb.ToString();
        }
Example #23
0
 //throws JadeCompilerException
 private String getInterpolatedAttributeValue(String name, Object attribute, JadeModel model, JadeTemplate template)
 {
     if (!preparedAttributeValues.ContainsKey(name))
     {
         preparedAttributeValues.Add(name, Utils.prepareInterpolate((String)attribute, true));
     }
     List<Object> prepared = preparedAttributeValues[name];
     try
     {
         return Utils.interpolate(prepared, model);
     }
     catch (ExpressionException e)
     {
         throw new JadeCompilerException(this, template.getTemplateLoader(), e);
     }
 }