This commit is contained in:
Jelle Luteijn 2022-05-15 11:19:49 +02:00
parent 16e76d6b31
commit 484dbfc9d9
529 changed files with 113694 additions and 0 deletions

View file

@ -0,0 +1,105 @@
using System;
using System.Configuration;
using AspClassic.Scripting.Runtime;
namespace AspClassic.Scripting.Hosting.Configuration;
public class OptionElement : ConfigurationElement
{
internal sealed class Key : IEquatable<Key>
{
private readonly string _option;
private readonly string _language;
public string Option => _option;
public string Language => _language;
public Key(string option, string language)
{
_option = option;
_language = language;
}
public override bool Equals(object obj)
{
return Equals(obj as Key);
}
public bool Equals(Key other)
{
if (other != null && DlrConfiguration.OptionNameComparer.Equals(_option, other._option))
{
return DlrConfiguration.LanguageNameComparer.Equals(_language, other._language);
}
return false;
}
public override int GetHashCode()
{
return _option.GetHashCode() ^ (_language ?? string.Empty).GetHashCode();
}
public override string ToString()
{
return (string.IsNullOrEmpty(_language) ? string.Empty : (_language + ":")) + _option;
}
}
private const string _Option = "option";
private const string _Value = "value";
private const string _Language = "language";
private static ConfigurationPropertyCollection _Properties = new ConfigurationPropertyCollection
{
new ConfigurationProperty("option", typeof(string), string.Empty, ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey),
new ConfigurationProperty("value", typeof(string), string.Empty, ConfigurationPropertyOptions.IsRequired),
new ConfigurationProperty("language", typeof(string), string.Empty, ConfigurationPropertyOptions.IsKey)
};
protected override ConfigurationPropertyCollection Properties => _Properties;
public string Name
{
get
{
return (string)base["option"];
}
set
{
base["option"] = value;
}
}
public string Value
{
get
{
return (string)base["value"];
}
set
{
base["value"] = value;
}
}
public string Language
{
get
{
return (string)base["language"];
}
set
{
base["language"] = value;
}
}
internal object GetKey()
{
return new Key(Name, Language);
}
}