Example #1
0
 static HotGlueHandler()
 {
     var debug = ((CompilationSection)ConfigurationManager.GetSection(@"system.web/compilation")).Debug;
     var config = HotGlueConfiguration.Load(debug);
     _configuration = LoadedConfiguration.Load(config);
     _locator = new GraphReferenceLocator(_configuration);
 }
Example #2
0
 public HelperContext(LoadedConfiguration configuration, IReferenceLocator locator, bool debug)
 {
     Configuration = configuration;
     Locator = locator;
     Debug = debug;
     DefaultOptions = new HelperOptions
         {
             GenerateHeaderAndFooter = true
         };
 }
Example #3
0
        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);
        }