Skip to content

Commit 8b5f492

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

File tree

1 file changed

+16
-22
lines changed

1 file changed

+16
-22
lines changed

wikibase/queryService/ui/queryHelper/QueryHelper.js

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -111,28 +111,22 @@ wikibase.queryService.ui.queryHelper.QueryHelper = ( function( $, wikibase, _ )
111111
* @private
112112
*/
113113
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;
114+
var prefixRe = /^\s*PREFIX\s+([a-z]+):\s+<.*>\s*$/;
115+
return = query.split( '\n' )
116+
.map(function ( line ) {
117+
if ( !prefixRe.test( line ) ) {
118+
return line;
119+
}
120+
line = line.trim();
121+
var match = line.match( prefixRe );
122+
var prefix = match[1];
123+
if ( prefix in wikibase.queryService.RdfNamespaces.STANDARD_PREFIXES ) {
124+
return null;
125+
}
126+
return line;
127+
})
128+
.filter( Boolean )
129+
.join( '\n' );
136130
};
137131

138132
/**

0 commit comments

Comments
 (0)