[gnome-documents] query: use arrays and join() to simplify code
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-documents] query: use arrays and join() to simplify code
- Date: Wed, 14 Nov 2012 16:29:21 +0000 (UTC)
commit 0ab456521533881749639ae35a4b57785454a75b
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Wed Nov 14 11:26:12 2012 -0500
query: use arrays and join() to simplify code
Instead of appending && and || manually.
src/query.js | 52 ++++++++++++++++++----------------------------------
src/sources.js | 16 ++++++++++------
2 files changed, 28 insertions(+), 40 deletions(-)
---
diff --git a/src/query.js b/src/query.js
index ba66f50..f4be70b 100644
--- a/src/query.js
+++ b/src/query.js
@@ -65,69 +65,53 @@ const QueryBuilder = new Lang.Class({
buildFilterLocal: function() {
let path;
- let desktopURI;
- let downloadsURI;
- let documentsURI;
+ let filters = [];
path = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DESKTOP);
if (path)
- desktopURI = Gio.file_new_for_path(path).get_uri();
- else
- desktopURI = '';
+ filters.push('(fn:contains (nie:url(?urn), "%s"))'.format(Gio.file_new_for_path(path).get_uri()));
path = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DOCUMENTS);
if (path)
- documentsURI = Gio.file_new_for_path(path).get_uri();
- else
- documentsURI = '';
+ filters.push('(fn:contains (nie:url(?urn), "%s"))'.format(Gio.file_new_for_path(path).get_uri()));
path = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DOWNLOAD);
if (path)
- downloadsURI = Gio.file_new_for_path(path).get_uri();
- else
- downloadsURI = '';
+ filters.push('(fn:contains (nie:url(?urn), "%s"))'.format(Gio.file_new_for_path(path).get_uri()));
- let filter =
- ('((fn:contains (nie:url(?urn), "%s")) || ' +
- ' (fn:contains (nie:url(?urn), "%s")) || ' +
- ' (fn:contains (nie:url(?urn), "%s")) || ' +
- ' (fn:starts-with (nao:identifier(?urn), "gd:collection:local:")))').format(desktopURI, documentsURI, downloadsURI);
+ filters.push('(fn:starts-with (nao:identifier(?urn), "gd:collection:local:"))');
- return filter;
+ return '(' + filters.join(' || ') + ')';
},
buildFilterNotLocal: function() {
- let sparql = '(';
+ if (Global.sourceManager.getItemsCount() == 0)
+ return '(false)';
+
let sources = Global.sourceManager.getItems();
+ let filters = [];
for (idx in sources) {
let source = sources[idx];
if (!source.builtin)
- sparql += source.getFilter() + ' || ';
+ filters.push(source.getFilter());
}
- sparql += 'false)';
-
- return sparql;
+ return '(' + filters.join(' || ') + ')';
},
_buildFilterString: function(currentType) {
- let sparql = 'FILTER (';
+ let filters = [];
- sparql += Global.searchMatchManager.getFilter();
- sparql += ' && ';
- sparql += Global.sourceManager.getFilter();
- sparql += ' && ';
- sparql += Global.searchCategoryManager.getFilter();
+ filters.push(Global.searchMatchManager.getFilter());
+ filters.push(Global.sourceManager.getFilter());
+ filters.push(Global.searchCategoryManager.getFilter());
if (currentType) {
- sparql += ' && ';
- sparql += currentType.getFilter();
+ filters.push(currentType.getFilter());
}
- sparql += ')';
-
- return sparql;
+ return 'FILTER (' + filters.join(' && ') + ')';
},
_buildOptional: function() {
diff --git a/src/sources.js b/src/sources.js
index c42c31b..93f8e2b 100644
--- a/src/sources.js
+++ b/src/sources.js
@@ -57,14 +57,18 @@ const Source = new Lang.Class({
},
getFilter: function() {
- if (this.id == SourceStock.LOCAL)
- return Global.queryBuilder.buildFilterLocal();
+ let filters = [];
- if (this.id == SourceStock.ALL)
- return '(' + Global.queryBuilder.buildFilterLocal() + ' || '
- + Global.queryBuilder.buildFilterNotLocal() + ')';
+ if (this.id == SourceStock.LOCAL) {
+ filters.push(Global.queryBuilder.buildFilterLocal());
+ } else if (this.id == SourceStock.ALL) {
+ filters.push(Global.queryBuilder.buildFilterLocal());
+ filters.push(Global.queryBuilder.buildFilterNotLocal());
+ } else {
+ filters.push(this._buildFilterResource());
+ }
- return this._buildFilterResource();
+ return '(' + filters.join(' || ') + ')';
},
_buildFilterResource: function() {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]