Don't prevent ',' from getting escaped in theindex.html
- Enable escaping of links in theindex.html - Fixes https://github.com/nim-lang/Nim/issues/9107. - Second part of the fix for https://github.com/nim-lang/Nim/issues/9097.
This commit is contained in:
parent
de8cb0a1cf
commit
903886396d
3 changed files with 12 additions and 7 deletions
|
|
@ -424,11 +424,15 @@ proc sortIndex(a: var openArray[IndexEntry]) =
|
||||||
if h == 1: break
|
if h == 1: break
|
||||||
|
|
||||||
proc escapeLink(s: string): string =
|
proc escapeLink(s: string): string =
|
||||||
|
## This proc is mostly copied from uri/encodeUrl except that
|
||||||
|
## these chars are also left unencoded: '#', '/'.
|
||||||
result = newStringOfCap(s.len + s.len shr 2)
|
result = newStringOfCap(s.len + s.len shr 2)
|
||||||
for c in items(s):
|
for c in items(s):
|
||||||
case c
|
case c
|
||||||
of 'a'..'z', '_', 'A'..'Z', '0'..'9', '.', '#', ',', '/':
|
of 'a'..'z', 'A'..'Z', '0'..'9', '-', '.', '_', '~': # same as that in uri/encodeUrl
|
||||||
result.add c
|
add(result, c)
|
||||||
|
of '#', '/': # example.com/foo/#bar (don't escape the '/' and '#' in such links)
|
||||||
|
add(result, c)
|
||||||
else:
|
else:
|
||||||
add(result, "%")
|
add(result, "%")
|
||||||
add(result, toHex(ord(c), 2))
|
add(result, toHex(ord(c), 2))
|
||||||
|
|
@ -444,7 +448,7 @@ proc generateSymbolIndex(symbols: seq[IndexEntry]): string =
|
||||||
var j = i
|
var j = i
|
||||||
while j < symbols.len and keyword == symbols[j].keyword:
|
while j < symbols.len and keyword == symbols[j].keyword:
|
||||||
let
|
let
|
||||||
url = symbols[j].link #.escapeLink
|
url = symbols[j].link.escapeLink
|
||||||
text = if symbols[j].linkTitle.len > 0: symbols[j].linkTitle else: url
|
text = if symbols[j].linkTitle.len > 0: symbols[j].linkTitle else: url
|
||||||
desc = if symbols[j].linkDesc.len > 0: symbols[j].linkDesc else: ""
|
desc = if symbols[j].linkDesc.len > 0: symbols[j].linkDesc else: ""
|
||||||
if desc.len > 0:
|
if desc.len > 0:
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,7 @@ proc encodeUrl*(s: string, usePlus=true): string =
|
||||||
let fromSpace = if usePlus: "+" else: "%20"
|
let fromSpace = if usePlus: "+" else: "%20"
|
||||||
for c in s:
|
for c in s:
|
||||||
case c
|
case c
|
||||||
|
# https://tools.ietf.org/html/rfc3986#section-2.3
|
||||||
of 'a'..'z', 'A'..'Z', '0'..'9', '-', '.', '_', '~': add(result, c)
|
of 'a'..'z', 'A'..'Z', '0'..'9', '-', '.', '_', '~': add(result, c)
|
||||||
of ' ': add(result, fromSpace)
|
of ' ': add(result, fromSpace)
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
|
|
@ -1227,9 +1227,9 @@ function main() {
|
||||||
</ul></dd>
|
</ul></dd>
|
||||||
<dt><a name="bar" href="#bar"><span>bar:</span></a></dt><dd><ul class="simple">
|
<dt><a name="bar" href="#bar"><span>bar:</span></a></dt><dd><ul class="simple">
|
||||||
<li><a class="reference external"
|
<li><a class="reference external"
|
||||||
data-doc-search-tag="testproject: bar[T](a, b: T): T" href="testproject.html#bar,T,T">testproject: bar[T](a, b: T): T</a></li>
|
data-doc-search-tag="testproject: bar[T](a, b: T): T" href="testproject.html#bar%2CT%2CT">testproject: bar[T](a, b: T): T</a></li>
|
||||||
<li><a class="reference external"
|
<li><a class="reference external"
|
||||||
data-doc-search-tag="testproject: bar(): untyped" href="testproject.html#bar.m,">testproject: bar(): untyped</a></li>
|
data-doc-search-tag="testproject: bar(): untyped" href="testproject.html#bar.m%2C">testproject: bar(): untyped</a></li>
|
||||||
</ul></dd>
|
</ul></dd>
|
||||||
<dt><a name="enumValueA" href="#enumValueA"><span>enumValueA:</span></a></dt><dd><ul class="simple">
|
<dt><a name="enumValueA" href="#enumValueA"><span>enumValueA:</span></a></dt><dd><ul class="simple">
|
||||||
<li><a class="reference external"
|
<li><a class="reference external"
|
||||||
|
|
@ -1245,7 +1245,7 @@ function main() {
|
||||||
</ul></dd>
|
</ul></dd>
|
||||||
<dt><a name="foo" href="#foo"><span>foo:</span></a></dt><dd><ul class="simple">
|
<dt><a name="foo" href="#foo"><span>foo:</span></a></dt><dd><ul class="simple">
|
||||||
<li><a class="reference external"
|
<li><a class="reference external"
|
||||||
data-doc-search-tag="testproject: foo(a, b: SomeType)" href="testproject.html#foo.t,SomeType,SomeType">testproject: foo(a, b: SomeType)</a></li>
|
data-doc-search-tag="testproject: foo(a, b: SomeType)" href="testproject.html#foo.t%2CSomeType%2CSomeType">testproject: foo(a, b: SomeType)</a></li>
|
||||||
</ul></dd>
|
</ul></dd>
|
||||||
<dt><a name="SomeType" href="#SomeType"><span>SomeType:</span></a></dt><dd><ul class="simple">
|
<dt><a name="SomeType" href="#SomeType"><span>SomeType:</span></a></dt><dd><ul class="simple">
|
||||||
<li><a class="reference external"
|
<li><a class="reference external"
|
||||||
|
|
@ -1253,7 +1253,7 @@ function main() {
|
||||||
</ul></dd>
|
</ul></dd>
|
||||||
<dt><a name="someType" href="#someType"><span>someType:</span></a></dt><dd><ul class="simple">
|
<dt><a name="someType" href="#someType"><span>someType:</span></a></dt><dd><ul class="simple">
|
||||||
<li><a class="reference external"
|
<li><a class="reference external"
|
||||||
data-doc-search-tag="utils: someType(): SomeType" href="subdir/subdir_b/utils.html#someType,">utils: someType(): SomeType</a></li>
|
data-doc-search-tag="utils: someType(): SomeType" href="subdir/subdir_b/utils.html#someType%2C">utils: someType(): SomeType</a></li>
|
||||||
</ul></dd>
|
</ul></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue