Ejemplo n.º 1
0
        public DekiScriptDom Visit(DekiScriptDomElement expr, DekiScriptOptimizerState state)
        {
            DekiScriptDomElement.Attribute[] attributes = new DekiScriptDomElement.Attribute[expr.Attributes.Length];
            for (int i = 0; i < expr.Attributes.Length; i++)
            {
                attributes[i] = Optimize(expr.Attributes[i], state);
            }
            DekiScriptDom node = expr.Node.VisitWith(this, state);

            return(new DekiScriptDomElement(expr.Location, expr.Prefix, expr.Name, attributes, node));
        }
 private void EvaluateNamespaceDefinitionAttribute(DekiScriptDomElement.Attribute expr, DekiScriptEvalContext context, DekiScriptEnv env)
 {
     if (expr.IsNamespaceDefinition)
     {
         DekiScriptLiteral name  = expr.Name.VisitWith(DekiScriptExpressionEvaluation.Instance, env);
         DekiScriptLiteral value = expr.Value.VisitWith(DekiScriptExpressionEvaluation.Instance, env);
         if (!value.IsNil)
         {
             if (string.IsNullOrEmpty(expr.Prefix))
             {
                 context.Namespaces.AddNamespace(string.Empty, value.AsString());
             }
             else
             {
                 context.Namespaces.AddNamespace(XmlConvert.EncodeLocalName(name.AsString() ?? string.Empty), value.AsString());
             }
         }
     }
 }
 private void EvaluateAttribute(DekiScriptDomElement.Attribute expr, DekiScriptEvalContext context, XmlElement element, DekiScriptEnv env)
 {
     if (!expr.IsNamespaceDefinition)
     {
         try {
             string name = expr.Name.VisitWith(DekiScriptExpressionEvaluation.Instance, env).AsString();
             if (name != null)
             {
                 name = XmlConvert.EncodeLocalName(name);
                 string value = expr.Value.VisitWith(DekiScriptExpressionEvaluation.Instance, env).AsString();
                 if (value != null)
                 {
                     element.SetAttribute(name, context.Namespaces.LookupNamespace(expr.Prefix), value);
                 }
             }
         } catch (Exception e) {
             context.InsertExceptionMessageBeforeNode(env, element, null, expr.Location, e);
         }
     }
 }
Ejemplo n.º 4
0
        private DekiScriptDomElement.Attribute Optimize(DekiScriptDomElement.Attribute expr, DekiScriptOptimizerState state)
        {
            DekiScriptExpression value = expr.Value.VisitWith(DekiScriptExpressionOptimizer.Instance, state);

            return(new DekiScriptDomElement.Attribute(expr.Location, expr.Prefix, expr.Name, value));
        }