[devhelp] KeywordModel: use dh_link_belongs_to_page()



commit b65d98e427a039a2c29d845fabae51b9afb2db37
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Wed Dec 6 21:03:23 2017 +0100

    KeywordModel: use dh_link_belongs_to_page()
    
    This simplifies the code, and the DhLink function better handles the
    index.html page. Also with the DhLink function we avoid string
    allocation, so it probably has better performances.

 src/dh-keyword-model.c |   20 +++-----------------
 1 files changed, 3 insertions(+), 17 deletions(-)
---
diff --git a/src/dh-keyword-model.c b/src/dh-keyword-model.c
index 35bd0ef..a40b1d8 100644
--- a/src/dh-keyword-model.c
+++ b/src/dh-keyword-model.c
@@ -68,7 +68,6 @@ typedef struct {
         const gchar *book_id;
         const gchar *skip_book_id;
         const gchar *page_id;
-        gchar *page_filename_prefix;
         const gchar *language;
         guint case_sensitive : 1;
         guint prefix : 1;
@@ -454,20 +453,12 @@ keyword_model_search_book (DhBook          *book,
 
                 /* Filter by page? */
                 if (settings->page_id != NULL) {
-                        gchar *file_name;
-
-                        file_name = (settings->case_sensitive ?
-                                     g_strdup (dh_link_get_file_name (link)) :
-                                     g_ascii_strdown (dh_link_get_file_name (link), -1));
-
-                        /* First, filter out all keywords not belonging
-                         * to this given page. */
-                        if (!g_str_has_prefix (file_name, settings->page_filename_prefix)) {
+                        if (!dh_link_belongs_to_page (link,
+                                                      settings->page_id,
+                                                      settings->case_sensitive)) {
                                 /* No need of this keyword. */
-                                g_free (file_name);
                                 continue;
                         }
-                        g_free (file_name);
 
                         /* This means we got no keywords to look for. */
                         if (settings->keywords == NULL) {
@@ -661,14 +652,11 @@ keyword_model_search (DhKeywordModel  *model,
         settings.book_id = book_id;
         settings.skip_book_id = NULL;
         settings.page_id = page_id;
-        settings.page_filename_prefix = NULL;
         settings.language = language;
         settings.case_sensitive = case_sensitive;
         settings.prefix = TRUE;
 
         if (page_id != NULL) {
-                settings.page_filename_prefix = g_strdup_printf ("%s.", page_id);
-
                 /* If filtering per page, increase the maximum number of
                  * hits. This is due to the fact that a page may have
                  * more than MAX_HITS keywords, and the page link may be
@@ -742,8 +730,6 @@ keyword_model_search (DhKeywordModel  *model,
 
 out:
         dh_globbed_keywords_free (settings.keyword_globs);
-        g_free (settings.page_filename_prefix);
-
         return out;
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]