ConfigurationExtensions
A set of useful extensions for Configuration (or derived) objects.
using AngleSharp.Dom.Css;
using AngleSharp.Extensions;
using AngleSharp.Network;
using AngleSharp.Network.Default;
using AngleSharp.Services;
using AngleSharp.Services.Default;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
namespace AngleSharp
{
public static class ConfigurationExtensions
{
public static Configuration With(this IConfiguration configuration, IService service)
{
if (configuration == null)
throw new ArgumentNullException("configuration");
if (service == null)
throw new ArgumentNullException("service");
IEnumerable<IService> services = configuration.Services.Concat(service);
return new Configuration(services, configuration.Events, configuration.Culture);
}
public static Configuration SetCulture(this IConfiguration configuration, string cultureName)
{
if (cultureName == null)
throw new ArgumentNullException("cultureName");
return configuration.SetCulture(new CultureInfo(cultureName));
}
public static Configuration SetCulture(this IConfiguration configuration, CultureInfo culture)
{
if (configuration == null)
throw new ArgumentNullException("configuration");
return new Configuration(configuration.Services, configuration.Events, culture);
}
public static IConfiguration WithCss(this IConfiguration configuration)
{
if (configuration == null)
throw new ArgumentNullException("configuration");
if (!configuration.GetServices<IStylingService>().Any()) {
StylingService stylingService = new StylingService();
stylingService.Register(new CssStyleEngine());
return configuration.With(stylingService);
}
return configuration;
}
public static IConfiguration WithDefaultLoader(this IConfiguration configuration, Action<LoaderService> setup = null, IEnumerable<IRequester> requesters = null)
{
if (configuration == null)
throw new ArgumentNullException("configuration");
if (!configuration.GetServices<ILoaderService>().Any()) {
if (requesters == null)
requesters = new HttpRequester[1] {
new HttpRequester(null)
};
LoaderService loaderService = new LoaderService(requesters);
setup?.Invoke(loaderService);
return configuration.With(loaderService);
}
return configuration;
}
public static IConfiguration WithLocaleBasedEncoding(this IConfiguration configuration)
{
if (configuration == null)
throw new ArgumentException("configuration");
if (!configuration.GetServices<IEncodingService>().Any()) {
LocaleEncodingService service = new LocaleEncodingService();
return configuration.With(service);
}
return configuration;
}
}
}