r88866 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r88865‎ | r88866 | r88867 >
Date:23:44, 25 May 2011
Author:tparscal
Status:deferred
Tags:
Comment:
Added basic context, transclusion and parameter functionality.
Modified paths:
  • /trunk/parsers/wikidom/lib/wiki.Context.js (added) (history)
  • /trunk/parsers/wikidom/lib/wiki.HtmlRenderer.js (modified) (history)
  • /trunk/parsers/wikidom/lib/wiki.WikitextRenderer.js (modified) (history)
  • /trunk/parsers/wikidom/lib/wiki.js (modified) (history)
  • /trunk/parsers/wikidom/tests/wiki.test.js (modified) (history)

Diff [purge]

Index: trunk/parsers/wikidom/tests/wiki.test.js
@@ -119,7 +119,7 @@
120120 {
121121 'type': 'ilink',
122122 'range': { 'offset': 15, 'length': 4 },
123 - 'data': { 'title': 'Main_Page' }
 123+ 'data': { 'namespace': 'Main', 'title': 'Main_Page' }
124124 }
125125 ]
126126 }
@@ -306,3 +306,32 @@
307307 }
308308 ] );
309309 } );
 310+
 311+test( 'Transclusion', function() {
 312+ assertSerializations( [
 313+ {
 314+ 'subject': 'transclusion',
 315+ 'dom': { 'blocks': [ {
 316+ 'type': 'transclusion',
 317+ 'namespace': 'Template',
 318+ 'title': 'Test'
 319+ } ] },
 320+ 'html': '<a href="https://www.mediawiki.org/wiki/Template:Test">Template:Test</a>',
 321+ 'wikitext': '{{Test}}'
 322+ }
 323+ ] );
 324+} );
 325+
 326+test( 'Parameter', function() {
 327+ assertSerializations( [
 328+ {
 329+ 'subject': 'transclusion',
 330+ 'dom': { 'blocks': [ {
 331+ 'type': 'parameter',
 332+ 'name': '1'
 333+ } ] },
 334+ 'html': '{{{1}}}',
 335+ 'wikitext': '{{{1}}}'
 336+ }
 337+ ] );
 338+} );
Index: trunk/parsers/wikidom/lib/wiki.Context.js
@@ -0,0 +1,24 @@
 2+wiki.Context = function() {
 3+
 4+ /* Private Members */
 5+
 6+ var params = {};
 7+
 8+ /* Methods */
 9+
 10+ this.pageExists = function( namespace, title ) {
 11+ return false;
 12+ };
 13+
 14+ this.getPageDom = function( namespace, title ) {
 15+ return '';
 16+ };
 17+
 18+ this.setParam = function( name, document ) {
 19+ params[name] = document;
 20+ };
 21+
 22+ this.getParam = function( name ) {
 23+ return name in params ? params[name] : null;
 24+ };
 25+};
Property changes on: trunk/parsers/wikidom/lib/wiki.Context.js
___________________________________________________________________
Added: svn:eol-style
126 + native
Added: svn:mime-type
227 + text/plain
Index: trunk/parsers/wikidom/lib/wiki.HtmlRenderer.js
@@ -1,7 +1,7 @@
22 /**
33 * Serializes a WikiDom into HTML.
44 */
5 -wiki.HtmlRenderer = function() {
 5+wiki.HtmlRenderer = function( context ) {
66
77 /* Private Members */
88
@@ -12,7 +12,9 @@
1313 'heading': renderHeading,
1414 'paragraph': renderParagraph,
1515 'list': renderList,
16 - 'table': renderTable
 16+ 'table': renderTable,
 17+ 'transclusion': renderTransclusion,
 18+ 'parameter': renderParameter
1719 };
1820
1921 /* Private Methods */
@@ -96,6 +98,20 @@
9799 return out.join( '\n' );
98100 }
99101
 102+ function renderTransclusion( transclusion ) {
 103+ var title = [];
 104+ if ( transclusion.namespace !== 'Main' ) {
 105+ title.push( transclusion.namespace )
 106+ }
 107+ title.push( transclusion.title );
 108+ title = title.join( ':' );
 109+ return wiki.util.xml.tag( 'a', { 'href': '/wiki/' + title }, title );
 110+ }
 111+
 112+ function renderParameter( parameter ) {
 113+ return '{{{' + parameter.name + '}}}';
 114+ }
 115+
100116 function renderItem( item ) {
101117 if ( 'lists' in item && item.lists.length ) {
102118 var out = [];
Index: trunk/parsers/wikidom/lib/wiki.WikitextRenderer.js
@@ -1,7 +1,7 @@
22 /**
33 * Serializes a WikiDom into Wikitext.
44 */
5 -wiki.WikitextRenderer = function() {
 5+wiki.WikitextRenderer = function( context ) {
66
77 /* Private Members */
88
@@ -12,7 +12,9 @@
1313 'heading': renderHeading,
1414 'paragraph': renderParagraph,
1515 'list': renderList,
16 - 'table': renderTable
 16+ 'table': renderTable,
 17+ 'transclusion': renderTransclusion,
 18+ 'parameter': renderParameter
1719 };
1820
1921 /* Private Methods */
@@ -99,6 +101,21 @@
100102 return out.join( '\n' );
101103 }
102104
 105+ function renderTransclusion( transclusion ) {
 106+ var title = [];
 107+ if ( transclusion.namespace === 'Main' ) {
 108+ title.push( '' );
 109+ } else if ( transclusion.namespace !== 'Template' ) {
 110+ title.push( transclusion.namespace )
 111+ }
 112+ title.push( transclusion.title );
 113+ return '{{' + title.join( ':' ) + '}}';
 114+ }
 115+
 116+ function renderParameter( parameter ) {
 117+ return '{{{' + parameter.name + '}}}';
 118+ }
 119+
103120 function renderItem( item, path ) {
104121 if ( 'lists' in item && item.lists.length ) {
105122 var out = [];
Index: trunk/parsers/wikidom/lib/wiki.js
@@ -21,6 +21,13 @@
2222 * table
2323 * rows: Array of arrays of cell objects
2424 * attributes: Plain object
 25+ * transclusion
 26+ * namespace: String
 27+ * title: String
 28+ * parameters: Array of documents
 29+ * parameter
 30+ * name: String or integer
 31+ * default: Document object
2532 *
2633 * // Components
2734 *

Status & tagging log