jquery.highlightText: Add support for matching multiple (non-adjecant) words
Open, StalledPublic


I'm passing this request along:

To the devs and volunteer coders: Please see this snippet that uses mediawiki functions:: https://en.wikipedia.org/wiki/User:Dank/wishywashy.js

If you add that to your .js file on en.wp, then every occurrence of wishy or washy will appear in bold for you ... and if you hover over the bolded word, you'll get some helpful advice. People would like for me to automate some of my copyediting advice using this script, but highlightText, as coded in Mediawiki, won't even let me search for a two-word phrase. Ideally, I'd like to have arguments that are regex searches (or the lua equivalent), but at a minimum, I need to search for letters, numbers, spaces and punctuation, if I'm going to be using highlightText. (If your solution allows something like regex, I only need highlighting for the initial phrase that appears before any special regex functions.)

Being able to highlight two words seems like a very useful feature. I've already got ideas about how I might use this if it were possible.

Version: 1.24rc
Severity: enhancement

bzimport added a project: MediaWiki-JavaScript.Via ConduitNov 22 2014, 3:33 AM
bzimport added a subscriber: wikibugs-l.
bzimport set Reference to bz67784.
Whatamidoing-WMF created this task.Via LegacyJul 10 2014, 12:47 AM
bzimport added a comment.Via ConduitJul 15 2014, 9:43 PM

dankindsvater wrote:

Clarification: highlightText can handle all the punctuation I'm likely to need (,."?!/:;)
but it can't handle spaces.

bzimport added a comment.Via ConduitAug 9 2014, 9:38 AM

dankindsvater wrote:

A (possibly older) version of highlightText is at https://git.wikimedia.org/blob/mediawiki%2Fcore/596a2584b0ea7ca5de24e871e015a9ac03122c3e/resources%2Fjquery%2Fjquery.highlightText.js.

I need a function (in or outside of Mediawiki) identical to highlightText, with (I'm guessing) the space in pat.split(" ") in line 12 replaced ... a tab character would work. (Or, getting rid of the parsing entirely so I can pass an array of strings would be fine.)


Whatamidoing-WMF changed the task status from "Open" to "Stalled".Via WebMon, Mar 23, 6:26 PM
Krenair added a subscriber: Krenair.Via WebMon, Mar 23, 6:39 PM
Krinkle changed the title from "jquery.highlightText.js needs to be able to highlight more than one word, numbers, spaces, and punctuation" to "jquery.highlightText: Add support for matching multiple (non-adjecant) words".Via WebMon, Mar 23, 11:17 PM
Krinkle removed a subscriber: wikibugs-l.
Krinkle set Security to None.
Krinkle added a comment.EditedVia WebMon, Mar 23, 11:21 PM

jquery.highlightText is intended to highlight a fixed phrase. This is used by, for example, jquery.suggestions; which powers the main search field on Wikipedia with the search results in a list below the input field. It is working fine there, and as such this is unlikely to get prioritised as it's requesting a feature that would not link back to the core product.

It already supports multiple words. It is not limited to a single word. However, it is limited to one phrase (which can happily contain multiple words). This is by design. If you need to highlight multiple unrelated, adjacent phrases, words or parts of words, simply invoke highlightText or splitAndHighlight multiple times.

Please let me know if this does not work for you.

If this were a bug or new feature I'd say, patches welcome from any volunteers who feel like resolving it. However as it stands (unless I misunderstood the request) I'd say supporting multiple sequences should be done by the caller. Adding this to the highlightText plugin would not improve it.

Krinkle added a comment.Via WebMon, Mar 23, 11:33 PM

Sorry, let me correct that. It seems the utility method splitAndHighlight in fact even does this already. It takes a list of separate words and searches/highlights them independently using the lower-level highlightText.

To search for two words that explicitly are adjacent, you can call highlightText.innerHighlight directly with a phrase that will be searched for without splitting up into separate search queries.

As for accepting a regex, I think that'd be a welcome addition. It's not needed by anything in MediaWiki core, but it'd be a fine addition. Write a patch adding support for pat being a RegExp instead of a String in jquery.highlightText.js, and a unit test, and I'll make sure it gets merged and released.

Add Comment

Column Prototype
This is a very early prototype of a persistent column. It is not expected to work yet, and leaving it open will activate other new features which will break things. Press "\" (backslash) on your keyboard to close it now.