CSharpUtils.Templates.TemplateParser.HandleLevel_Root C# (CSharp) Метод

HandleLevel_Root() публичный Метод

public HandleLevel_Root ( ) : ParserNode
Результат ParserNode
		public ParserNode HandleLevel_Root()
		{
			var ParserNodeContainer = new ParserNodeContainer();

			try
			{
				while (Tokens.HasMore)
				{
					//Console.WriteLine(CurrentToken);
					switch (CurrentTokenType)
					{
						case "RawTemplateToken":
							ParserNodeContainer.Add(new ParserNodeLiteral()
							{
								Text = ((RawTemplateToken)CurrentToken).Text,
							});
							Tokens.MoveNext();
							break;
						case "OpenTagTemplateToken":
							string OpenType = CurrentToken.Text;

							Tokens.MoveNext();

							switch (OpenType)
							{
								case "{{":
									ParserNodeContainer.Add(new ParserNodeOutputExpression() { Parent = HandleLevel_Tag() });
									Tokens.ExpectValueAndNext("}}");
									break;
								case "{%": {
									ParserNode ParserNode = HandleLevel_TagSpecial();
									ParserNodeContainer.Add(ParserNode);
									//ParserNode.Dump();
								} break;
							}
							break;
						default:
							throw (new Exception(String.Format("Unprocessed Token Type '{0}'('{1}')", CurrentTokenType, CurrentToken.Text)));
					}
				}
			}
			catch (Finalize_HandlingLevel_Root)
			{
			}

			return ParserNodeContainer;
		}
	}

Usage Example

Пример #1
0
        protected void RenderCodeTo(TextWriter TextWriter)
        {
            var TemplateHandler = new TemplateParser(Tokens, TextWriter);
            var Context         = new ParserNodeContext(TextWriter, TemplateFactory);

            TemplateHandler.Reset();
            var ParserNode = TemplateHandler.HandleLevel_Root();

            //OptimizedParserNode.Dump();
            Context.WriteLine("using System;");
            Context.WriteLine("using System.Collections.Generic;");
            Context.WriteLine("using CSharpUtils.Templates;");
            Context.WriteLine("using CSharpUtils.Templates.Runtime;");
            Context.WriteLine("using CSharpUtils.Templates.TemplateProvider;");
            Context.WriteLine("");
            Context.WriteLine("namespace CSharpUtils.Templates.CompiledTemplates {");
            Context.Indent(delegate()
            {
                Context.WriteLine("class CompiledTemplate_TempTemplate : TemplateCode {");

                Context.Indent(delegate()
                {
                    Context.WriteLine("public CompiledTemplate_TempTemplate(TemplateFactory TemplateFactory = null) : base(TemplateFactory) { }");
                    Context.WriteLine("");

                    Context.WriteLine("override public void SetBlocks(Dictionary<String, RenderDelegate> Blocks) {");
                    Context.Indent(delegate()
                    {
                        foreach (var BlockPair in TemplateHandler.Blocks)
                        {
                            Context.WriteLine(String.Format("SetBlock(Blocks, {0}, Block_{1});", StringUtils.EscapeString(BlockPair.Key), BlockPair.Key));
                        }
                    });
                    Context.WriteLine("}");
                    Context.WriteLine("");

                    Context.WriteLine("override protected void LocalRender(TemplateContext Context) {");
                    Context.Indent(delegate()
                    {
                        ParserNode.OptimizeAndWrite(Context);
                    });
                    Context.WriteLine("}");                     // Method

                    foreach (var BlockPair in TemplateHandler.Blocks)
                    {
                        Context.WriteLine("");
                        Context.WriteLine("public void Block_" + BlockPair.Key + "(TemplateContext Context) {");
                        Context.Indent(delegate()
                        {
                            BlockPair.Value.OptimizeAndWrite(Context);
                        });
                        Context.WriteLine("}");                         // Method
                    }
                });

                Context.WriteLine("}");                 // class
            });

            Context.WriteLine("}");             // namespace
        }
All Usage Examples Of CSharpUtils.Templates.TemplateParser::HandleLevel_Root