JavaDocDocumentElement GetJavaDocDocumentElement(JavaDocKind kind, XElement jd) { if (jd == null) { return(null); } switch (kind) { case JavaDocKind.DroidDoc: return(new DroidDocDocumentElement(new DroidDocMdocHelper(), jd)); case JavaDocKind.DroidDoc2: return(new DroidDoc2DocumentElement(new DroidDocMdocHelper(), jd)); case JavaDocKind.Java6: return(new JavaDoc6DocumentElement(new JavaDocMdocHelper(), jd)); case JavaDocKind.Java7: return(new JavaDoc7DocumentElement(new JavaDocMdocHelper(), jd)); case JavaDocKind.Java8: return(new JavaDoc8DocumentElement(new JavaDocMdocHelper(), jd)); } throw new InvalidOperationException(); }
XElement GetJavaDocFile(string path, out JavaDocKind kind) { kind = JavaDocKind.DroidDoc; string rawHTML = ReadAndSanitizeHtmlFile(path); if (rawHTML.Substring(0, 500).IndexOf("Generated by javadoc (build 1.6", StringComparison.Ordinal) > 0) { kind = JavaDocKind.Java6; } if (rawHTML.Substring(0, 500).IndexOf("Generated by javadoc (version 1.7", StringComparison.Ordinal) > 0) { kind = JavaDocKind.Java7; } if (rawHTML.Substring(0, 500).IndexOf("Generated by javadoc (1.8", StringComparison.Ordinal) > 0) { kind = JavaDocKind.Java8; } var html = new Sgml.SgmlReader() { InputStream = new StringReader(rawHTML), CaseFolding = Sgml.CaseFolding.ToLower, Dtd = HtmlDtd }; var doc = XDocument.Load(html, LoadOptions.SetLineInfo | LoadOptions.SetBaseUri); return(doc.Root); }
XElement GetJavaDocFile(string path, out JavaDocKind kind) { kind = JavaDocKind.DroidDoc; string rawHTML = ReadHtmlFile(path); if (rawHTML.Substring(0, Math.Min(rawHTML.Length, 5000)).IndexOf("<body class=\"gc-documentation develop reference api ", StringComparison.Ordinal) > 0) { kind = JavaDocKind.DroidDoc2; } if (rawHTML.Substring(0, Math.Min(rawHTML.Length, 500)).IndexOf("Generated by javadoc (build 1.6", StringComparison.Ordinal) > 0) { kind = JavaDocKind.Java6; } if (rawHTML.Substring(0, Math.Min(rawHTML.Length, 500)).IndexOf("Generated by javadoc (version 1.7", StringComparison.Ordinal) > 0) { kind = JavaDocKind.Java7; } if (rawHTML.Substring(0, Math.Min(rawHTML.Length, 500)).IndexOf("Generated by javadoc (1.8", StringComparison.Ordinal) > 0) { kind = JavaDocKind.Java8; } if (kind == JavaDocKind.DroidDoc) { throw new NotSupportedException("Old DroidDoc is not supported anymore."); } else { var html = new Sgml.SgmlReader() { InputStream = new StringReader(rawHTML), CaseFolding = Sgml.CaseFolding.ToLower, Dtd = HtmlDtd }; var doc = XDocument.Load(html); return(doc.Root); } }