0028dffd68c353751e13fc1c4ced4c71867c2044
[mono.git] / mcs / class / System.Web / System.Web.Compilation / PageCompiler.cs
1 //
2 // System.Web.Compilation.PageCompiler
3 //
4 // Authors:
5 //      Gonzalo Paniagua Javier (gonzalo@ximian.com)
6 //
7 // (C) 2002 Ximian, Inc (http://www.ximian.com)
8 //
9 using System;
10 using System.Web.UI;
11
12 namespace System.Web.Compilation
13 {
14         class PageCompiler
15         {
16                 private PageParser pageParser;
17
18                 internal PageCompiler (PageParser pageParser)
19                 {
20                         this.pageParser = pageParser;
21                 }
22
23                 public static Type CompilePageType (PageParser pageParser)
24                 {
25                         string sourceFile = GenerateSourceFile (pageParser.InputFile);
26                         return TemplateFactory.GetTypeFromSource (sourceFile);
27                 }
28
29                 private static string GenerateSourceFile (string inputFile)
30                 {
31                         Stream input = File.OpenRead (inputFile);
32                         AspParser parser = new AspParser (inputFile, input);
33                         parser.parse ();
34                         AspGenerator generator = new Generator (args [i], parser.Elements);
35                         //FIXME: set properties here -> base type, interfaces,...
36                         generator.ProcessElements ();
37                         string code = generator.GetCode ().ReadToEnd ();
38                         //FIXME: should get Tmp dir for this application
39                         string csName = Path.GetTempFileName ();
40                         StreamWriter output = File.OpenWrite (csName);
41                         output.Write (code);
42                         output.Close ();
43                         return csName;
44                 }
45         }
46 }