OpenLiveWriter/utilities/BlogServer/Config/ConfigProperties.cs

44 lines
1.0 KiB
C#

using System;
using System.Collections;
using System.Text.RegularExpressions;
namespace BlogServer.Config
{
public class ConfigProperties
{
public const string BASE_DIR = "baseDir";
private static ConfigProperties s_instance = new ConfigProperties();
public static ConfigProperties Instance { get { return s_instance; }}
private static readonly Regex istringExpr = new Regex(@"\$\{(.+?)\}");
private ConfigProperties()
{}
private readonly Hashtable _values = Hashtable.Synchronized(new Hashtable());
public object this[string name]
{
get { return _values[name]; }
set { _values[name] = value; }
}
public int Count { get { return _values.Count; }}
public string EvaluateInterpolatedString(string istring)
{
return istringExpr.Replace(istring, new MatchEvaluator(Evaluate));
}
private string Evaluate(Match match)
{
object value = this[match.Groups[1].Value];
if (value != null)
return value.ToString();
else
return match.Groups[0].ToString();
}
}
}