r75458 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r75457‎ | r75458 | r75459 >
Date:19:30, 26 October 2010
Author:reedy
Status:deferred (Comments)
Tags:
Comment:
Stylize before any more work on this
Modified paths:
  • /trunk/extensions/GoogleNewsSitemap/GoogleNewsSitemap.i18n.php (modified) (history)
  • /trunk/extensions/GoogleNewsSitemap/GoogleNewsSitemap.php (modified) (history)
  • /trunk/extensions/GoogleNewsSitemap/GoogleNewsSitemap_body.php (modified) (history)

Diff [purge]

Index: trunk/extensions/GoogleNewsSitemap/GoogleNewsSitemap_body.php
@@ -1,5 +1,5 @@
22 <?php
3 -if (!defined('MEDIAWIKI')) die();
 3+if ( !defined( 'MEDIAWIKI' ) ) die();
44
55 /**
66 * Class GoogleNewsSitemap creates Atom/RSS feeds for Wikinews
@@ -85,24 +85,24 @@
8686 if ( null == $wgLocaltimezone )
8787 $wgLocaltimezone = date_default_timezone_get();
8888 date_default_timezone_set( $wgLocaltimezone );
89 - //$url = __FILE__;
 89+ // $url = __FILE__;
9090
9191 $this->dpl_parm( $par );
9292
9393
9494 $wgFeedClasses[] = array( 'sitemap' => 'SitemapFeed' );
9595
96 - if ( 'sitemap' == $this->params['feed'] ){
 96+ if ( 'sitemap' == $this->params['feed'] ) {
9797 $feed = new SitemapFeed(
98 - $wgServer.$wgScriptPath,
 98+ $wgServer . $wgScriptPath,
9999 date( DATE_ATOM )
100100 );
101 - }else{
 101+ } else {
102102 // FIXME: These should be configurable at some point
103103 $feed = new $wgFeedClasses[ $this->params['feed'] ](
104104 $wgSitename,
105105 $wgSitename . ' ' . $this->params['feed'] . ' feed',
106 - $wgServer.$wgScriptPath,
 106+ $wgServer . $wgScriptPath,
107107 date( DATE_ATOM ),
108108 $wgSitename
109109 );
@@ -111,17 +111,17 @@
112112 $feed->outHeader();
113113
114114 // main routine to output items
115 - if ( isset( $this->param['error'] ) ){
 115+ if ( isset( $this->param['error'] ) ) {
116116 echo $this->param['error'];
117 - }else{
 117+ } else {
118118 $dbr = wfGetDB( DB_SLAVE );
119119 $sql = $this->dpl_buildSQL();
120 - //Debug line
121 - //echo "\n<p>$sql</p>\n";
 120+ // Debug line
 121+ // echo "\n<p>$sql</p>\n";
122122 $res = $dbr->query ( $sql );
123123
124124 // FIXME: figure out how to fail with no results gracefully
125 - if ( $dbr->numRows( $res ) == 0 ){
 125+ if ( $dbr->numRows( $res ) == 0 ) {
126126 $feed->outFooter();
127127 if ( false == $this->params['suppressErrors'] )
128128 return htmlspecialchars( wfMsg( 'gnsm_noresults' ) );
@@ -129,16 +129,16 @@
130130 return '';
131131 }
132132
133 - while ($row = $dbr->fetchObject( $res ) ) {
134 - $title = Title::makeTitle( $row->page_namespace, $row->page_title);
 133+ while ( $row = $dbr->fetchObject( $res ) ) {
 134+ $title = Title::makeTitle( $row->page_namespace, $row->page_title );
135135
136 - if ( $title ){
137 - //This is printing things in places it shouldn't
 136+ if ( $title ) {
 137+ // This is printing things in places it shouldn't
138138 // print $this->params['nameSpace'];
139139
140140 $titleText = ( true == $this->params['nameSpace'] ) ? $title->getPrefixedText() : $title->getText();
141141
142 - if ( 'sitemap' == $this->params['feed'] ){
 142+ if ( 'sitemap' == $this->params['feed'] ) {
143143
144144 $this->pubDate = isset( $row->cl_timestamp ) ? $row->cl_timestamp : date( DATE_ATOM );
145145 $feedArticle = new Article( $title );
@@ -150,24 +150,24 @@
151151 wfTimeStamp( TS_ISO_8601, $feedArticle->getTouched() ),
152152 $feed->getPriority( $this->priority )
153153 );
154 -
155 - }elseif ( ('atom' == $this->params['feed'] ) || ( 'rss' == $this->params['feed'] ) ){
156 -
 154+
 155+ } elseif ( ( 'atom' == $this->params['feed'] ) || ( 'rss' == $this->params['feed'] ) ) {
 156+
157157 $this->Date = isset( $row->cl_timestamp ) ? $row->cl_timestamp : date( DATE_ATOM );
158 - if ( isset( $row->comment ) ){
 158+ if ( isset( $row->comment ) ) {
159159 $comments = htmlspecialchars( $row->comment );
160 - }else{
 160+ } else {
161161 $talkpage = $title->getTalkPage();
162162 $comments = $talkpage->getFullURL();
163163 }
164 - $titleText = (true === $this->params['nameSpace'] ) ? $title->getPrefixedText() : $title->getText();
 164+ $titleText = ( true === $this->params['nameSpace'] ) ? $title->getPrefixedText() : $title->getText();
165165 $feedItem = new FeedItem(
166166 $titleText,
167167 $this->feedItemDesc( $row ),
168168 $title->getFullURL(),
169169 $this->Date,
170170 $this->feedItemAuthor( $row ),
171 - $comments);
 171+ $comments );
172172 }
173173 $feed->outItem( $feedItem );
174174 }
@@ -179,26 +179,26 @@
180180 /**
181181 * Build sql
182182 **/
183 - public function dpl_buildSQL(){
184 -
 183+ public function dpl_buildSQL() {
 184+
185185 $sqlSelectFrom = 'SELECT page_namespace, page_title, page_id, c1.cl_timestamp FROM ' . $this->params['dbr']->tableName( 'page' );
186186
187 - if ( $this->params['nameSpace'] ){
 187+ if ( $this->params['nameSpace'] ) {
188188 $sqlWhere = ' WHERE page_namespace=' . $this->params['iNameSpace'] . ' ';
189 - }else{
 189+ } else {
190190 $sqlWhere = ' WHERE 1=1 ';
191191 }
192192
193193 // If flagged revisions is in use, check which options selected.
194194 // FIXME: double check the default options in function::dpl_parm; what should it default to?
195 - if( function_exists('efLoadFlaggedRevs') ) {
 195+ if ( function_exists( 'efLoadFlaggedRevs' ) ) {
196196 $flaggedPages = $this->params['dbr']->tableName( 'flaggedpages' );
197197 $filterSet = array( 'only', 'exclude' );
198198 # Either involves the same JOIN here...
199 - if( in_array( $this->params['stable'], $filterSet ) || in_array( $this->params['quality'], $filterSet ) ) {
 199+ if ( in_array( $this->params['stable'], $filterSet ) || in_array( $this->params['quality'], $filterSet ) ) {
200200 $sqlSelectFrom .= " LEFT JOIN $flaggedPages ON page_id = fp_page_id";
201201 }
202 - switch( $this->params['stable'] ){
 202+ switch( $this->params['stable'] ) {
203203 case 'only':
204204 $sqlWhere .= ' AND fp_stable IS NOT NULL ';
205205 break;
@@ -206,7 +206,7 @@
207207 $sqlWhere .= ' AND fp_stable IS NULL ';
208208 break;
209209 }
210 - switch( $this->params['quality'] ){
 210+ switch( $this->params['quality'] ) {
211211 case 'only':
212212 $sqlWhere .= ' AND fp_quality >= 1';
213213 break;
@@ -228,7 +228,7 @@
229229
230230 $currentTableNumber = 0;
231231
232 - for ( $i = 0; $i < $this->params['catCount']; $i++ ){
 232+ for ( $i = 0; $i < $this->params['catCount']; $i++ ) {
233233
234234 $sqlSelectFrom .= ' INNER JOIN ' . $this->params['dbr']->tableName( 'categorylinks' );
235235 $sqlSelectFrom .= ' AS c' . ( $currentTableNumber + 1 ) . ' ON page_id = c';
@@ -239,8 +239,8 @@
240240 $currentTableNumber++;
241241 }
242242
243 - for ( $i = 0; $i < $this->params['notCatCount']; $i++ ){
244 - //echo "notCategory parameter $i<br />\n";
 243+ for ( $i = 0; $i < $this->params['notCatCount']; $i++ ) {
 244+ // echo "notCategory parameter $i<br />\n";
245245 $sqlSelectFrom .= ' LEFT OUTER JOIN ' . $this->params['dbr']->tableName( 'categorylinks' );
246246 $sqlSelectFrom .= ' AS c' . ( $currentTableNumber + 1 ) . ' ON page_id = c' . ( $currentTableNumber + 1 );
247247 $sqlSelectFrom .= '.cl_from AND c' . ( $currentTableNumber + 1 );
@@ -251,7 +251,7 @@
252252 $currentTableNumber++;
253253 }
254254
255 - if ('lastedit' == $this->params['orderMethod'] )
 255+ if ( 'lastedit' == $this->params['orderMethod'] )
256256 $sqlWhere .= ' ORDER BY page_touched ';
257257 else
258258 $sqlWhere .= ' ORDER BY c1.cl_timestamp ';
@@ -263,12 +263,12 @@
264264
265265 // FIXME: Note: this is not a boolean type check - will also trap count = 0 which may
266266 // accidentally give unlimited returns
267 - if ( 0 < $this->params['count'] ){
 267+ if ( 0 < $this->params['count'] ) {
268268 $sqlWhere .= ' LIMIT ' . $this->params['count'];
269269 }
270270
271 - //debug line
272 - //echo "<p>$sqlSelectFrom$sqlWhere;</p>\n";
 271+ // debug line
 272+ // echo "<p>$sqlSelectFrom$sqlWhere;</p>\n";
273273
274274 return $sqlSelectFrom . $sqlWhere;
275275 }
@@ -278,7 +278,7 @@
279279 **
280280 * FIXME this includes a lot of DynamicPageList cruft in need of thinning.
281281 **/
282 - public function dpl_parm( $par ){
 282+ public function dpl_parm( $par ) {
283283 global $wgContLang;
284284 global $wgRequest;
285285
@@ -286,7 +286,7 @@
287287 // FIXME: note: if ( false === $count ) then no count has ever been set
288288 // however, there's still no guarantee $count <> zero || NULL
289289 $this->params['count'] = $this->wgDPLmaxResultCount;
290 -
 290+
291291 $this->params['orderMethod'] = 'categoryadd';
292292 $this->params['order'] = 'descending';
293293 $this->params['redirects'] = 'exclude';
@@ -301,8 +301,8 @@
302302 $this->params['suppressErrors'] = false;
303303
304304 $this->params['feed'] = 'atom';
305 - $feedType = explode( '/', $par, 2);
306 - switch( strtolower($feedType[0])){
 305+ $feedType = explode( '/', $par, 2 );
 306+ switch( strtolower( $feedType[0] ) ) {
307307 case 'rss':
308308 $this->params['feed'] = 'rss';
309309 break;
@@ -312,56 +312,56 @@
313313 default:
314314 $this->params['feed'] = 'atom';
315315 break;
316 - }
 316+ }
317317
318318 $parser = new Parser;
319319 $poptions = new ParserOptions;
320320
321 - foreach ( $params as $key=>$value ){
322 - switch ( $key ){
 321+ foreach ( $params as $key => $value ) {
 322+ switch ( $key ) {
323323 case 'category':
324324 $title = Title::newFromText( $parser->transformMsg( $value, $poptions ) );
325325
326 - if ( is_object( $title ) ){
 326+ if ( is_object( $title ) ) {
327327 $this->categories[] = $title;
328 - }else{
 328+ } else {
329329 echo "Explode on category.\n";
330330 continue;
331331 }
332332 break;
333333 case 'notcategory':
334 - //echo "Got notcategory $value\n";
 334+ // echo "Got notcategory $value\n";
335335 $title = Title::newFromText( $parser->transformMsg( $value, $poptions ) );
336336 if ( is_object( $title ) )
337337 $this->notCategories[] = $title;
338 - else{
 338+ else {
339339 echo 'Explode on notCategory.';
340340 continue;
341341 }
342342 break;
343343 case 'namespace':
344 - if ( $value == intval( $value ) ){
 344+ if ( $value == intval( $value ) ) {
345345 $this->params['iNameSpace'] = intval( $value );
346 - if ( 0 <= $this->params['iNameSpace'] ){
 346+ if ( 0 <= $this->params['iNameSpace'] ) {
347347 $this->params['nameSpace'] = true;
348 - }else{
 348+ } else {
349349 $this->params['nameSpace'] = false;
350350 }
351 - }else{
 351+ } else {
352352 $ns = $wgContLang->getNsIndex( $value );
353 - if ( null !== $ns ){
 353+ if ( null !== $ns ) {
354354 $this->params['iNameSpace'] = $ns;
355355 $this->params['nameSpace'] = true;
356356 }
357357 }
358358 break;
359359 case 'count':
360 - if ( ( $this->wgDPLminResultCount < $value ) && ( $value < $this->wgDPLmaxResultCount ) ){
 360+ if ( ( $this->wgDPLminResultCount < $value ) && ( $value < $this->wgDPLmaxResultCount ) ) {
361361 $this->params['count'] = intval( $value );
362362 }
363363 break;
364364 case 'order';
365 - switch ( $value ){
 365+ switch ( $value ) {
366366 case 'ascending':
367367 $this->params['order'] = 'ascending';
368368 break;
@@ -372,7 +372,7 @@
373373 }
374374 break;
375375 case 'ordermethod';
376 - switch ( $value ){
 376+ switch ( $value ) {
377377 case 'lastedit':
378378 $this->params['orderMethod'] = 'lastedit';
379379 break;
@@ -383,7 +383,7 @@
384384 }
385385 break;
386386 case 'redirects';
387 - switch ( $value ){
 387+ switch ( $value ) {
388388 case 'include':
389389 $this->params['redirects'] = 'include';
390390 break;
@@ -397,7 +397,7 @@
398398 }
399399 break;
400400 case 'stablepages':
401 - switch ( $value ){
 401+ switch ( $value ) {
402402 case 'include':
403403 $this->params['stable'] = 'include';
404404 break;
@@ -411,7 +411,7 @@
412412 }
413413 break;
414414 case 'qualitypages':
415 - switch ( $value ){
 415+ switch ( $value ) {
416416 case 'include':
417417 $this->params['quality'] = 'include';
418418 break;
@@ -443,26 +443,26 @@
444444 $this->params['catCount'] = count( $this->categories );
445445 $this->params['notCatCount'] = count( $this->notCategories );
446446 $totalCatCount = $this->params['catCount'] + $this->params['notCatCount'];
447 -
448 - if (( $this->params['catCount'] < 1 && false == $this->params['nameSpace'] ) || ( $totalCatCount < $this->wgDPlminCategories )){
449 - //echo "Boom on catCount\n";
 447+
 448+ if ( ( $this->params['catCount'] < 1 && false == $this->params['nameSpace'] ) || ( $totalCatCount < $this->wgDPlminCategories ) ) {
 449+ // echo "Boom on catCount\n";
450450 $parser = new Parser;
451451 $poptions = new ParserOptions;
452452 $feed = Title::newFromText( $parser->transformMsg( 'Published', $poptions ) );
453 - if ( is_object( $feed ) ){
 453+ if ( is_object( $feed ) ) {
454454 $this->categories[] = $feed;
455455 $this->params['catCount'] = count( $this->categories );
456 - }else{
 456+ } else {
457457 echo "\$feed is not an object.\n";
458458 continue;
459459 }
460460 }
461461
462 - if ( ( $totalCatCount > $this->wgDPlmaxCategories ) && ( !$this->wgDPLallowUnlimitedCategories ) ){
 462+ if ( ( $totalCatCount > $this->wgDPlmaxCategories ) && ( !$this->wgDPLallowUnlimitedCategories ) ) {
463463 $this->params['error'] = htmlspecialchars( wfMsg( 'intersection_toomanycats' ) ); // "!!too many categories!!";
464464 }
465465
466 - //disallow showing date if the query doesn't have an inclusion category parameter
 466+ // disallow showing date if the query doesn't have an inclusion category parameter
467467 if ( $this->params['count'] < 1 )
468468 $this->params['addFirstCategoryDate'] = false;
469469
@@ -478,37 +478,37 @@
479479 return isset( $row->comment ) ? htmlspecialchars( $row->comment ) : '';
480480 }
481481
482 - function getKeywords ( $title ){
 482+ function getKeywords ( $title ) {
483483 $cats = $title->getParentCategories();
484484 $str = '';
485 - #the following code is based (stolen) from r56954 of flagged revs.
 485+ # the following code is based (stolen) from r56954 of flagged revs.
486486 $catMap = Array();
487487 $catMask = Array();
488488 $msg = wfMsg( 'gnsm_categorymap' );
489489 if ( !wfEmptyMsg( 'gnsm_categorymap', $msg ) ) {
490 - $list = explode( "\n*", "\n$msg");
491 - foreach($list as $item) {
492 - $mapping = explode('|', $item, 2);
 490+ $list = explode( "\n*", "\n$msg" );
 491+ foreach ( $list as $item ) {
 492+ $mapping = explode( '|', $item, 2 );
493493 if ( count( $mapping ) == 2 ) {
494 - if ( trim( $mapping[1] ) == '__MASK__') {
495 - $catMask[trim($mapping[0])] = true;
 494+ if ( trim( $mapping[1] ) == '__MASK__' ) {
 495+ $catMask[trim( $mapping[0] )] = true;
496496 } else {
497 - $catMap[trim($mapping[0])] = trim($mapping[1]);
 497+ $catMap[trim( $mapping[0] )] = trim( $mapping[1] );
498498 }
499499 }
500500 }
501501 }
502 - foreach ( $cats as $key => $val ){
 502+ foreach ( $cats as $key => $val ) {
503503 $cat = str_replace( '_', ' ', trim( substr( $key, strpos( $key, ':' ) + 1 ) ) );
504 - if (!isset($catMask[$cat])) {
505 - if (isset($catMap[$cat])) {
 504+ if ( !isset( $catMask[$cat] ) ) {
 505+ if ( isset( $catMap[$cat] ) ) {
506506 $str .= ', ' . str_replace( '_', ' ', trim ( $catMap[$cat] ) );
507507 } else {
508508 $str .= ', ' . $cat;
509509 }
510510 }
511511 }
512 - $str = substr( $str, 2 ); #to remove leading ', '
 512+ $str = substr( $str, 2 ); # to remove leading ', '
513513 return $str;
514514 }
515515
@@ -519,7 +519,7 @@
520520 **
521521 * Base class for basic SiteMap support, for building url containers.
522522 **/
523 -class FeedSitemapItem{
 523+class FeedSitemapItem {
524524 /**
525525 * Var string
526526 **/
@@ -529,7 +529,7 @@
530530 var $lastMod = '';
531531 var $priority = '';
532532
533 - function __construct( $url, $pubDate, $keywords = '', $lastMod = '', $priority = ''){
 533+ function __construct( $url, $pubDate, $keywords = '', $lastMod = '', $priority = '' ) {
534534 $this->url = $url;
535535 $this->pubDate = $pubDate;
536536 $this->keywords = $keywords;
@@ -537,29 +537,29 @@
538538 $this->priority = $priority;
539539 }
540540
541 - public function xmlEncode( $string ){
 541+ public function xmlEncode( $string ) {
542542 $string = str_replace( "\r\n", "\n", $string );
543543 $string = preg_replace( '/[\x00-\x08\x0b\x0c\x0e-\x1f]/', '', $string );
544544 return htmlspecialchars( $string );
545545 }
546546
547 - public function getUrl(){
 547+ public function getUrl() {
548548 return $this->url;
549549 }
550550
551 - public function getPriority(){
 551+ public function getPriority() {
552552 return $this->priority;
553553 }
554554
555 - public function getLastMod(){
 555+ public function getLastMod() {
556556 return $this->lastMod;
557557 }
558558
559 - public function getKeywords (){
 559+ public function getKeywords () {
560560 return $this->xmlEncode( $this->keywords );
561561 }
562562
563 - public function getPubDate(){
 563+ public function getPubDate() {
564564 return $this->pubDate;
565565 }
566566
@@ -588,7 +588,7 @@
589589
590590 }
591591
592 - function outXmlHeader(){
 592+ function outXmlHeader() {
593593 global $wgStylePath, $wgStyleVersion;
594594
595595 $this->httpHeaders();
@@ -603,18 +603,18 @@
604604 **/
605605 function contentType() {
606606 global $wgRequest;
607 - $ctype = $wgRequest->getVal('ctype','application/xml');
608 - $allowedctypes = array('application/xml','text/xml','application/rss+xml','application/atom+xml');
609 - return (in_array($ctype, $allowedctypes) ? $ctype : 'application/xml');
 607+ $ctype = $wgRequest->getVal( 'ctype', 'application/xml' );
 608+ $allowedctypes = array( 'application/xml', 'text/xml', 'application/rss+xml', 'application/atom+xml' );
 609+ return ( in_array( $ctype, $allowedctypes ) ? $ctype : 'application/xml' );
610610 }
611611
612612 }
613613
614 -class SitemapFeed extends FeedSitemapItem{
 614+class SitemapFeed extends FeedSitemapItem {
615615 /**
616616 * Output feed headers
617617 **/
618 - function outHeader(){
 618+ function outHeader() {
619619 $this->outXmlHeader();
620620 ?>
621621 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
@@ -635,21 +635,21 @@
636636 <news:publication_date>
637637 <?php print $item->getPubDate() ?>
638638 </news:publication_date>
639 - <?php if( $item->getKeywords() ){
 639+ <?php if ( $item->getKeywords() ) {
640640 echo '<news:keywords>' . $item->getKeywords() . "</news:keywords>\n";
641641 }
642642 ?>
643643 </news:news>
644 - <?php if( $item->getLastMod() ){ ?>
 644+ <?php if ( $item->getLastMod() ) { ?>
645645 <lastmod>
646646 <?php print $item->getLastMod(); ?>
647647 </lastmod>
648 - <?php }?>
649 - <?php if( $item->getPriority() ){ ?>
 648+ <?php } ?>
 649+ <?php if ( $item->getPriority() ) { ?>
650650 <priority>
651651 <? print $item->getPriority(); ?>
652652 </priority>
653 - <?php }?>
 653+ <?php } ?>
654654 </url>
655655 <?php
656656 }
@@ -657,7 +657,7 @@
658658 /**
659659 * Output SiteMap 0.9 footer
660660 **/
661 - function outFooter(){
 661+ function outFooter() {
662662 echo '</urlset>';
663663 }
664664
Index: trunk/extensions/GoogleNewsSitemap/GoogleNewsSitemap.i18n.php
@@ -7,7 +7,7 @@
88 * @ingroup Extensions
99 */
1010
11 -$messages= array();
 11+$messages = array();
1212
1313 /** English
1414 * @author Amgine
Index: trunk/extensions/GoogleNewsSitemap/GoogleNewsSitemap.php
@@ -1,5 +1,5 @@
22 <?php
3 -if (!defined('MEDIAWIKI')) {
 3+if ( !defined( 'MEDIAWIKI' ) ) {
44 echo <<<EOT
55 To install GoogleNewsSitemap extension, an extension special page, put the following line in LocalSettings.php:
66 require_once( dirname(__FILE__) . '/extensions/GoogleNewsSitemap/GoogleNewsSitemap.php' );
@@ -61,7 +61,7 @@
6262 'url' => 'http://www.mediawiki.org/wiki/Extension:GoogleNewsSitemap',
6363 );
6464
65 -$dir = dirname(__FILE__) . '/';
 65+$dir = dirname( __FILE__ ) . '/';
6666 $wgExtensionMessagesFiles['GoogleNewsSitemap'] = $dir . 'GoogleNewsSitemap.i18n.php';
6767 $wgExtensionAliasesFiles['GoogleNewsSitemap'] = $dir . 'GoogleNewsSitemap.alias.php';
6868 $wgAutoloadClasses['GoogleNewsSitemap'] = $dir . 'GoogleNewsSitemap_body.php';

Follow-up revisions

RevisionCommit summaryAuthorDate
r76544Fixup tabs to spaces missed from r75458reedy22:24, 11 November 2010

Comments

#Comment by MarkAHershberger (talk | contribs)   18:10, 11 November 2010

stylizing missed the non-tab indention in i18n.php

#Comment by MarkAHershberger (talk | contribs)   18:12, 11 November 2010

Also these two lines in GoogleNewsSitemap.php

    echo <<<EOT
    exit( 1 );
#Comment by Reedy (talk | contribs)   22:20, 11 November 2010

Does stylize actually do space to tab indentation? Hmmmm

Status & tagging log