Skip to content

Commit 4b030b3

Browse files
committed
fix: cleaning prefixes removes all instances instead of retaining wanted ones
1 parent ca78c10 commit 4b030b3

File tree

1 file changed

+16
-23
lines changed

1 file changed

+16
-23
lines changed

wikibase/queryService/ui/queryHelper/QueryHelper.js

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ wikibase.queryService.ui.queryHelper.QueryHelper = ( function( $, wikibase, _ )
8686
SELF.prototype.setQuery = function( query ) {
8787
var prefixes = wikibase.queryService.RdfNamespaces.ALL_PREFIXES;
8888
this._query.parse( query, prefixes );
89-
9089
this._selectorBox.setQuery( this._query );
9190
};
9291

@@ -111,28 +110,22 @@ wikibase.queryService.ui.queryHelper.QueryHelper = ( function( $, wikibase, _ )
111110
* @private
112111
*/
113112
SELF.prototype._cleanQueryPrefixes = function( query ) {
114-
var prefixRegex = /PREFIX ([a-z]+): <(.*)>/gi,
115-
m,
116-
prefixes = {},
117-
cleanQuery = query.replace( prefixRegex, '' ).replace( /\n+/g, '\n' );
118-
119-
while ( ( m = prefixRegex.exec( query ) ) ) {
120-
var prefix = m[1];
121-
var uri = m[2].replace( /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&' );
122-
123-
var newQuery = cleanQuery.replace( new RegExp( '<' + uri + '([^/>#]+?)>', 'gi' ),
124-
prefix + ':$1' );
125-
126-
if ( cleanQuery !== newQuery ) {
127-
cleanQuery = newQuery;
128-
if ( !wikibase.queryService.RdfNamespaces.STANDARD_PREFIXES[prefix] ) {
129-
prefixes[m[0]] = true;
130-
}
131-
}
132-
}
133-
134-
cleanQuery = Object.keys( prefixes ).join( '\n' ) + '\n\n' + cleanQuery.trim();
135-
return cleanQuery;
113+
var prefixRe = /^\s*PREFIX\s+([a-z]+):\s+<.*>\s*$/;
114+
return = query.split( '\n' )
115+
.map(function ( line ) {
116+
if ( !prefixRe.test( line ) ) {
117+
return line;
118+
}
119+
line = line.trim();
120+
var match = line.match( prefixRe );
121+
var prefix = match[1];
122+
if ( prefix in wikibase.queryService.RdfNamespaces.STANDARD_PREFIXES ) {
123+
return null;
124+
}
125+
return line;
126+
})
127+
.filter( Boolean )
128+
.join( '\n' );
136129
};
137130

138131
/**

0 commit comments

Comments
 (0)