public CommentAttributes(bool advanced, string scriptModule, CommentAttributeScriptMethod scriptMethod, string scriptProperty, string scriptEvent, string returns, bool published, List <CommentAttributeParameter> parameters, List <string> seeAlso, bool uxProperty, string topic, bool deprecated, bool experimental) { Advanced = advanced; ScriptModule = scriptModule; ScriptMethod = scriptMethod; ScriptProperty = scriptProperty; ScriptEvent = scriptEvent; Returns = returns; Published = published; Params = parameters ?? new List <CommentAttributeParameter>(); SeeAlso = seeAlso ?? new List <string>(); UxProperty = uxProperty; Topic = topic; Deprecated = deprecated; Experimental = experimental; }
private static CommentAttributes ParseMacros(IList <Tuple <string, StringBuilder> > macros) { var macroNames = new HashSet <string>(macros.Select(e => e.Item1.ToLowerInvariant())); var macrosByKey = new Dictionary <string, List <string> >(); foreach (var macro in macros) { var key = macro.Item1.ToLowerInvariant(); if (!macrosByKey.ContainsKey(key)) { macrosByKey.Add(key, new List <string>()); } macrosByKey[key].Add(macro.Item2.ToString()); } var advanced = macroNames.Contains("@advanced"); var scriptModule = GetMacroValue(macrosByKey, "@scriptmodule", true); var scriptProperty = GetMacroValue(macrosByKey, "@scriptproperty", true); var scriptEvent = GetMacroValue(macrosByKey, "@scriptevent", true); var returns = GetMacroValue(macrosByKey, "@return"); var published = macroNames.Contains("@published"); var uxProperty = macroNames.Contains("@ux-property"); var topic = GetMacroValue(macrosByKey, "@topic"); var deprecated = macroNames.Contains("@deprecated"); var experimental = macroNames.Contains("@experimental"); CommentAttributeScriptMethod scriptMethod = null; var scriptMethodValue = GetMacroValue(macrosByKey, "@scriptmethod"); if (!string.IsNullOrWhiteSpace(scriptMethodValue)) { if (scriptMethodValue.Contains("(")) { var name = scriptMethodValue.Substring(0, scriptMethodValue.IndexOf("(")); var paramValue = scriptMethodValue.Substring(scriptMethodValue.IndexOf("(") + 1); if (paramValue.Contains(")")) { paramValue = paramValue.Substring(0, paramValue.IndexOf(")")); } scriptMethod = new CommentAttributeScriptMethod(name, paramValue.Trim().Split(',').Select(e => e.Trim()).ToList()); } else { scriptMethod = new CommentAttributeScriptMethod(scriptMethodValue, new List <string>()); } } var paramValues = macrosByKey.ContainsKey("@param") ? macrosByKey["@param"] : new List <string>(); var parameters = new List <CommentAttributeParameter>(); foreach (var value in paramValues) { var paramName = value.Contains(" ") ? value.Substring(0, value.IndexOf(" ", StringComparison.Ordinal)) : value; var paramDesc = value.Contains(" ") ? value.Substring(value.IndexOf(" ", StringComparison.Ordinal)).Trim() : null; parameters.Add(new CommentAttributeParameter(paramName, paramDesc)); } var seeAlso = macrosByKey.ContainsKey("@seealso") ? macrosByKey["@seealso"] : new List <string>(); if (macrosByKey.ContainsKey("@see")) { seeAlso.AddRange(macrosByKey["@see"]); } return(new CommentAttributes(advanced, scriptModule, scriptMethod, scriptProperty, scriptEvent, returns, published, parameters, seeAlso, uxProperty, topic, deprecated, experimental)); }