- combres-30362.zip
- Combres
- trunk
- Combres
- Libraries
- EcmaScript.NET.modified.dll
- Fasterflect.dll
- log4net.dll
- Yahoo.Yui.Compressor.dll
- Samples
- MvcSample
- App_Data
- Content
- images
- ui-bg_diagonals-thick_18_b81900_40x40.png
- ui-bg_diagonals-thick_20_666666_40x40.png
- ui-bg_flat_10_000000_40x100.png
- ui-bg_glass_100_f6f6f6_1x400.png
- ui-bg_glass_100_fdf5ce_1x400.png
- ui-bg_glass_65_ffffff_1x400.png
- ui-bg_gloss-wave_35_f6a828_500x100.png
- ui-bg_highlight-soft_100_eeeeee_1x100.png
- ui-bg_highlight-soft_75_ffe45c_1x100.png
- ui-icons_222222_256x240.png
- ui-icons_228ef1_256x240.png
- ui-icons_ef8c08_256x240.png
- ui-icons_ffd27a_256x240.png
- ui-icons_ffffff_256x240.png
- jquery-ui-1.7.2.custom.css
- Site.css
- Controllers
- Default.aspx
- Default.aspx.cs
- Global.asax
- Global.asax.cs
- MvcSample.csproj
- Properties
- Scripts
- Views
- Web.config
- WebFormSample
- Combres_Binary.zip
- Combres.dll
- Combres.License.txt
- EcmaScript.NET.modified.dll
- Fasterflect.dll
- log4net.dll
- Yahoo.Yui.Compressor.dll
- Combres_Source.zip
- API
- Samples.zip
- Samples
- MvcSample
- App_Data
- Content
- images
- ui-bg_diagonals-thick_18_b81900_40x40.png
- ui-bg_diagonals-thick_20_666666_40x40.png
- ui-bg_flat_10_000000_40x100.png
- ui-bg_glass_100_f6f6f6_1x400.png
- ui-bg_glass_100_fdf5ce_1x400.png
- ui-bg_glass_65_ffffff_1x400.png
- ui-bg_gloss-wave_35_f6a828_500x100.png
- ui-bg_highlight-soft_100_eeeeee_1x100.png
- ui-bg_highlight-soft_75_ffe45c_1x100.png
- ui-icons_222222_256x240.png
- ui-icons_228ef1_256x240.png
- ui-icons_ef8c08_256x240.png
- ui-icons_ffd27a_256x240.png
- ui-icons_ffffff_256x240.png
- jquery-ui-1.7.2.custom.css
- Site.css
- Controllers
- Default.aspx
- Default.aspx.cs
- Global.asax
- Global.asax.cs
- MvcSample.csproj
- Properties
- Scripts
- Views
- Web.config
- WebFormSample
|
#region License
// Copyright 2009 Buu Nguyen (http://www.buunguyen.net/blog)
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// The latest version of this file can be found at http://combres.codeplex.com
#endregion
using System.Text;
using System.Text.RegularExpressions;
using System.Linq;
namespace Combres.Filters
{
/// <summary>
/// Enables variable support in CSS. Specifically, this filter allows you to have a CSS
/// file like this:
/// <![CDATA[
/// @define
/// {
/// boxColor: #345131;
/// boxWidth: 150px;
/// }
/// p
/// {
/// color: @boxColor;
/// width: @boxWidth;
/// }
/// ]]>
///
/// The filter will make it becomes the following:
/// <![CDATA[
/// p
/// {
/// color: #345131;
/// width: 150px;
/// }
/// ]]>
///
/// Credit to Rory Neopoleon (http://neopoleon.com/home/blogs/neo/archive/2004/03/06/8705.aspx)
/// for the original idea/code.
/// </summary>
public class HandleCssVariablesFilter : ICombresFilter
{
public string TransformSingleContent(Settings settings, Resource resource, string content)
{
if (resource.ParentSet.Type != ResourceType.CSS)
return content;
// Remove comments because it may mess up the result
// @TODO: this duplicates with the work of the minification, but if
// done after the minification, then it affects the combined file
content = Regex.Replace(content, @"/\*.+?\*/", "", RegexOptions.Singleline);
var regex = new Regex(@"@define\s*{(?<define>.*?)}", RegexOptions.Singleline);
var match = regex.Match(content);
if (!match.Success)
return content;
var value = match.Groups["define"].Value;
var variables = value.Split(';');
var sb = new StringBuilder(content);
variables.ToList().ForEach(var =>
{
if (string.Empty == var.Trim())
return;
var pair = var.Split(':');
sb.Replace("@" + pair[0].Trim(), pair[1].Trim());
});
// Remove the variables declaration, it's not needed in the final output
sb.Replace(match.ToString(), string.Empty);
return sb.ToString();
}
public string TransformCombinedContent(Settings settings, ResourceSet set, string content)
{
return content;
}
public string TransformMinifiedContent(Settings settings, ResourceSet set, string content)
{
return content;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.