protected virtual TParser Parse() { TParser parser = Parser; if (_parsed) { return(parser); } if (!IsDirectoryBuilder) { AspGenerator generator = CreateAspGenerator(parser); if (_reader != null) { generator.Parse(_reader, MapPath(VirtualPathInternal), true); } else { generator.Parse(); } } _parsed = true; return(parser); }
Type LoadType() { if (type != null) { return(type); } HttpContext context = HttpContext.Current; string vpath; string realpath; if (VirtualPathUtility.IsAppRelative(source)) { vpath = source; realpath = context.Request.MapPath(source); } else { vpath = VirtualPathUtility.ToAppRelative(source); realpath = source; } if ((type = CachingCompiler.GetTypeFromCache(realpath)) != null) { return(type); } type = BuildManager.GetCompiledType(vpath); if (type != null) { AspGenerator.AddTypeToCache(null, realpath, type); BuildManager.AddToReferencedAssemblies(type.Assembly); } return(type); }
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); }
internal void AddControl(Type type, IDictionary attributes) { AspGenerator generator = AspGenerator; if (generator == null) { return; } generator.AddControl(type, attributes); }
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); }
protected override Type CompileIntoType () { AspGenerator generator = new AspGenerator (this); return generator.GetCompiledType (); }
internal override Type CompileIntoType() { AspGenerator generator = new AspGenerator(this); return(generator.GetCompiledType()); }
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()); }
public static Type CompileApplicationType(ApplicationFileParser parser) { AspGenerator generator = new AspGenerator(parser); return(generator.GetCompiledType()); }