| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- //
- // System.Web.Compilation.PageCompiler
- //
- // Authors:
- // Gonzalo Paniagua Javier ([email protected])
- //
- // (C) 2002 Ximian, Inc (http://www.ximian.com)
- //
- using System;
- using System.IO;
- using System.Web.UI;
- using System.Web.Util;
- namespace System.Web.Compilation
- {
- class PageCompiler
- {
- private PageParser pageParser;
- internal PageCompiler (PageParser pageParser)
- {
- this.pageParser = pageParser;
- }
- public static Type CompilePageType (PageParser pageParser)
- {
- string sourceFile = GenerateSourceFile (pageParser);
- WebTrace.WriteLine ("Compiling {0} ({1})", sourceFile, pageParser.InputFile);
- return TemplateFactory.GetTypeFromSource (pageParser.InputFile, sourceFile);
- }
- private static string GenerateSourceFile (PageParser pageParser)
- {
- string inputFile = pageParser.InputFile;
- Stream input = File.OpenRead (inputFile);
- AspParser parser = new AspParser (inputFile, input);
- parser.Parse ();
- AspGenerator generator = new AspGenerator (inputFile, parser.Elements);
- generator.BaseType = "System.Web.UI.Page";
- generator.ProcessElements ();
- pageParser.Text = generator.GetCode ().ReadToEnd ();
- //FIXME: should get Tmp dir for this application
- string csName = Path.GetTempFileName () + ".cs";
- WebTrace.WriteLine ("Writing {0}", csName);
- StreamWriter output = new StreamWriter (File.OpenWrite (csName));
- output.Write (pageParser.Text);
- output.Close ();
- return csName;
- }
- }
- }
|