- 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;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Linq;
namespace Combres
{
/// <summary>
/// Represents the resource combination settings.
/// </summary>
public class Settings
{
/// <summary>
/// Relative URL of the combiner.
/// </summary>
/// <example>
/// combres.axd
/// </example>
public string Url { get; private set; }
/// <summary>
/// Default version which will be used if <see cref="ResourceSet.DurationInDays"/> is
/// not specified.
/// </summary>
public int? DefaultDuration { get; private set; }
/// <summary>
/// Default version which will be used if <see cref="ResourceSet.Version"/> is
/// not specified.
/// </summary>
public string DefaultVersion { get; private set; }
/// <summary>
/// If true, resource sets' resources won't be cached, compressed and minimized
/// to facilitate debugging.
/// </summary>
public bool DefaultDebugEnabled { get; private set; }
/// <summary>
/// Filter types.
/// </summary>
private readonly List<Type> filterTypes = new List<Type>();
/// <summary>
/// Lists of filter types.
/// </summary>
public List<Type> FilterTypes
{
get { return filterTypes; }
}
/// <summary>
/// Child resource sets.
/// </summary>
private readonly List<ResourceSet> resourceSets = new List<ResourceSet>();
/// <summary>
/// Lists of child resource sets.
/// </summary>
public List<ResourceSet> ResourceSets
{
get { return resourceSets; }
}
internal Settings(XmlElement element)
{
foreach (var node in element.ChildNodes)
{
var child = node as XmlElement;
if (child == null) continue;
if (child.Name == NodeConstants.FiltersName)
LoadFilters(child);
else
LoadResourceSets(child);
}
}
private void LoadFilters(XmlNode element)
{
foreach (var node in element.ChildNodes)
{
if (!(node is XmlElement)) continue;
var typeName = ((node as XmlElement)).GetAttribute(NodeConstants.FilterType);
var type = Type.GetType(typeName);
if (type == null)
throw new FilterNotFoundException(string.Format(
"Filter {0} cannot be found", typeName));
if (!typeof(ICombresFilter).IsAssignableFrom(type))
throw new FilterNotFoundException(string.Format(
"Filter {0} must implements ICombresFilter interface", typeName));
if (!filterTypes.Contains(type))
filterTypes.Add(type);
}
}
private void LoadResourceSets(XmlElement element)
{
Url = element.GetAttribute(NodeConstants.SettingUrl);
DefaultDuration = GetDuration(element, NodeConstants.SettingDefaultDuration);
var version = element.GetAttribute(NodeConstants.SettingDefaultVersion);
DefaultVersion = string.IsNullOrEmpty(version)
? null
: version;
DefaultDebugEnabled = IsDebugEnabled(element, NodeConstants.SettingDefaultDebugEnabled);
foreach (var node in element.ChildNodes)
{
if (node is XmlElement)
{
var rs = new ResourceSet(this, node as XmlElement);
if (!resourceSets.Contains(rs))
resourceSets.Add(rs);
}
}
}
private static bool IsDebugEnabled(XmlElement element, string attributeName)
{
return element.HasAttribute(attributeName)
? bool.Parse(element.GetAttribute(attributeName))
: false;
}
private static int? GetDuration(XmlElement element, string attributeName)
{
return element.HasAttribute(attributeName)
? (int?) int.Parse(element.GetAttribute(attributeName))
: null;
}
public ResourceSet this[string setName]
{
get
{
foreach (var set in resourceSets)
{
if (set.Name == setName)
{
return set;
}
}
return null;
}
}
}
}
|
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.