Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
            }
        }
Esempio n. 3
0
        /// <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);
            }
        }
Esempio n. 4
0
        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;
        }
Esempio n. 5
0
        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));
            }
        }
Esempio n. 6
0
        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;
        }
Esempio n. 7
0
        /// <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;
        }