Esempio n. 1
0
 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;
 }
Esempio n. 2
0
        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));
        }