From 20e1743f2dfa1696fafd0907f44385e0266845a5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Thu, 18 Jul 2019 17:24:50 +0200 Subject: [PATCH] documentation: trim spaces from the right only if nothing is found. With unconditional trimming it was not possible to narrow down results for page titles containing spaces (or subpages, which are separated by double right arrow surrounded by spaces). --- documentation/search.js | 20 ++++-- .../test/js-test-data/searchdata.b85 | 2 +- .../test/js-test-data/searchdata.bin | Bin 674 -> 745 bytes documentation/test/populate-js-test-data.py | 5 +- documentation/test/test-search.js | 65 +++++++++++++++--- 5 files changed, 78 insertions(+), 14 deletions(-) diff --git a/documentation/search.js b/documentation/search.js index 8b8d7828..67e8e703 100644 --- a/documentation/search.js +++ b/documentation/search.js @@ -232,8 +232,10 @@ var Search = { /* Returns the values in UTF-8, but input is in whatever shitty 16bit encoding JS has */ search: function(searchString) { - /* Normalize the search string first, convert to UTF-8 */ - searchString = this.toUtf8(searchString.toLowerCase().trim()); + /* Normalize the search string first, convert to UTF-8 and trim spaces + from the left. From the right they're trimmed only if nothing is + found, see below. */ + searchString = this.toUtf8(searchString.toLowerCase().replace(/^\s+/,'')); /* TODO: maybe i could make use of InputEvent.data and others here */ @@ -277,8 +279,18 @@ var Search = { break; } - /* Character not found, exit */ - if(!found) break; + /* Character not found */ + if(!found) { + /* If we found everything except spaces at the end, pretend the + spaces aren't there. On the other hand, we *do* want to + try searching with the spaces first -- it can narrow down + the result list for page names or show subpages (which are + after a lookahead barrier that's a space). */ + if(!searchString.substr(foundPrefix).trim().length) + searchString = searchString.substr(0, foundPrefix); + + break; + } } /* Save the whole found prefix for next time */ diff --git a/documentation/test/js-test-data/searchdata.b85 b/documentation/test/js-test-data/searchdata.b85 index 1de2e518..1a915d15 100644 --- a/documentation/test/js-test-data/searchdata.b85 +++ b/documentation/test/js-test-data/searchdata.b85 @@ -1 +1 @@ -O+!-w2LOZt004pl003kG000310RR921ONaj009U904M+f4gdgd009&L0BHdL0{{R4AOHX<00ATb04M+fDgXd(00A%n0BHaLHUI!^00BGz06GBy0suk)fI0vHNB{tG00B?{0B-;RRsaBW00CS80Am0FVgLYT0RRO600C|Q04V?gasU7*00DRa0B!&QegFVz00D#m0BryPiU0sQ0RaR6kN|)>00EW&0A&CHo&W%600E=`0B!&QssI3C00SBT0BvXh0Cund0CE5Uwg3P+0RaF2!~lRg00GJX0B8UK(f|N-0{{U40{{g800G_r04V?g<^TXF00Ha(0B!&R*Z=@w@&Ev70RRU8009C40A&CH1_1zU009gE0A~OJ5&-~i0RadA7y$rb00ABW0CWHWCIJ9r00OE20AVZv0A&FH1^@s7JOKb@00BS&0A~OJMgag}00B$^0B`^SQUL&B00CG50CfNa_y7QHXaE3qG64W`UI74eC;$K;KL7wpR{#JydjJ4QkpKWVvj6~1$p8QlaA9X<0CRO>aA9X00EW&0A&CHo&W%600E=`0B!&QssI3C00SBT0BvXh0Cund0CE5Uwg3P+0RaF2!~lRg00GJX0B8UK(f|N-0{{U40{{g800G_r04V?g<^TXF00Ha(0B!&R*Z=@w@&Ev70RRX9009C40A&CH1_1zU009gE0A~OJ5&-~i0RagB7y$rb00ABW0CWHWCIJ9r00OE20AVZv0A&FH2LJ#8JOKb@00BS&0A~OJMgag}00B$^0B`^SQUL&B00CG50CfNXUI74e00CqH03ZMXY5@Sd00D3T0Kx$Q1^{*efFJ+?d;tJu00D#n0A~OJiU9y&00sB}0BvXh0Cq9~0CJE40B~Lb0COw=03bsE07+W_06KpF07;bq064b*08PyR01(>%02uZF0003200|EP002#4bZ7u>VQpn|aA9L*O<{CsE@*UZYybcf2s%1#X>KTKZgealX>N2W03&T_ZU6uPIyzQmV{~tF0Ap-nb8}5$bZB2OUolo?V{~tFE@*UZYyton20A)zX>KSfAY*TCb94YBZE0=*0025VQekdqWdLJrVRLg$VRUF;F<&uKVQyz-E@*UZYyKSfAY*TCb94YBZE0>$VP|CkaA9XC{DVv5TVMR9u}pWGEel!h;5b7zs_Vi=aa%C*fhCYyY5A zMYnDp`UQT0KOh~AP8SZ`!})agZV>h!RbnIfb>RIgxKOnWazunYF+!JOfUd<@@@-pH zm29ZnnVv+3o<$7}#TKRFNAj3xUa;v|@^-#2gu(rXB!)>xyevg}GBlyqgZn;oXT`4I v?i<2CsO;e8K+z-opok1j9y2ycl%>Y5^>IaN22m@{laUAZ!KtfkU!BGg*4imc delta 134 zcmWN?ArC=O9LC|_d${+o*{