internal static Type GetCompiledApplicationType (string inputFile, HttpContext context) { ApplicationFileParser parser = new ApplicationFileParser (inputFile, context); AspGenerator generator = new AspGenerator (parser); Type type = generator.GetCompiledType (); dependencies = parser.Dependencies; return type; }
public static Type GetCompiledType (string theme, HttpContext context) { string virtualPath = "~/App_Themes/" + theme + "/"; string physicalPath = context.Request.MapPath (virtualPath); if (!Directory.Exists (physicalPath)) throw new HttpException (String.Format ("Theme '{0}' cannot be found in the application or global theme directories.", theme)); string [] skin_files = Directory.GetFiles (physicalPath, "*.skin"); PageThemeParser ptp = new PageThemeParser (new VirtualPath (virtualPath), context); string[] css_files = Directory.GetFiles (physicalPath, "*.css"); string[] css_urls = new string[css_files.Length]; for (int i = 0; i < css_files.Length; i++) { ptp.AddDependency (css_files [i]); css_urls [i] = virtualPath + Path.GetFileName (css_files [i]); } Array.Sort (css_urls, StringComparer.OrdinalIgnoreCase); ptp.LinkedStyleSheets = css_urls; AspComponentFoundry shared_foundry = new AspComponentFoundry (); ptp.RootBuilder = new RootBuilder (); string skin_file_url; for (int i = 0; i < skin_files.Length; i ++) { skin_file_url = VirtualPathUtility.Combine (virtualPath, Path.GetFileName (skin_files [i])); PageThemeFileParser ptfp = new PageThemeFileParser (new VirtualPath (skin_file_url), skin_files[i], context); ptp.AddDependency (skin_files [i]); AspGenerator gen = new AspGenerator (ptfp); ptfp.RootBuilder.Foundry = shared_foundry; gen.Parse (); if (ptfp.RootBuilder.Children != null) foreach (object o in ptfp.RootBuilder.Children) { if (!(o is ControlBuilder)) continue; ptp.RootBuilder.AppendSubBuilder ((ControlBuilder)o); } foreach (string ass in ptfp.Assemblies) if (!ptp.Assemblies.Contains (ass)) ptp.AddAssemblyByFileName (ass); } PageThemeCompiler compiler = new PageThemeCompiler (ptp); return compiler.GetCompiledType (); }
internal override Type CompileIntoType () { AspGenerator generator = new AspGenerator (this); return generator.GetCompiledType (); }
public static Type CompileApplicationType (ApplicationFileParser parser) { AspGenerator generator = new AspGenerator (parser); return generator.GetCompiledType (); }
public void AddChildren (AspGenerator generator) { this.generator = generator; int index = str.IndexOf ("<%"); if (index > 0) DoParseExpressions (str); else DoParse (str); }
protected override TemplateParser CreateParser (VirtualPath virtualPath, string inputFile, HttpContext context) { string vp = VirtualPathUtility.AppendTrailingSlash (virtualPath.Original); string physicalPath = virtualPath.PhysicalPath; if (!Directory.Exists (physicalPath)) throw new HttpException (String.Concat ("Theme '", virtualPath.Original ,"' cannot be found in the application or global theme directories.")); PageThemeParser ptp = new PageThemeParser (virtualPath, context); string[] css_files = Directory.GetFiles (physicalPath, "*.css"); string[] css_urls = new string [css_files.Length]; for (int i = 0; i < css_files.Length; i++) { css_urls [i] = VirtualPathUtility.Combine (vp, Path.GetFileName (css_files [i])); ptp.AddDependency (css_urls [i]); } Array.Sort (css_urls, StringComparer.OrdinalIgnoreCase); ptp.LinkedStyleSheets = css_urls; AspComponentFoundry shared_foundry = new AspComponentFoundry (); ptp.RootBuilder = new RootBuilder (); string [] skin_files = Directory.GetFiles (physicalPath, "*.skin"); string skin_file_url; AspGenerator generator; foreach (string skin_file in skin_files) { skin_file_url = VirtualPathUtility.Combine (vp, Path.GetFileName (skin_file)); PageThemeFileParser ptfp = new PageThemeFileParser (new VirtualPath (skin_file_url), skin_file, context); ptp.AddDependency (skin_file_url); generator = new AspGenerator (ptfp, shared_foundry); generator.Parse (); if (ptfp.RootBuilder.Children != null) foreach (object o in ptfp.RootBuilder.Children) { if (!(o is ControlBuilder)) continue; ptp.RootBuilder.AppendSubBuilder ((ControlBuilder)o); } foreach (string ass in ptfp.Assemblies) if (!ptp.Assemblies.Contains (ass)) ptp.AddAssemblyByFileName (ass); } return ptp; }