public static void L2Categories() { string L1CategoriesPath = @"D:\265.com\L1\1.txt"; StreamReader sr = new StreamReader(L1CategoriesPath); string L2CategoriesDir = @"D:\265.com\L2\"; string category = "", url = "", tmp = ""; int count = 0; while ((tmp = sr.ReadLine()) != null) { if (tmp != "" && tmp != "\n") { Console.WriteLine(++count); string[] line = tmp.Split('\t'); category = line[0]; url = line[1]; string L2CategoryPath = L2CategoriesDir + category + ".txt"; string html = DownloadHtml.DownloadHtmlstring(url); List <HtmlNode> nodes = markupParser.Parse(html); Subpath(html, nodes, L2CategoryPath); } } sr.Close(); }
public DocumentWithSpans GetDocumentWithSpansFromMarkup([NotNull] AnalyzerTestContext context) { Guard.NotNull(context, nameof(context)); var parser = new MarkupParser(context.MarkupCode); CodeWithSpans codeWithSpans = parser.Parse(); ParseOptions parseOptions = GetParseOptions(context.DocumentationMode, context.LanguageName); CompilationOptions compilationOptions = GetCompilationOptions(context.CompilerWarningLevel, context.LanguageName); Document document = new AdhocWorkspace() .AddProject(context.AssemblyName, context.LanguageName) .WithParseOptions(parseOptions) .WithCompilationOptions(compilationOptions) .AddMetadataReferences(context.References) .AddDocument(context.FileName, codeWithSpans.Code); return(new DocumentWithSpans(document, codeWithSpans.Spans)); }
/// <summary> /// parse a HTML /// </summary> /// <param name="html">content of HTML file</param> /// <returns>parsed result</returns> public ParsedHtml Parse(string html) { // markup parsing List <HtmlNode> nodes = markupParser.Parse(html); if (nodes == null) { return(null); } // parsing links ParsedHtml parsedHtml = new ParsedHtml(); parsedHtml.Html = html; parsedHtml.Nodes = nodes; // process parsed Html parsedHtml.Process(); return(parsedHtml); }
public static void Process(string directory) { DirectoryInfo folder = new DirectoryInfo(directory); FileInfo[] files = folder.GetFiles("*.htm"); foreach (FileInfo file in files) { string path = file.FullName; using (StreamReader streamReader = File.OpenText(path)) { string html = streamReader.ReadToEnd(); List <HtmlNode> nodes = markupParser.Parse(html); Dump(path, html, nodes); LinkExtractor linkExtractor = new LinkExtractor(); ParsedHtml parsedHtml = new ParsedHtml(); parsedHtml.Html = html; parsedHtml.Nodes = nodes; linkExtractor.Process(parsedHtml, true); Dump(parsedHtml); } } }
/// <summary> /// Writes the specified markup to the console. /// </summary> /// <param name="console">The console to write to.</param> /// <param name="value">The value to write.</param> public static void Markup(this IAnsiConsole console, string value) { console.Write(MarkupParser.Parse(value)); }
public static MarkupContent ParseMarkup(string text) { var parser = new MarkupParser(text); return(parser.Parse()); }
private void WalkLines(IEnumerable <DocLine> lines, StringBuilder toc, StringBuilder sb) { int tocId = 0; WalkLines(lines, (str, type) => { if (type == LineType.CodeItem) { GenerateCodeItem(str, sb); } else if (type == LineType.Table) { str = HttpUtility.HtmlEncode(str); var rows = str.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); sb.Append("<table class='textTable'>"); foreach (var r in rows) { var cells = new List <String>(); var buffer = r.ToCharArray(); var pos = 0; var l = '\0'; for (var i = 0; i < buffer.Length; i++) { var c = buffer[i]; var last = i == buffer.Length - 1; if ((l == ' ' && c == '|') || last) { cells.Add(new String(buffer, pos, i - pos + (last ? 1 : 0))); pos = i + 1; } l = c; } sb.Append("<tr>"); foreach (var c in cells) { sb.AppendFormat("<td class='textTd'>{0}</td>", MarkupParser.Parse(c)); } sb.Append("</tr>"); } sb.Append("</table>"); } else if (type == LineType.ElaCode || type == LineType.EvalCode) { if (type == LineType.EvalCode) { lnk.SetSource(str); var res = lnk.Build(); if (res.Success) { if (vm == null) { vm = new ElaMachine(res.Assembly); } else { vm.RefreshState(); } try { var rv = vm.Resume(); if (!rv.ReturnValue.Is <ElaUnit>()) { var val = vm.PrintValue(rv.ReturnValue); if (val.Contains('\r') || val.Length > 30) { str += "\r\n/*\r\nThe result is:\r\n" + val + "\r\n*/"; } else { str += " //The result is: " + val; } } } catch (ElaCodeException ex) { Error(ex.Message); } } else { res.Messages.ToList().ForEach(m => Console.Write("\r\n" + m.ToString())); } } sb.AppendFormat(ELACODE, Lex(str)); } else if (type == LineType.Code) { str = HttpUtility.HtmlEncode(str); sb.AppendFormat(CODE, str); } else if (type == LineType.Header1) { str = HttpUtility.HtmlEncode(str); var id = (tocId++).ToString(); sb.AppendFormat("<a name=\"{0}\"></a>", id); sb.AppendFormat(H1, str); toc.Append("<b>"); toc.AppendFormat(A, id, str); toc.Append("</b><br/>"); } else if (type == LineType.Header2) { str = HttpUtility.HtmlEncode(str); var id = (tocId++).ToString(); sb.AppendFormat("<a name=\"{0}\"></a>", id); sb.AppendFormat(H2, str); toc.Append(" "); toc.AppendFormat(A, id, str); toc.Append("<br/>"); } else if (type == LineType.Header3) { str = HttpUtility.HtmlEncode(str); sb.AppendFormat(H3, str); } else if (type == LineType.List) { str = HttpUtility.HtmlEncode(str); sb.Append("<ul>"); var split = str.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); split.ToList().ForEach(s => sb.AppendFormat(LI, MarkupParser.Parse(s))); sb.Append("</ul>"); } else { str = HttpUtility.HtmlEncode(str); sb.AppendFormat(TEXT, MarkupParser.Parse(str)); } }); }