0

我使用asp.net WebApi Help Page从源代码的注释生成文档。而且我之前使用过doxygen来生成文档。doxygen可以解析注释中的markdown 语法并输出格式良好的文档。但是WebApi 帮助页面现在无法解析 markdown 语法。

例如,foo函数的注释中包含Markdown 注释,它会像### Markdown comments *It will return "foo" *It always returns "foo"WebApi Help Page一样输出。

public MyApiController : ApiController {
     ///<summary>
     /// It will return "foo"
     /// ### Markdown comments
     /// * It will return "foo"
     /// * It always returns "foo"
     ///</summary>    
     [HttpPost, ActionName("foo")]
     public string Foo() {
         return "foo";
     }
}
4

1 回答 1

4

感谢指点,刚刚修改HelpPageApiModel.cshtml

1)从 NuGet 安装一些 Markdown 库,比如MarkdownDeep

2) 增加助手功能。请注意,您应该修剪行,因为<summery>在换行符之后按原样解析所有尾随空格。否则所有降价列表等都不会被正确解析。

@functions {
    string ToMarkdown(string str)
    {
        var lines = str.Split('\n');
        var whitespaceCount = 0;
        var i = 0; //from 2. Line
        var imax = lines.Count();
        while (++i < imax)
        {
            var line = lines[i];
            if (whitespaceCount != 0)
            {
                lines[i] = line.Substring(whitespaceCount);
                continue;
            }
            var trimmed = line.TrimStart();
            if (trimmed.Length == 0 || trimmed == line) continue;
            whitespaceCount = line.Length - trimmed.Length;
            i--;
        }
        str = string.Join("\n", lines);
        var md = new MarkdownDeep.Markdown {ExtraMode = true, SafeMode = false};
        return md.Transform(str);
    }
}

3) 预处理文档字符串输出

<p>@Html.Raw(ToMarkdown(description.Documentation))</p>
于 2015-04-17T08:06:17.683 回答