public static Parameters Parse(string str)
{
if (str == null) throw new ArgumentNullException("str");
str = str.Trim();
if (str.Length == 0)
return new Parameters();
var dict = ParsePairs(str).ToDictionary(
p => p.Key, p => p.Value, StringComparer.OrdinalIgnoreCase);
Parameters parameters;
try
{
parameters = new Parameters
{
_provider = Providers.ProviderFactory.getProvider(dict.TryPop("provider"), dict.TryPop("project")),
User = dict.TryPop("user"),
Status = dict.TryPop("status"),
CommitTemplate = dict.TryPop("commitTemplate"),
};
string noCommitFinished = dict.TryPop("noOnCommitFinished");
if (noCommitFinished != null && (noCommitFinished == "true" || noCommitFinished == "1"))
{
parameters.NoOnCommitFinished = true;
}
parameters._project = parameters._provider.ProjectName;
}
catch (ArgumentException e)
{
throw new ParametersParseException(e.Message, e);
}
if (dict.Any())
{
throw new ParametersParseException(string.Format(
"Parameter '{0}' is unknown.", dict.Keys.First()));
}
return parameters;
}