http://www.mediawiki.org/wiki/Special:Code/MediaWiki/88866
Revision: 88866
Author: tparscal
Date: 2011-05-25 23:44:32 +0000 (Wed, 25 May 2011)
Log Message:
-----------
Added basic context, transclusion and parameter functionality.
Modified Paths:
--------------
trunk/parsers/wikidom/lib/wiki.HtmlRenderer.js
trunk/parsers/wikidom/lib/wiki.WikitextRenderer.js
trunk/parsers/wikidom/lib/wiki.js
trunk/parsers/wikidom/tests/wiki.test.js
Added Paths:
-----------
trunk/parsers/wikidom/lib/wiki.Context.js
Added: trunk/parsers/wikidom/lib/wiki.Context.js
===================================================================
--- trunk/parsers/wikidom/lib/wiki.Context.js (rev 0)
+++ trunk/parsers/wikidom/lib/wiki.Context.js 2011-05-25 23:44:32 UTC (rev
88866)
@@ -0,0 +1,24 @@
+wiki.Context = function() {
+
+ /* Private Members */
+
+ var params = {};
+
+ /* Methods */
+
+ this.pageExists = function( namespace, title ) {
+ return false;
+ };
+
+ this.getPageDom = function( namespace, title ) {
+ return '';
+ };
+
+ this.setParam = function( name, document ) {
+ params[name] = document;
+ };
+
+ this.getParam = function( name ) {
+ return name in params ? params[name] : null;
+ };
+};
Property changes on: trunk/parsers/wikidom/lib/wiki.Context.js
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:eol-style
+ native
Modified: trunk/parsers/wikidom/lib/wiki.HtmlRenderer.js
===================================================================
--- trunk/parsers/wikidom/lib/wiki.HtmlRenderer.js 2011-05-25 23:34:20 UTC
(rev 88865)
+++ trunk/parsers/wikidom/lib/wiki.HtmlRenderer.js 2011-05-25 23:44:32 UTC
(rev 88866)
@@ -1,7 +1,7 @@
/**
* Serializes a WikiDom into HTML.
*/
-wiki.HtmlRenderer = function() {
+wiki.HtmlRenderer = function( context ) {
/* Private Members */
@@ -12,7 +12,9 @@
'heading': renderHeading,
'paragraph': renderParagraph,
'list': renderList,
- 'table': renderTable
+ 'table': renderTable,
+ 'transclusion': renderTransclusion,
+ 'parameter': renderParameter
};
/* Private Methods */
@@ -96,6 +98,20 @@
return out.join( '\n' );
}
+ function renderTransclusion( transclusion ) {
+ var title = [];
+ if ( transclusion.namespace !== 'Main' ) {
+ title.push( transclusion.namespace )
+ }
+ title.push( transclusion.title );
+ title = title.join( ':' );
+ return wiki.util.xml.tag( 'a', { 'href': '/wiki/' + title },
title );
+ }
+
+ function renderParameter( parameter ) {
+ return '{{{' + parameter.name + '}}}';
+ }
+
function renderItem( item ) {
if ( 'lists' in item && item.lists.length ) {
var out = [];
Modified: trunk/parsers/wikidom/lib/wiki.WikitextRenderer.js
===================================================================
--- trunk/parsers/wikidom/lib/wiki.WikitextRenderer.js 2011-05-25 23:34:20 UTC
(rev 88865)
+++ trunk/parsers/wikidom/lib/wiki.WikitextRenderer.js 2011-05-25 23:44:32 UTC
(rev 88866)
@@ -1,7 +1,7 @@
/**
* Serializes a WikiDom into Wikitext.
*/
-wiki.WikitextRenderer = function() {
+wiki.WikitextRenderer = function( context ) {
/* Private Members */
@@ -12,7 +12,9 @@
'heading': renderHeading,
'paragraph': renderParagraph,
'list': renderList,
- 'table': renderTable
+ 'table': renderTable,
+ 'transclusion': renderTransclusion,
+ 'parameter': renderParameter
};
/* Private Methods */
@@ -99,6 +101,21 @@
return out.join( '\n' );
}
+ function renderTransclusion( transclusion ) {
+ var title = [];
+ if ( transclusion.namespace === 'Main' ) {
+ title.push( '' );
+ } else if ( transclusion.namespace !== 'Template' ) {
+ title.push( transclusion.namespace )
+ }
+ title.push( transclusion.title );
+ return '{{' + title.join( ':' ) + '}}';
+ }
+
+ function renderParameter( parameter ) {
+ return '{{{' + parameter.name + '}}}';
+ }
+
function renderItem( item, path ) {
if ( 'lists' in item && item.lists.length ) {
var out = [];
Modified: trunk/parsers/wikidom/lib/wiki.js
===================================================================
--- trunk/parsers/wikidom/lib/wiki.js 2011-05-25 23:34:20 UTC (rev 88865)
+++ trunk/parsers/wikidom/lib/wiki.js 2011-05-25 23:44:32 UTC (rev 88866)
@@ -21,6 +21,13 @@
* table
* rows: Array of arrays of cell objects
* attributes: Plain object
+ * transclusion
+ * namespace: String
+ * title: String
+ * parameters: Array of documents
+ * parameter
+ * name: String or integer
+ * default: Document object
*
* // Components
*
Modified: trunk/parsers/wikidom/tests/wiki.test.js
===================================================================
--- trunk/parsers/wikidom/tests/wiki.test.js 2011-05-25 23:34:20 UTC (rev
88865)
+++ trunk/parsers/wikidom/tests/wiki.test.js 2011-05-25 23:44:32 UTC (rev
88866)
@@ -119,7 +119,7 @@
{
'type': 'ilink',
'range': { 'offset':
15, 'length': 4 },
- 'data': { 'title':
'Main_Page' }
+ 'data': { 'namespace':
'Main', 'title': 'Main_Page' }
}
]
}
@@ -306,3 +306,32 @@
}
] );
} );
+
+test( 'Transclusion', function() {
+ assertSerializations( [
+ {
+ 'subject': 'transclusion',
+ 'dom': { 'blocks': [ {
+ 'type': 'transclusion',
+ 'namespace': 'Template',
+ 'title': 'Test'
+ } ] },
+ 'html': '<a
href="/wiki/Template:Test">Template:Test</a>',
+ 'wikitext': '{{Test}}'
+ }
+ ] );
+} );
+
+test( 'Parameter', function() {
+ assertSerializations( [
+ {
+ 'subject': 'transclusion',
+ 'dom': { 'blocks': [ {
+ 'type': 'parameter',
+ 'name': '1'
+ } ] },
+ 'html': '{{{1}}}',
+ 'wikitext': '{{{1}}}'
+ }
+ ] );
+} );
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs