internal static SeperatedParameter FromString(string attribute) { var seperatedAttribute = new SeperatedParameter(); var split = attribute.Split(Characters.EqualitySign); seperatedAttribute.Value = split[1].TrimQuotesAndWhiteSpaces(); var innerSplit = split[0].Split(Characters.Asterisk); seperatedAttribute.Name = innerSplit[0].TrimQuotesAndWhiteSpaces(); seperatedAttribute.Index = Int32.Parse(innerSplit[1]); return(seperatedAttribute); }
private void ParseRemainder(string tail) { var splitsy = tail.Split(Characters.Semicolon); if (splitsy.Length == 1) { Value = tail; return; } Value = splitsy[0]; var seperatedParameters = new List <SeperatedParameter>(); for (var i = 1; i <= splitsy.Length - 1; i++) { var attribute = splitsy[i]; if (attribute.IsSeperatedAttribute()) { var seperatedParameter = SeperatedParameter.FromString(attribute); seperatedParameters.Add(seperatedParameter); continue; } KeyValuePair <string, string> parameter; var success = Parameter.TryParse(attribute, out parameter); if (success) { var key = parameter.Key; var value = parameter.Value; if (!Parameters.ContainsKey(key)) { Parameters.Add(key, value); } else { Parameters[key] = value; } } else { var message = string.Format("Param skipped: {0}", attribute); Debug.WriteLine(message); } } if (seperatedParameters.Count > 0) { var mergedParameters = MergeSeperatedParameters(seperatedParameters); Parameters.AddRange(mergedParameters); } }