mediawiki-extensions-Visual.../modules/parser/mediawiki.Title.js

82 lines
1.7 KiB
JavaScript
Raw Normal View History

var Util = require('./ext.Util.js').Util;
function Title ( key, ns, nskey, env ) {
this.key = key;
// Namespace index
this.ns = new Namespace( ns );
// the original ns string
this.nskey = nskey;
this.env = env;
}
Title.prototype.makeLink = function () {
// XXX: links always point to the canonical namespace name.
if ( false && this.nskey ) {
return Util.sanitizeURI( this.env.wgScriptPath +
this.nskey + ':' + this.key );
} else {
var l = this.env.wgScriptPath,
ns = this.ns.getDefaultName();
if ( ns ) {
l += ns + ':';
}
return Util.sanitizeURI( l + this.key );
}
};
Title.prototype.getPrefixedText = function () {
// XXX: links always point to the canonical namespace name.
if ( this.nskey ) {
return Util.sanitizeURI( this.nskey + ':' + this.key );
} else {
var ns = this.ns.getDefaultName();
if ( ns ) {
ns += ':';
}
return Util.sanitizeURI( ns + this.key );
}
};
function Namespace ( id ) {
this.id = id;
}
Namespace.prototype._defaultNamespaceIDs = {
file: -2,
image: -2,
special: -1,
main: 0,
category: 14
};
Namespace.prototype._defaultNamespaceNames = {
'-2': 'File',
'-1': 'Special',
'0': '',
'14': 'Category'
};
Namespace.prototype.isFile = function ( ) {
return this.id === this._defaultNamespaceIDs.file;
};
Namespace.prototype.isCategory = function ( ) {
return this.id === this._defaultNamespaceIDs.category;
};
Namespace.prototype.getDefaultName = function ( ) {
if ( this.id == this._defaultNamespaceIDs.main ) {
return '';
} else {
return this._defaultNamespaceNames[this.id.toString()];
}
};
if (typeof module == "object") {
module.exports.Title = Title;
module.exports.Namespace = Namespace;
}