Add support for previous/next REs to directly filter links text - dotfiles - leot's dotfiles
 (HTM) hg clone https://bitbucket.org/iamleot/dotfiles
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
 (DIR) changeset 9944b09997ec8dcde9c7419b3bdc2f73e44f07cd
 (DIR) parent a580ea2df9dcb22c050563dbfe77c92e96146f3e
 (HTM) Author: Leonardo Taccari <iamleot@gmail.com>
       Date:   Sun,  9 Jun 2019 14:42:38 
       
       Add support for previous/next REs to directly filter links text
       
       Diffstat:
        surf/script/default.js |  59 +++++++++++++++++++++++++++++++++++++++++++------
        1 files changed, 51 insertions(+), 8 deletions(-)
       ---
       diff -r a580ea2df9dc -r 9944b09997ec surf/script/default.js
       --- a/surf/script/default.js    Sun Jun 09 13:49:20 2019 +0200
       +++ b/surf/script/default.js    Sun Jun 09 14:42:38 2019 +0200
       @@ -21,6 +21,15 @@
         * Add `p' and `n' accesskey-s (previous/next via `Mod1 + p'/`Mod1 + n')
         */
        (function() {
       +       has_prev = false;
       +       has_next = false;
       +
       +       if (document.querySelector('*[accesskey="p"]')) {
       +               has_prev = true;
       +       }
       +       if (document.querySelector('*[accesskey="n"]')) {
       +               has_next = true;
       +       }
        
               previous_selectors = [
                       'a[rel="prev"]',
       @@ -28,23 +37,57 @@
                       'a[aria-label="Previous page"]',        // google.com
               ];
        
       +       previous_res = [
       +               /<</,
       +       ];
       +
               next_selectors = [
                       'a[rel="next"]',
                       'a[aria-label="Pagina successiva"]',    // google.it
                       'a[aria-label="Next page"]',            // google.com
               ];
        
       -       for (p of previous_selectors) {
       -               if (e = document.querySelector(p)) {
       -                       e.accessKey = "p";
       -                       break;
       +       next_res = [
       +               />>/,
       +       ];
       +
       +       if (!has_prev) {
       +               for (p of previous_selectors) {
       +                       if (e = document.querySelector(p)) {
       +                               e.accessKey = "p";
       +                               has_prev = true;
       +                               break;
       +                       }
                       }
               }
        
       -       for (n of next_selectors) {
       -               if (e = document.querySelector(n)) {
       -                       e.accessKey = "n";
       -                       break;
       +       if (!has_next) {
       +               for (n of next_selectors) {
       +                       if (e = document.querySelector(n)) {
       +                               e.accessKey = "n";
       +                               has_next = true;
       +                               break;
       +                       }
       +               }
       +       }
       +
       +       for (i = document.links.length - 1; !has_prev && i >= 0; i--) {
       +               for (p of previous_res) {
       +                       if (document.links[i].text.match(p)) {
       +                               document.links[i].accessKey = "p";
       +                               has_prev = true;
       +                               break;
       +                       }
       +               }
       +       }
       +
       +       for (i = document.links.length - 1; !has_next && i >= 0; i--) {
       +               for (n of next_res) {
       +                       if (document.links[i].text.match(n)) {
       +                               document.links[i].accessKey = "n";
       +                               has_next = true;
       +                               break;
       +                       }
                       }
               }