/// <summary> /// Apply the function in the evaluator for executing. Hey dude! If you don't found any reference to this function, don't delete it! Is called using dynamic. /// </summary> /// <param name="e">The e.</param> /// <param name="self">The self.</param> /// <param name="args">The arguments.</param> /// <returns></returns> public virtual dynamic Apply(JavascriptEvaluator e, dynamic self, params dynamic[] args) { var originalContext = e.environment; var originalReturningState = e.isReturning; dynamic result = null; try { e.environment = root.AddVariable("this", self); e.isReturning = false; int i = 0; foreach (var p in parameters.Tokens) { e.AddVariable(p.Text, args[i++]); } e.Eval(body); result = e.result; } finally { e.result = null; e.environment = originalContext; e.isReturning = originalReturningState; } return(result); }
/// <summary> /// Executes the specified container. /// </summary> /// <param name="container">The container.</param> public void Execute(TemplateContainer container) { string source = JavascriptEvaluator.ReplaceString(this.Source, container); string target = JavascriptEvaluator.ReplaceString(this.Target, container); string actionType = this.ActionType.ToLower(); if (actionType.Equals("createfolder")) { this.CreateFolder(target); } else if (actionType.Equals("deletefolder")) { this.DeleteFolder(target); } else if (actionType.Equals("copyfile")) { this.CopyFile(source, target); } else if (actionType.Equals("copyfileavoid")) { this.CopyFileAvoid(source, target); } else if (actionType.Equals("deletefile")) { this.DeleteFile(target); } else if (actionType.Equals("transform")) { this.Transform(container, source, target); } else if (actionType.Equals("transformavoid")) { this.TransformAvoid(container, source, target); } }
/// <summary> /// Transforms the specified container. /// </summary> /// <param name="container">The container.</param> /// <param name="source">The source.</param> /// <param name="target">The target.</param> private void Transform(TemplateContainer container, string source, string target) { string file = this.GetFile(source); if (!string.IsNullOrEmpty(file)) { container.AddAttribute("IteratorCurrentSource", source); container.AddAttribute("IteratorCurrentTarget", target); string transformed = TemplateTransformer.Transform(file); string outputFile = JavascriptEvaluator.ReplaceString(transformed, container); StringUtil.WriteFile(target, outputFile); } }
private void button2_Click(object sender, EventArgs e) { TemplateContainer container = new TemplateContainer(); container.AddAttribute("varprueba", "prueba"); container.AddAttribute("vartrans", "transformación"); container.AddAttribute("i", 7); string s = "El resultado es [%if(i > 7)%]cierto[%else%]falso"; s = TemplateTransformer.Transform(s); s = JavascriptEvaluator.ReplaceString(s, container); this.richTextBox2.Text = s; }
public static string Test(string s, string expected, TemplateContainer container) { string result = JavascriptEvaluator.RunScript(s, container).ToString(); if (result.Equals(expected)) { return(string.Format("OK '{0}' = {1}\n", s, result)); } else { return(string.Format("Error executing '{0}'. Expected {1} but obtained {2}\n", s, expected, result)); } }
private void button1_Click(object sender, EventArgs e) { StructureParser parser = new StructureParser(this.richTextBox1.Text); StructureTree root = parser.Parse(); MetaModel metamodel = root.Build(); MetaTemplateConverter converter = new MetaTemplateConverter(); TemplateContainer container = converter.Convert(metamodel); string template = "Domains:\n========\n[%foreach(domain in Domains)%]\n Id: [%domain.Id%]\n Name: [%domain.Name%]\n IsIdentity: [%domain.IsIdentity%]\n DataType: [%domain.DataType%]\n Length: [%domain.DataTypeLength%]\n Decimals: [%domain.DataTypeDecimals%]\n[%end%]\n"; template += "Tables:\n=======\n[%foreach(table in Tables)%]\n Id: [%table.Id%]\n Name: [%table.Name%]\n LogicalName: [%table.LogicalName%]\n PhysicalName: [%table.PhysicalName%]\n [\n[%foreach(column in table.Columns)%] TableId: [%column.TableId%]\n Ix: [%column.Ix%]\n Name: [%column.Name%]\n LogicalName: [%column.LogicalName%]\n PhysicalName: [%column.PhysicalName%]\n IsPrimaryKey: [%column.IsPrimaryKey%]\n IsNullable: [%column.IsNullable%]\n IsIdentity: [%column.IsIdentity%]\n DataType: [%column.DataType%]\n Length: [%column.DataTypeLength%]\n Decimals: [%column.DataTypeDecimals%]\n IsForeignKey: [%column.IsForeignKey%]\n [%end%]\n][%end%]\n"; template = TemplateTransformer.Transform(template); template = JavascriptEvaluator.ReplaceString(template, container); this.richTextBox2.Text = template; }
/// <summary> /// Apply the function in the evaluator for executing. Hey dude! If you don't found any reference to this function, don't delete it! Is called using dynamic. /// </summary> /// <param name="e">The e.</param> /// <param name="self">The self.</param> /// <param name="args">The arguments.</param> /// <returns></returns> public virtual dynamic Apply(JavascriptEvaluator e, dynamic self, params dynamic[] args) { var originalContext = e.environment; var originalReturningState = e.isReturning; dynamic result = null; try { e.environment = root.AddVariable("this", self); e.isReturning = false; int i = 0; foreach (var p in parameters.Tokens) e.AddVariable(p.Text, args[i++]); e.Eval(body); result = e.result; } finally { e.result = null; e.environment = originalContext; e.isReturning = originalReturningState; } return result; }