Skip to content

Commit

Permalink
Fix API output formatting (change lines delimited with * as bold)
Browse files Browse the repository at this point in the history
Problem: on API documentation pages, lines delimited with asterisks
are automatically converted to bold. However, some lines aren't,
such as the one with the url in the main header of the root API page:
https://en.wikipedia.org/w/api.php

Not only this is breaks the standard formatting for module headers, etc,
but if the font used by the browser for monospaced text
doesn't preserve character width between bold and regular weight
(which it should), any layout structures will break.
Example: http://i.imgur.com/PVh6i.png

The regex that applies bold to the lines starting and ending in *
doesn't accept < and > inside the string,
but these are added by the url-formatting regex.
Simply changing the order of these operations fixes the issue.

Note: this change also removes the regex applying italics
      to lines in the $ ... $ form, as suggested by Anomie and Yurik
      in code review comments.

Change-Id: I7173f812bebb8a722fefdaa6cce9fcd554c82c84
  • Loading branch information
waldyrious committed Feb 20, 2013
1 parent 5db75ef commit a943d0d
Showing 1 changed file with 5 additions and 8 deletions.
13 changes: 5 additions & 8 deletions includes/api/ApiFormatBase.php
Expand Up @@ -248,7 +248,7 @@ public function setBufferResult( $value ) {
}

/**
* Sets whether the pretty-printer should format *bold* and $italics$
* Sets whether the pretty-printer should format *bold*
* @param $help bool
*/
public function setHelp( $help = true ) {
Expand All @@ -264,22 +264,19 @@ public function setHelp( $help = true ) {
protected function formatHTML( $text ) {
// Escape everything first for full coverage
$text = htmlspecialchars( $text );

// encode all comments or tags as safe blue strings
$text = str_replace( '&lt;', '<span style="color:blue;">&lt;', $text );
$text = str_replace( '&gt;', '&gt;</span>', $text );
// identify URLs
$protos = wfUrlProtocolsWithoutProtRel();
// This regex hacks around bug 13218 (&quot; included in the URL)
$text = preg_replace( "#(((?i)$protos).*?)(&quot;)?([ \\'\"<>\n]|&lt;|&gt;|&quot;)#", '<a href="\\1">\\1</a>\\3\\4', $text );
// identify requests to api.php
$text = preg_replace( "#api\\.php\\?[^ <\n\t]+#", '<a href="\\0">\\0</a>', $text );
if ( $this->mHelp ) {
// make strings inside * bold
$text = preg_replace( "#\\*[^<>\n]+\\*#", '<b>\\0</b>', $text );
// make strings inside $ italic
$text = preg_replace( "#\\$[^<>\n]+\\$#", '<b><i>\\0</i></b>', $text );
}
// identify URLs
$protos = wfUrlProtocolsWithoutProtRel();
// This regex hacks around bug 13218 (&quot; included in the URL)
$text = preg_replace( "#(((?i)$protos).*?)(&quot;)?([ \\'\"<>\n]|&lt;|&gt;|&quot;)#", '<a href="\\1">\\1</a>\\3\\4', $text );

/**
* Temporary fix for bad links in help messages. As a special case,
Expand Down

0 comments on commit a943d0d

Please sign in to comment.