diff options
author | Kaushal Modi <kaushal.modi@gmail.com> | 2018-09-28 14:45:06 -0400 |
---|---|---|
committer | Kaushal Modi <kaushal.modi@gmail.com> | 2018-09-28 15:39:22 -0400 |
commit | 903886396dce92789cffb42b7e98315d86677d7e (patch) | |
tree | d3f8c9581c3cf4bbdaec28181c1cb52c9bea1635 /lib/packages | |
parent | de8cb0a1cf06d091dbe586fed85fb1cf904a33ac (diff) | |
download | Nim-903886396dce92789cffb42b7e98315d86677d7e.tar.gz |
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.
Diffstat (limited to 'lib/packages')
-rw-r--r-- | lib/packages/docutils/rstgen.nim | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/packages/docutils/rstgen.nim b/lib/packages/docutils/rstgen.nim index 51bb9c757..232da5c93 100644 --- a/lib/packages/docutils/rstgen.nim +++ b/lib/packages/docutils/rstgen.nim @@ -424,11 +424,15 @@ proc sortIndex(a: var openArray[IndexEntry]) = if h == 1: break 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) for c in items(s): case c - of 'a'..'z', '_', 'A'..'Z', '0'..'9', '.', '#', ',', '/': - result.add c + of 'a'..'z', 'A'..'Z', '0'..'9', '-', '.', '_', '~': # same as that in uri/encodeUrl + add(result, c) + of '#', '/': # example.com/foo/#bar (don't escape the '/' and '#' in such links) + add(result, c) else: add(result, "%") add(result, toHex(ord(c), 2)) @@ -444,7 +448,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 + url = symbols[j].link.escapeLink text = if symbols[j].linkTitle.len > 0: symbols[j].linkTitle else: url desc = if symbols[j].linkDesc.len > 0: symbols[j].linkDesc else: "" if desc.len > 0: |