Bundling.Extensions.Transforms.LessTransform.Process C# (CSharp) Метод

Process() публичный Метод

public Process ( BundleContext context, BundleResponse bundle ) : void
context BundleContext
bundle BundleResponse
Результат void
		public void Process(BundleContext context, BundleResponse bundle)
		{
			context.HttpContext.Response.Cache.SetLastModifiedFromFileDependencies();

			var content = new StringBuilder();

			var bundleFiles = new List<BundleFile>();

			foreach (var bundleFile in bundle.Files)
			{
                var lessParser = new Parser();
                ILessEngine lessEngine = this.CreateLessEngine(lessParser);

				bool foundMinimizedVersion = false;
				bundleFiles.Add(bundleFile);

				if (BundleTable.EnableOptimizations)
				{
					var ext = Path.GetExtension(bundleFile.VirtualFile.VirtualPath);
					if (ext != null && ext.Equals(".less", StringComparison.InvariantCultureIgnoreCase))
					{
						var filepath = bundleFile.VirtualFile.VirtualPath;
						var minimizedFileName = string.Format(
							"{0}.min.css",
							filepath.Substring(0, filepath.LastIndexOf(ext, StringComparison.Ordinal)));
						var virtualPathProvider = HostingEnvironment.VirtualPathProvider;
						if (virtualPathProvider.FileExists(minimizedFileName))
						{
							var minimizedFile = virtualPathProvider.GetFile(minimizedFileName);
							foundMinimizedVersion = true;
							using (var reader = new StreamReader(minimizedFile.Open()))
							{
								content.Append(reader.ReadToEnd());
								content.AppendLine();

								bundleFiles.Add(new BundleFile(minimizedFile.VirtualPath, minimizedFile));
							}
						}
					}
				}

				if (!foundMinimizedVersion)
				{
					this.SetCurrentFilePath(lessParser, bundleFile.VirtualFile.VirtualPath);

					using (var reader = new StreamReader(VirtualPathProvider.OpenFile(bundleFile.VirtualFile.VirtualPath)))
					{
					    var fileContent = reader.ReadToEnd();
                        content.Append(lessEngine.TransformToCss(fileContent, bundleFile.VirtualFile.VirtualPath));
						content.AppendLine();

						bundleFiles.AddRange(this.GetFileDependencies(lessParser).Select(f => new BundleFile(f.VirtualPath, f)));
					}
				}
			}

			if (BundleTable.EnableOptimizations)
			{
				// include imports in bundle files to register cache dependencies
				bundle.Files = bundleFiles.Distinct().ToList();
			}

			bundle.ContentType = "text/css";
			bundle.Content = content.ToString();
		}