コード例 #1
0
 public static void WriteParameterDeclaration(this IndentedTextWriter writer, ITypeScriptFunction function, bool returnTypeFatArrow)
 {
     writer.Write("(");
     if (function.Parameters?.Count > 0)
     {
         for (var i = 0; i < function.Parameters.Count; i++)
         {
             if (i > 0)
             {
                 writer.Write(", ");
             }
             var p = function.Parameters[i];
             writer.Write(p.Name);
             if (p.IsOptional)
             {
                 writer.Write('?');
             }
             writer.Write(": ");
             if (p.ParameterType == null)
             {
                 writer.Write("any");
             }
             else
             {
                 p.ParameterType.WriteTypeName(writer);
             }
         }
     }
     writer.Write(")");
     if (returnTypeFatArrow)
     {
         writer.Write(" => ");
     }
     else
     {
         writer.Write(": ");
     }
     if (function.ReturnType != null)
     {
         writer.Write(function.ReturnType.Name);
     }
     else
     {
         writer.Write("void");
     }
     writer.WriteLine(";");
 }
コード例 #2
0
        private void ProcessFunctionCore(TypeScriptContext tsc, string name, HtmlNode div, ITypeScriptFunction fd)
        {
            fd.Name                  = name;
            fd.Documentation         = new Documentation();
            fd.Documentation.Summary = div.SelectNodes("p[not(@class)]").SanitizeDocumentation();

            var returnValue = div.SelectSingleNode("dl/dd/p");

            if (returnValue != null)
            {
                fd.ReturnType            = ResolveType(tsc, returnValue.SelectSingleNode("code").InnerText).Type;
                fd.Documentation.Returns = returnValue.SelectNodes("text()").SanitizeDocumentation();
            }

            var trs = div.SelectNodes("section//table/tbody/tr");

            if (trs != null)
            {
                foreach (var tr in trs)
                {
                    var mn = tr.SelectSingleNode("td[1]")?.InnerText?.Trim();

                    if (mn != null)
                    {
                        var pt = ResolveType(tsc, tr.SelectSingleNode("td[2]/p[@class='details-table-types']")?.InnerText?.Trim());

                        fd.Parameters.Add(new ParameterDeclaration()
                        {
                            Name          = mn,
                            ParameterType = pt.Type,
                            IsRequired    = tr.SelectSingleNode("td[2]/p[@class='details-table-optional']") == null && !pt.IsNullable
                        });
                        fd.Documentation.Parameters.Add(new ParameterDocumentation()
                        {
                            ParameterName = mn,
                            Description   = tr.SelectNodes("td[2]/p[not(@class)]").SanitizeDocumentation()
                        });
                    }
                }
            }
        }