Lucas Werkmeister (WMDE) has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/385995 )
Change subject: Improve code samples for several languages
......................................................................
Improve code samples for several languages
Use heredocs/nowdocs for PHP and Ruby, triple-quoted strings for Python,
and concatenate multiple string literals for Java and JavaScript.
Change-Id: I60c12c835836241b13070d82b356ec0f80289838
---
M wikibase/queryService/api/CodeSamples.js
1 file changed, 58 insertions(+), 13 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/wikidata/query/gui
refs/changes/95/385995/1
diff --git a/wikibase/queryService/api/CodeSamples.js
b/wikibase/queryService/api/CodeSamples.js
index 1267afe..ba9cee7 100644
--- a/wikibase/queryService/api/CodeSamples.js
+++ b/wikibase/queryService/api/CodeSamples.js
@@ -40,6 +40,18 @@
},
PHP: {
escape: function( query ) {
+ // try nowdoc first
+ var identifiers = [ 'SPARQL', 'QUERY',
'EOF' ];
+ for ( var index in identifiers ) {
+ var identifier = identifiers[
index ];
+ if ( !( new RegExp( '^' +
identifier + '$', 'm' ).test( query ) ) ) {
+ return "<<< '" +
identifier + "'\n"
+ + query + '\n'
+ + identifier;
+ }
+ }
+
+ // fall back to double quoted
var escapedQuery = query
.replace( /\\/g, '\\\\' )
.replace( /"/g, '\\"' )
@@ -50,11 +62,22 @@
},
'JavaScript (jQuery)': {
escape: function( query ) {
- var escapedQuery = query
- .replace( /\\/g, '\\\\' )
- .replace( /"/g, '\\"' )
- .replace( /\n/g, '\\n' );
- return '"' + escapedQuery + '"';
+ var code = '';
+ var lines = query.split( '\n' );
+ for ( var index in lines ) {
+ var line = lines[ index ];
+ var escapedLine = line
+ .replace( /\\/g, '\\\\'
)
+ .replace( /"/g, '\\"' );
+ if ( index > 0 ) {
+ code += '\\n" +\n
';
+ }
+ code += '"' + escapedLine;
+ }
+ if ( index > 0 ) {
+ code += '"';
+ }
+ return code;
},
mimetype: 'application/javascript'
},
@@ -70,24 +93,46 @@
},
Java: {
escape: function( query ) {
- var escapedQuery = query
- .replace( /\\/g, '\\\\' )
- .replace( /"/g, '\\"' )
- .replace( /\n/g, '\\n' );
- return '"' + escapedQuery + '"';
+ var code = '';
+ var lines = query.split( '\n' );
+ for ( var index in lines ) {
+ var line = lines[ index ];
+ var escapedLine = line
+ .replace( /\\/g, '\\\\'
)
+ .replace( /"/g, '\\"' );
+ if ( index > 0 ) {
+ code += '\\n" +\n
';
+ }
+ code += '"' + escapedLine;
+ }
+ if ( index > 0 ) {
+ code += '"';
+ }
+ return code;
}
},
Python: {
escape: function( query ) {
var escapedQuery = query
.replace( /\\/g, '\\\\' )
- .replace( /"/g, '\\"' )
- .replace( /\n/g, '\\n' );
- return '"' + escapedQuery + '"';
+ .replace( /"""/g, '""\\"' );
+ return '"""' + escapedQuery + '"""';
}
},
Ruby: {
escape: function( query ) {
+ // try heredoc first
+ var identifiers = [ 'SPARQL', 'QUERY',
'EOF' ];
+ for ( var index in identifiers ) {
+ var identifier = identifiers[
index ];
+ if ( !( new RegExp( '^' +
identifier + '$', 'm' ).test( query ) ) ) {
+ return "<<'" +
identifier + "'.chop\n" // .chop removes the trailing newline
+ + query + '\n'
+ + identifier;
+ }
+ }
+
+ // fall back to double quoted
var escapedQuery = query
.replace( /\\/g, '\\\\' )
.replace( /"/g, '\\"' )
--
To view, visit https://gerrit.wikimedia.org/r/385995
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I60c12c835836241b13070d82b356ec0f80289838
Gerrit-PatchSet: 1
Gerrit-Project: wikidata/query/gui
Gerrit-Branch: master
Gerrit-Owner: Lucas Werkmeister (WMDE) <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
