static HotGlueHandler() { var debug = ((CompilationSection)ConfigurationManager.GetSection(@"system.web/compilation")).Debug; var config = HotGlueConfiguration.Load(debug); _configuration = LoadedConfiguration.Load(config); _locator = new GraphReferenceLocator(_configuration); }
public HelperContext(LoadedConfiguration configuration, IReferenceLocator locator, bool debug) { Configuration = configuration; Locator = locator; Debug = debug; DefaultOptions = new HelperOptions { GenerateHeaderAndFooter = true }; }
public static void RewriteContent( LoadedConfiguration configuration, IReferenceLocator locator, string root, string fullPath, Func<String,String> queryString, Action<String,String> returnPhysicalFile, Action<String,String> returnTransformedContent ) { var contentType = "application/x-javascript"; var extension = Path.GetExtension(fullPath); var compiledExtension = configuration.Compilers.Any(x => x.Extensions.Contains(extension)); if (!compiledExtension && File.Exists(fullPath)) { returnPhysicalFile(fullPath, contentType); return; } // find references Reference.TypeEnum type = fullPath.EndsWith("-module") ? Model.Reference.TypeEnum.Module : fullPath.EndsWith("-glue") ? Model.Reference.TypeEnum.App : fullPath.EndsWith("-gen") ? Model.Reference.TypeEnum.Generated : Model.Reference.TypeEnum.Dependency; var package = Package.Build(configuration, root); string content = null; if (fullPath.EndsWith("js-require")) { content = package.CompileStitch(); } else { var name = queryString("name"); var reference = SystemReference.Build(type, fullPath, root, name ?? ""); switch (type) { case Model.Reference.TypeEnum.App: var references = locator.Load(root, reference); content = package.Compile(references); break; case Model.Reference.TypeEnum.Dependency: content = package.CompileDependency(reference); break; case Model.Reference.TypeEnum.Module: case Model.Reference.TypeEnum.Generated: content = package.CompileModule(reference); break; default: throw new ArgumentOutOfRangeException(); } } returnTransformedContent(content, contentType); }