示例#1
0
        private static void WriteDocs(IDocs docs, StringBuilder sb, string padding, bool descriptionOnly = false)
        {
            sb.AppendLine($"{padding}/// <summary>");
            sb.AppendLine(FormatDocs(docs.Description, padding));
            sb.AppendLine($"{padding}/// </summary>");

            if (descriptionOnly)
            {
                return;
            }

            if (!string.IsNullOrEmpty(docs.Remarks))
            {
                sb.AppendLine($"{padding}/// <remarks>");
                sb.AppendLine(FormatDocs(docs.Remarks, padding));
                sb.AppendLine($"{padding}/// </remarks>");
            }

            foreach (var param in docs.GetParamDocs())
            {
                sb.AppendLine($"{padding}/// <param name=\"{param.Key}\">");
                sb.AppendLine(FormatDocs(param.Value, padding));
                sb.AppendLine($"{padding}/// </param>");
            }

            if (!string.IsNullOrEmpty(docs.ReturnDescription))
            {
                sb.AppendLine($"{padding}/// <returns>");
                sb.AppendLine(FormatDocs(docs.ReturnDescription, padding));
                sb.AppendLine($"{padding}/// </returns>");
            }
        }
示例#2
0
 public UserProfileController(IUserProfile userProfile, IConfiguration config, IHttpContextAccessor accessor, IDocs docs)
 {
     _userprofile = userProfile;
     _config      = config;
     _accessor    = accessor;
     _docs        = docs;
 }
示例#3
0
        private static void ParseDocsFlush(
            IDocs docs,
            ref DocsState state,
            StringBuilder sb,
            string paramName,
            ParamModifier paramModifier)
        {
            switch (state)
            {
            case DocsState.BriefDescription:
                docs.BriefDescription = sb.ToString();
                break;

            case DocsState.Description:
                docs.Description = sb.ToString();
                break;

            case DocsState.Param:
                docs.SetParamDescription(paramName, sb.ToString());
                docs.SetParamModifier(paramName, paramModifier);
                break;

            case DocsState.Remarks:
                docs.Remarks = sb.ToString();
                break;

            case DocsState.Return:
                docs.ReturnDescription = sb.ToString();
                break;
            }

            if (state == DocsState.BriefDescription)
            {
                state = DocsState.Description;
            }
            else
            {
                state = DocsState.None;
            }

            sb.Clear();
        }
示例#4
0
        private static void ParseDocs(string[] lines, int i, IDocs docs)
        {
            while (!lines[i].StartsWith("/*!"))
            {
                i--;
            }

            DocsState     state         = DocsState.None;
            StringBuilder sb            = new StringBuilder(1024);
            string        paramName     = string.Empty;
            ParamModifier paramModifier = ParamModifier.None;

            while (true)
            {
                bool finished = false;

                string trimmedLine = null;

                if (lines[i].Length >= 4)
                {
                    trimmedLine = lines[i].Substring(4);
                }
                else
                {
                    trimmedLine = string.Empty;
                }

                if (trimmedLine.StartsWith("@brief"))
                {
                    state = DocsState.BriefDescription;
                    sb.AppendLine(trimmedLine.Substring("@brief ".Length));
                }
                else if (trimmedLine.StartsWith("@ingroup"))
                {
                    docs.Group = trimmedLine.Substring("@ingroup ".Length).Trim();
                }
                else if (trimmedLine.StartsWith("@param"))
                {
                    ParseDocsFlush(docs, ref state, sb, paramName, paramModifier);

                    state         = DocsState.Param;
                    paramModifier = ParamModifier.None;

                    trimmedLine = trimmedLine.Substring("@param".Length);

                    if (trimmedLine.StartsWith("[in]"))
                    {
                        paramModifier = ParamModifier.In;
                        trimmedLine   = trimmedLine.Substring("[in]".Length);
                    }
                    else if (trimmedLine.StartsWith("[out]"))
                    {
                        paramModifier = ParamModifier.Out;
                        trimmedLine   = trimmedLine.Substring("[out]".Length);
                    }

                    trimmedLine = trimmedLine.Substring(1);

                    int index = trimmedLine.IndexOf(' ');
                    paramName = trimmedLine.Substring(0, index);

                    sb.AppendLine(trimmedLine.Substring(index + 1));
                }
                else if (trimmedLine.StartsWith("@remarks"))
                {
                    state = DocsState.Remarks;
                    sb.AppendLine(trimmedLine.Substring("@remarks ".Length));
                }
                else if (trimmedLine.StartsWith("@return"))
                {
                    ParseDocsFlush(docs, ref state, sb, paramName, paramModifier);
                    state = DocsState.Return;
                    sb.AppendLine(trimmedLine.Substring("@return ".Length));
                }
                else if (lines[i].StartsWith(" */"))
                {
                    ParseDocsFlush(docs, ref state, sb, paramName, paramModifier);
                    finished = true;
                }
                else if (trimmedLine == string.Empty || trimmedLine.StartsWith("@"))
                {
                    ParseDocsFlush(docs, ref state, sb, paramName, paramModifier);
                }
                else
                {
                    sb.AppendLine(trimmedLine);
                }

                if (finished)
                {
                    break;
                }

                i++;
            }
        }