From 3dfc86671005d033f6a7f3b68e0aeabeb1f4cfb9 Mon Sep 17 00:00:00 2001 From: Araq Date: Fri, 9 Sep 2016 20:42:02 +0200 Subject: [PATCH] docgen: working search feature --- compiler/typesrenderer.nim | 12 +++--------- config/nimdoc.cfg | 7 +++++++ lib/packages/docutils/rstgen.nim | 6 +++--- tools/dochack/dochack.nim | 20 +++++++++++++------- 4 files changed, 26 insertions(+), 19 deletions(-) diff --git a/compiler/typesrenderer.nim b/compiler/typesrenderer.nim index d050a86b22..438744b1c5 100644 --- a/compiler/typesrenderer.nim +++ b/compiler/typesrenderer.nim @@ -19,20 +19,14 @@ proc renderPlainSymbolName*(n: PNode): string = ## for the HTML hyperlinks. result = "" case n.kind - of nkPostfix: - for i in 0 .. 0: - return + of nkPostfix, nkAccQuoted: + result = renderPlainSymbolName(n[ span.Operator ~ span.Identifier, dt pre > span.Operator ~ span.Operator span.pragmaend { cursor: pointer; } + +div.search_results { + background-color: antiquewhite; + margin: 3em; + border-style: inset; + padding: 1em; +} diff --git a/lib/packages/docutils/rstgen.nim b/lib/packages/docutils/rstgen.nim index 13c0c0a299..47247dd7cf 100644 --- a/lib/packages/docutils/rstgen.nim +++ b/lib/packages/docutils/rstgen.nim @@ -419,10 +419,10 @@ proc escapeLink(s: string): string = result = newStringOfCap(s.len + s.len shr 2) for c in items(s): case c - of 'a'..'z', '_', 'A'..'Z', '0'..'9': + of 'a'..'z', '_', 'A'..'Z', '0'..'9', '.', '#', ',', '/': result.add c else: - add(result, "X") + add(result, "%") add(result, toHex(ord(c), 2)) proc generateSymbolIndex(symbols: seq[IndexEntry]): string = @@ -436,7 +436,7 @@ proc generateSymbolIndex(symbols: seq[IndexEntry]): string = var j = i while j < symbols.len and keyword == symbols[j].keyword: let - url = symbols[j].link.escapeLink #replace("&", "&") + url = symbols[j].link.escapeLink text = if not symbols[j].linkTitle.isNil: symbols[j].linkTitle else: url desc = if not symbols[j].linkDesc.isNil: symbols[j].linkDesc else: "" if desc.len > 0: diff --git a/tools/dochack/dochack.nim b/tools/dochack/dochack.nim index 8d95fc5fdc..fbfbea0072 100644 --- a/tools/dochack/dochack.nim +++ b/tools/dochack/dochack.nim @@ -241,7 +241,7 @@ proc dosearch(value: cstring): Element = var stuff: Element {.emit: """ var request = new XMLHttpRequest(); - request.open("GET", "theindex.html", false); + request.open("GET", "http://nim-lang.org/0.15.0/theindex.html", false); request.send(null); var doc = document.implementation.createHTMLDocument("theindex"); @@ -259,16 +259,22 @@ proc dosearch(value: cstring): Element = let ul = tree("UL") result = tree("DIV") result.setClass"search_results" - var matches = 0 + var matches: seq[(Element, int)] = @[] let key = value.normalize for i in 0.. 10: break + let c = contents[i] + if c.containsWord(key): + matches.add((db[i], -(30_000 - c.len))) + elif c.contains(key): + matches.add((db[i], c.len)) + matches.sort do (a, b: auto) -> int: + a[1] - b[1] + for i in 0..min(