ConfigurationExtensions
Represents a helper to construct objects with externally defined
classes and libraries.
using AngleSharp.Css;
using AngleSharp.Dom;
using AngleSharp.Network;
using AngleSharp.Scripting;
using AngleSharp.Services;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.Text;
namespace AngleSharp.Extensions
{
[DebuggerStepThrough]
internal static class ConfigurationExtensions
{
public static Encoding DefaultEncoding(this IConfiguration configuration)
{
if (configuration == null)
configuration = Configuration.Default;
return TextEncoding.Suggest(configuration.GetLanguage());
}
public static CultureInfo GetCulture(this IConfiguration options)
{
return options.Culture ?? CultureInfo.CurrentUICulture;
}
public static CultureInfo GetCultureFromLanguage(this IConfiguration options, string language)
{
try {
return new CultureInfo(language);
} catch (CultureNotFoundException) {
return options.GetCulture();
}
}
public static string GetLanguage(this IConfiguration options)
{
return options.GetCulture().Name;
}
public static TService GetService<TService>(this IConfiguration configuration) where TService : IService
{
foreach (IService service in configuration.Services) {
if (service is TService)
return (TService)service;
}
return default(TService);
}
public static IEnumerable<TService> GetServices<TService>(this IConfiguration configuration) where TService : IService
{
foreach (IService service in configuration.Services) {
if (service is TService)
yield return (TService)service;
}
}
public static string GetCookie(this IConfiguration options, string origin)
{
ICookieService service = options.GetService<ICookieService>();
if (service != null)
return service[origin];
return string.Empty;
}
public static void SetCookie(this IConfiguration options, string origin, string value)
{
ICookieService service = options.GetService<ICookieService>();
if (service != null)
service[origin] = value;
}
public static ISpellCheckService GetSpellCheck(this IConfiguration options, string language)
{
ISpellCheckService result = null;
CultureInfo cultureFromLanguage = options.GetCultureFromLanguage(language);
foreach (ISpellCheckService service in options.GetServices<ISpellCheckService>()) {
if (service.Culture.Equals(cultureFromLanguage))
return service;
if (service.Culture.TwoLetterISOLanguageName == cultureFromLanguage.TwoLetterISOLanguageName)
result = service;
}
return result;
}
public static bool IsStyling(this IConfiguration configuration)
{
return configuration.GetService<IStylingService>() != null;
}
public static IStyleEngine GetStyleEngine(this IConfiguration configuration, string type)
{
return configuration.GetService<IStylingService>()?.GetEngine(type);
}
public static IStyleSheet ParseStyling(this IConfiguration configuration, string source, StyleOptions options, string type = null)
{
return configuration.GetStyleEngine(type ?? MimeTypes.Css)?.Parse(source, options);
}
public static IStyleSheet ParseStyling(this IConfiguration configuration, IResponse response, StyleOptions options, string type = null)
{
return configuration.GetStyleEngine(type ?? MimeTypes.Css)?.Parse(response, options);
}
public static bool IsScripting(this IConfiguration configuration)
{
return configuration.GetService<IScriptingService>() != null;
}
public static IScriptEngine GetScriptEngine(this IConfiguration configuration, string type)
{
return configuration.GetService<IScriptingService>()?.GetEngine(type);
}
public static void RunScript(this IConfiguration configuration, string source, ScriptOptions options, string type = null)
{
configuration.GetScriptEngine(type ?? MimeTypes.DefaultJavaScript)?.Evaluate(source, options);
}
public static void RunScript(this IConfiguration configuration, IResponse response, ScriptOptions options, string type = null)
{
configuration.GetScriptEngine(type ?? MimeTypes.DefaultJavaScript)?.Evaluate(response, options);
}
public static IBrowsingContext NewContext(this IConfiguration options, Sandboxes security = Sandboxes.None)
{
IContextService service = options.GetService<IContextService>();
if (service == null)
return new BrowsingContext(options, security);
return service.Create(options, security);
}
public static IBrowsingContext FindContext(this IConfiguration options, string name)
{
return options.GetService<IContextService>()?.Find(name);
}
public static ICommandService GetCommand(this IConfiguration options, string commandId)
{
foreach (ICommandService service in options.GetServices<ICommandService>()) {
if (service.CommandId.Equals(commandId, StringComparison.OrdinalIgnoreCase))
return service;
}
return null;
}
}
}