示例#1
0
        public static async Task <string> GetEventUrlAsync(EventInfoWrapper ev)
        {
            var search = await SearchAsync(ev.Parent.Name, $"{ev.Parent.Name}.Events.cs");

            var result = search.FirstOrDefault(x => x.Name == $"{ev.Parent.Name}.Events.cs")?.HtmlUrl ?? search.FirstOrDefault()?.HtmlUrl;

            if (result != null)
            {
                using (var client = new HttpClient())
                {
                    var url  = result.Replace("/blob/", "/raw/");
                    var code = await client.GetStringAsync(url);

                    var tree   = CSharpSyntaxTree.ParseText(code);
                    var root   = (CompilationUnitSyntax)tree.GetRoot();
                    var source = root.DescendantNodes().OfType <EventDeclarationSyntax>().FirstOrDefault(x => x.Identifier.ValueText == ev.Event.Name);
                    if (source == null)
                    {
                        return(result);
                    }
                    var startLine = source.GetLocation().GetLineSpan().StartLinePosition.Line + 1;
                    var endLine   = source.GetLocation().GetLineSpan().EndLinePosition.Line + 1;
                    return($"{result}{(startLine == endLine ? $"#L{startLine}" : $"#L{startLine}-L{endLine}")}");
                }
            }
示例#2
0
        void AddEvent(TextWriter writer, EventInfoWrapper info)
        {
            writer.WriteLine("<tr>");

            writer.WriteLine("<td>");
            writer.WriteLine("<img class=\"event\" src=\"{0}/resources/blank.gif\" title=\"Event\" alt=\"Event\"/>", RootRelativePath);
            if (info.IsStatic)
            {
                writer.WriteLine("<img class=\"static\" src=\"{0}/resources/blank.gif\" title=\"Static Event\" alt=\"Static Event\"/>", RootRelativePath);
            }
            writer.WriteLine("</td>");

            writer.WriteLine("<td>");
            writer.WriteLine("<a href=\"./{0}\">{1}</a>", FilenameGenerator.GenerateFilename(info), info.Name);
            writer.WriteLine("</td>");

            writer.WriteLine("<td>");

            var docs = NDocUtilities.FindDocumentation(this._currentNDoc, info);
            var html = NDocUtilities.TransformDocumentationToHTML(docs, "summary", Artifacts.AssemblyWrapper, this._version);

            writer.WriteLine(html);
            writer.WriteLine("</td>");

            writer.WriteLine("</tr>");
        }
示例#3
0
        public async Task <string> GetEventUrlAsync(EventInfoWrapper ev)
        {
            var search = await SearchAsync(ev.Event.DeclaringType.Name, $"{ev.Event.DeclaringType.Name}.Events.cs");

            var result = search.FirstOrDefault(x => x.Name == $"{ev.Event.DeclaringType.Name}.Events.cs")?.HtmlUrl ?? search.FirstOrDefault()?.HtmlUrl;

            if (result != null)
            {
                using (var client = new HttpClient {
                    Timeout = TimeSpan.FromSeconds(5)
                })
                {
                    string url = result.Replace("/blob/", "/raw/");
                    HttpResponseMessage httpResult = await client.GetAsync(url);

                    if (!httpResult.IsSuccessStatusCode)
                    {
                        return(null);
                    }

                    var tree   = CSharpSyntaxTree.ParseText(await httpResult.Content.ReadAsStringAsync());
                    var root   = (CompilationUnitSyntax)tree.GetRoot();
                    var source = root.DescendantNodes().OfType <EventDeclarationSyntax>().FirstOrDefault(x => x.Identifier.ValueText == ev.Event.Name);
                    if (source == null)
                    {
                        return(result);
                    }
                    var startLine = source.GetLocation().GetLineSpan().StartLinePosition.Line + 1;
                    var endLine   = source.GetLocation().GetLineSpan().EndLinePosition.Line + 1;
                    return($"{result}{(startLine == endLine ? $"#L{startLine}" : $"#L{startLine}-L{endLine}")}");
                }
            }
        public string GenerateSyntax(EventInfoWrapper info)
        {
            var syntax = new SyntaxWriter(this._version);

            syntax.WriteToken("public");
            syntax.WriteToken("event");

            syntax.WriteRaw(string.Format(" {0}EventHandler {0}", info.Name));

            return(syntax.CurrentSyntax);
        }
示例#5
0
        void AddEvent(TextWriter writer, EventInfoWrapper info)
        {
            writer.WriteLine("<tr>");

            writer.WriteLine("<td>");
            writer.WriteLine("<img class=\"event\" src=\"{0}/resources/blank.gif\" title=\"Event\" alt=\"Event\"/>", RootRelativePath);
            if (info.IsStatic)
            {
                writer.WriteLine("<img class=\"static\" src=\"{0}/resources/blank.gif\" title=\"Static Event\" alt=\"Static Event\"/>", RootRelativePath);
            }
            writer.WriteLine("</td>");

            writer.WriteLine("<td>");
            writer.WriteLine("<a href=\"{0}/items/{1}/{2}\">{3}</a>",
                             RootRelativePath,
                             GenerationManifest.OutputSubFolderFromNamespace(info.DeclaringType.Namespace),
                             FilenameGenerator.GenerateFilename(info),
                             info.Name);
            writer.WriteLine("</td>");

            writer.WriteLine("<td>");

            string html        = string.Empty;
            var    isInherited = !info.DeclaringType.Equals(_versionType);

            if (isInherited)
            {
                html = string.Format("Inherited from {0}.{1}.", info.DeclaringType.Namespace, info.DeclaringType.Name);
            }
            else
            {
                var docs = NDocUtilities.FindDocumentation(info);
                html = NDocUtilities.TransformDocumentationToHTML(docs, "summary", Artifacts.AssemblyWrapper, this._version);
            }

            writer.WriteLine(html);
            writer.WriteLine("</td>");

            writer.WriteLine("</tr>");
        }
示例#6
0
 public EventWriter(GenerationManifest artifacts, FrameworkVersion version, EventInfoWrapper eventInfo)
     : base(artifacts, version, eventInfo)
 {
     this._eventInfo = eventInfo;
 }
示例#7
0
        void AddEvent(TextWriter writer, EventInfoWrapper info)
        {
            writer.WriteLine("<tr>");

            writer.WriteLine("<td>");
            writer.WriteLine("<img class=\"event\" src=\"{0}/resources/blank.gif\" title=\"Event\" alt=\"Event\"/>", RootRelativePath);
            if (info.IsStatic)
                writer.WriteLine("<img class=\"static\" src=\"{0}/resources/blank.gif\" title=\"Static Event\" alt=\"Static Event\"/>", RootRelativePath);
            writer.WriteLine("</td>");

            writer.WriteLine("<td>");
            writer.WriteLine("<a href=\"{0}/items/{1}/{2}\">{3}</a>",
                RootRelativePath,
                GenerationManifest.OutputSubFolderFromNamespace(info.DeclaringType.Namespace),
                FilenameGenerator.GenerateFilename(info),
                info.Name);
            writer.WriteLine("</td>");

            writer.WriteLine("<td>");

            string html = string.Empty;
            if (_versionType.Namespace != info.DeclaringType.Namespace)
            {
                html = string.Format("Inherited from {0}.{1}.", info.DeclaringType.Namespace, info.DeclaringType.Name);
            }
            else {
                var docs = NDocUtilities.FindDocumentation(info);
                html = NDocUtilities.TransformDocumentationToHTML(docs, "summary", Artifacts.AssemblyWrapper, this._version);
            }

            writer.WriteLine(html);
            writer.WriteLine("</td>");

            writer.WriteLine("</tr>");
        }
示例#8
0
 public EventWriter(GenerationManifest artifacts, FrameworkVersion version, EventInfoWrapper eventInfo)
     : base(artifacts, version, eventInfo)
 {
     this._eventInfo = eventInfo;
 }
示例#9
0
        void AddEvent(TextWriter writer, EventInfoWrapper info)
        {
            writer.WriteLine("<tr>");

            writer.WriteLine("<td>");
            writer.WriteLine("<img class=\"event\" src=\"{0}/resources/blank.gif\" title=\"Event\" alt=\"Event\"/>", RootRelativePath);
            if (info.IsStatic)
                writer.WriteLine("<img class=\"static\" src=\"{0}/resources/blank.gif\" title=\"Static Event\" alt=\"Static Event\"/>", RootRelativePath);
            writer.WriteLine("</td>");

            writer.WriteLine("<td>");
            writer.WriteLine("<a href=\"./{0}\">{1}</a>", FilenameGenerator.GenerateFilename(info), info.Name);
            writer.WriteLine("</td>");

            writer.WriteLine("<td>");

            var docs = NDocUtilities.FindDocumentation(this._currentNDoc, info);
            var html = NDocUtilities.TransformDocumentationToHTML(docs, "summary", Artifacts.AssemblyWrapper, this._version);

            writer.WriteLine(html);
            writer.WriteLine("</td>");

            writer.WriteLine("</tr>");
        }
        public string GenerateSyntax(EventInfoWrapper info)
        {
            var syntax = new SyntaxWriter(this._version);

            syntax.WriteToken("public");
            syntax.WriteToken("event");

            syntax.WriteRaw(string.Format(" {0}EventHandler {0}", info.Name));

            return syntax.CurrentSyntax;
        }