44 lines
1.0 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|