Пример #1
0
        public void Generate(CodeGenerator generator)
        {
            generator.EnterElement(this);

            generator.WriteLine(TokenType.Comment, @"//--------------------------------------------------------------");
            generator.WriteLine(TokenType.Comment, @"//              _______      _____      __       ________       ");
            generator.WriteLine(TokenType.Comment, @"//             |  ___  \    /     \    |  |     |___  ___|      ");
            generator.WriteLine(TokenType.Comment, @"//             | |   \  |  /  ___  \   |  |         / /         ");
            generator.WriteLine(TokenType.Comment, @"//             | |___/ /  /  /   \  \  |  |        / /_         ");
            generator.WriteLine(TokenType.Comment, @"//             | |   \ \  \  \___/  /  |  |       /_  /         ");
            generator.WriteLine(TokenType.Comment, @"//             | |___/  |  \       /   |  |____    | /          ");
            generator.WriteLine(TokenType.Comment, @"//             |_______/    \_____/    |_______|   |/           ");
            generator.WriteLine(TokenType.Comment, @"//                                                              ");
            generator.WriteLine(TokenType.Comment, @"//                 V I S U A L    S C R I P T I N G             ");
            generator.WriteLine(TokenType.Comment, @"//--------------------------------------------------------------");
            generator.WriteLine(TokenType.Comment, @"//                                                              ");
            generator.WriteLine(TokenType.Comment, @"// THIS FILE IS AUTO-GENERATED.                                 ");
            generator.WriteLine(TokenType.Comment, @"//                                                              ");
            generator.WriteLine(TokenType.Comment, @"// ANY CHANGES WILL BE LOST NEXT TIME THIS SCRIPT IS GENERATED. ");
            generator.WriteLine(TokenType.Comment, @"//                                                              ");
            generator.WriteLine(TokenType.Comment, @"//--------------------------------------------------------------");

            StartDirectives.Generate(generator);
            if (StartDirectives.Count > 0)
            {
                generator.WriteLine();
            }

            Usings.Generate(generator);

            if (AssemblyCustomAttributes.Count > 0)
            {
                generator.GenerateAttributes(AssemblyCustomAttributes, "assembly");
                generator.WriteLine();
            }

            generator.PushUsingSet(Usings);
            Namespaces.Generate(generator);
            generator.PopUsingSet();

            if (EndDirectives.Count > 0)
            {
                generator.WriteLine();
            }
            EndDirectives.Generate(generator);

            generator.ExitElement();
        }
        public void Generate(CodeGenerator generator)
        {
            generator.EnterElement(this);

            Comments.Generate(generator);

            generator.Write(TokenType.Keyword, "namespace");
            generator.Write(TokenType.Space, ' ');
            var names = Name.Split('.');

            generator.OutputIdentifier(TokenType.Identifier, names[0]);
            for (int i = 1; i < names.Length; i++)
            {
                generator.Write(TokenType.Punctuation, '.');
                generator.OutputIdentifier(TokenType.Identifier, names[i]);
            }
            generator.WriteOpeningBrace();
            generator.Indent++;

            Usings.Generate(generator);

            Usings.Add(new CodeUsingImport(Name));
            generator.PushUsingSet(Usings);

            bool needsBlankLine = false;

            foreach (var type in Types)
            {
                if (needsBlankLine)
                {
                    generator.WriteLine();
                }

                type.Generate(generator);
                needsBlankLine = true;
            }

            generator.PopUsingSet();

            generator.Indent--;
            generator.WriteClosingBrace();

            generator.ExitElement();
        }