private static MvcHtmlString RegisterResources(this HtmlHelper helper, SimpleCompressionConfiguration configuration, string[] files, ResourceType resourceType)
        {
            configuration = configuration ?? SimpleCompressionConfiguration.DefaulConfiguration;

            Func<string, string> printFunc = resourceType == ResourceType.Css
                                                 ? (Func<string,string>)TagHelper.PrintCssTag
                                                 : TagHelper.PrintJavascriptTag;

            string tagString = string.Empty;
            if (configuration.Disable)
            {
                foreach (var file in files)
                {
                    tagString += helper.PrintTag(file, printFunc);
                }
            }
            else
            {

                var fileResources = CreateResources(files, configuration);

                var hashCode = fileResources.GetHashCode();
                string extension = resourceType == ResourceType.Css ? ".css" : ".js";
                string fileName = configuration.ClientVersionPrefix + "_" + hashCode + extension;
                string filePath = "~/" + configuration.FolderForCachedResources + fileName;
                ResourceCacheManager.Instance.AddResourcesToCache(fileName, new Tuple<List<FileResource>, SimpleCompressionConfiguration>(fileResources, configuration));
                tagString = helper.PrintTag(filePath, printFunc);
            }
            return new MvcHtmlString(tagString);
        }
 private static FileResourceCollection CreateResources(string[] files, SimpleCompressionConfiguration configuration)
 {
     var resources = new FileResourceCollection();
     foreach (var file in files)
     {
         var resource = new FileResource(file);
         resources.Add(resource);
     }
     return resources;
 }
        private List<string> AddResponseToBuffer(HttpContext context, StringBuilder sb, SimpleCompressionConfiguration configuration, ResourceType resourceType, List<FileResource> files)
        {
            var addedFiles = new List<string>();
            foreach (FileResource fileResource in files)
            {
                string file = fileResource.FilePath;

                file = context.Server.MapPath(file);
                addedFiles.Add(file);
                using (StreamReader input = new StreamReader(file))
                {
                    sb.Append(input.ReadToEnd());
                }
            }
            return addedFiles;
        }
 private string CompressResponse(StringBuilder sb, SimpleCompressionConfiguration configuration, ResourceType resourceType)
 {
     if (configuration.Compress)
     {
         ICompress compressor = configuration.Compressor;
         Func<string, string> compressFunction = resourceType == ResourceType.Css
                                                     ? (Func<string, string>) compressor.CompressCssString
                                                     : compressor.CompressJavascriptString;
         return compressFunction(sb.ToString());
     }
     else
     {
         return sb.ToString();
     }
 }
 public static MvcHtmlString RegisterScripts(this HtmlHelper helper, SimpleCompressionConfiguration configuration, params string[] files)
 {
     return helper.RegisterResources(configuration, files, ResourceType.Javascript);
 }