[Xfce4-commits] <midori:master> Recognize more characters as next page and be more tolerant

Christian Dywan noreply at xfce.org
Wed May 26 23:06:01 CEST 2010


Updating branch refs/heads/master
         to c2be3d67cfb6b13af5a4383f1cd8072cd8215396 (commit)
       from 5f8e9da610ad396aff86cd3699fbe66da1d63877 (commit)

commit c2be3d67cfb6b13af5a4383f1cd8072cd8215396
Author: Christian Dywan <christian at twotoasts.de>
Date:   Wed May 26 22:41:13 2010 +0200

    Recognize more characters as next page and be more tolerant

 midori/midori-view.c |   77 +++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 64 insertions(+), 13 deletions(-)

diff --git a/midori/midori-view.c b/midori/midori-view.c
index aefaa23..655b1df 100644
--- a/midori/midori-view.c
+++ b/midori/midori-view.c
@@ -4657,12 +4657,38 @@ midori_view_get_previous_page (MidoriView* view)
     web_frame = webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW (view->web_view));
     js_context = webkit_web_frame_get_global_context (web_frame);
     katze_assign (uri, sokoke_js_script_eval (js_context,
-        "(function (l) { for (i in l) "
-        "if ((l[i].rel && l[i].rel == 'prev') "
-        " || (l[i].innerHTML"
-        "  && l[i].innerHTML.toLowerCase ().indexOf ('prev') != -1)) "
-        "{ return l[i].href; } return 0; })("
-        "document.getElementsByTagName ('a'));", NULL));
+        "(function (l) {"
+        "var ind = ['prev','←','«','<'];"
+        "var nind = ['next','→','»','>'];"
+        "for (i in l)"
+        "if (l[i].rel && (l[i].rel == ind[0]))"
+        "return l[i].href;"
+        "for (j in ind)"
+        "for (i in l)"
+        "if (l[i].innerHTML"
+        "&& (l[i].innerHTML.toLowerCase ().indexOf (ind[j]) != -1)"
+        "&& (l[i].innerHTML.toLowerCase ().indexOf (nind[j]) == -1))"
+        "return l[i].href;"
+        "var wa = window.location.href.split (/\\d+/);"
+        "var wn = window.location.href.split (/[^\\d]+/);"
+        "wn = wn.slice (1,wn.length - 1);"
+        "var cand = [];"
+        "for (i in wn)"
+        "{"
+        "cand[i] = '';"
+        "for (j = 0; j <= i; j++)"
+        "{"
+        "cand[i] += wa[j];"
+        "if (wn[j])"
+        "cand[i] += parseInt (wn[j]) - ((i == j) ? 1 : 0);"
+        "}"
+        "}"
+        "for (j in cand)"
+        "for (i in l)"
+        "if (l[i].href && (l[i].href.indexOf (cand[j]) == 0))"
+        "return l[i].href;"
+        "return 0;"
+        "}) (document.getElementsByTagName ('a'));", NULL));
     return uri && uri[0] != '0' ? uri : NULL;
 }
 
@@ -4688,15 +4714,40 @@ midori_view_get_next_page (MidoriView* view)
     web_frame = webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW (view->web_view));
     js_context = webkit_web_frame_get_global_context (web_frame);
     katze_assign (uri, sokoke_js_script_eval (js_context,
-        "(function (l) { for (i in l) "
-        "if ((l[i].rel && l[i].rel == 'next') "
-        " || (l[i].innerHTML"
-        "  && l[i].innerHTML.toLowerCase ().indexOf ('next') != -1)) "
-        "{ return l[i].href; } return 0; })("
-        "document.getElementsByTagName ('a'));", NULL));
+        "(function (l) {"
+        "var ind = ['next','→','»','>'];"
+        "var nind = ['prev','←','«','<'];"
+        "for (i in l)"
+        "if (l[i].rel && (l[i].rel == ind[0]))"
+        "return l[i].href;"
+        "for (j in ind)"
+        "for (i in l)"
+        "if (l[i].innerHTML"
+        "&& (l[i].innerHTML.toLowerCase ().indexOf (ind[j]) != -1)"
+        "&& (l[i].innerHTML.toLowerCase ().indexOf (nind[j]) == -1))"
+        "return l[i].href;"
+        "var wa = window.location.href.split (/\\d+/);"
+        "var wn = window.location.href.split (/[^\\d]+/);"
+        "wn = wn.slice (1,wn.length - 1);"
+        "var cand = [];"
+        "for (i in wn)"
+        "{"
+        "cand[i] = '';"
+        "for (j = 0; j <= i; j++)"
+        "{"
+        "cand[i] += wa[j];"
+        "if (wn[j])"
+        "cand[i] += parseInt (wn[j]) + ((i == j) ? 1 : 0);"
+        "}"
+        "}"
+        "for (j in cand)"
+        "for (i in l)"
+        "if (l[i].href && (l[i].href.indexOf (cand[j]) == 0))"
+        "return l[i].href;"
+        "return 0;"
+        "}) (document.getElementsByTagName ('a'));", NULL));
     return uri && uri[0] != '0' ? uri : NULL;
 }
-
 #if WEBKIT_CHECK_VERSION (1, 1, 5)
 static GtkWidget*
 midori_view_print_create_custom_widget_cb (GtkPrintOperation* operation,



More information about the Xfce4-commits mailing list