/* ==================================================================================================== version.js v0.2 * Adds a version.specific property that gives accurate version information Developed by: aubergine http://forums.wz2100.net/memberlist.php?mode=viewprofile&u=4994 Home page: https://warzone.atlassian.net/wiki/display/backportjs/version.js Released under the MIT, BSD, and GPL Licenses. v0.1 - Initial release v0.2 - Updated for Warzone 3.1 Beta 4 ==================================================================================================== */ (function() { if (!backport) { throw new Error("Unable to backport version: version.js requires backport.js"); } else { var setVer = function(major,minor,status,maint,year,month,day) { var ver; // determine value of "version" global if (staus=="stable") { // .. ver = new String(""+major+"."+minor+"."+maint); } else { // ._ ver = new String(""+major+"."+minor+"_"+status+maint); } // now add more granular properties ver.native = version || undefined; ver.major = major; ver.minor = minor; ver.maint = maint; ver.status = status; ver.date = new Date(year,month-1,day-1); // note: converted month/day back to 0-referenced // do the backport backport("version",ver); } var defaultVersion = function(str) { var ver = new String(version); ver.native = version || undefined; ver.major = ver.minor = ver.maint = 99; ver.status = str; ver.date = new Date(); // default today return ver; } var defaultTo = function(str,num) { str = parseInt(str,10); if (isNaN(str)) str = num; } // For native version in forms 1.1-str1 or 1.1_str1 // Examples: 2.1_rc2, 3.0-beta1, 3.1_beta4 var handleBetaRelease = function(separator) { var ver = defaultVersion(""); var chunks = version.split(separator); // refine version chunks.ver = chunks[0].split("."); switch (chunks.ver.length) { case 4: case 3: { // follow-thru ver.maint = defaultTo(chunks.ver[2],99); } case 2: { // follow-thru ver.minor = defaultTo(chunks.ver[1],99); } case 1: { ver.major = defaultTo(chunks.ver[0],99); } } // refine status & maint chunks.maint = chunks[1].split(); // character array // get status while (chunks.maint.length) { chunks.chr = chunks.maint.shift(); if (isNaN(parseInt(chunks.chr,10)) { // part of the string bit ver.status += chunks.chr; } else { chunks.maint.unshift(chunks.chr); // stick it back on maint array break; // assume rest is a number } } if (ver.status=="") ver.status = "unknown"; // get maint if (chunks.maint.length) ver.maint = defaultTo(chunks.maint.join(),99); return ver; } // For native version in form master_yyyymmdd var handleMasterRelease = function() { var ver = defaultVersion("master"); var chunks = version.split("_"); // refine values if (chunks.length == 2) { chunks.year = defaultTo(chunks[1].substr(0,4),2100); chunks.month = defaultTo(chunks[1].substr(4,2),11); chunks.day = defaultTo(chunks[1].substr(6,2),28); ver.date = new Date(chunks.year,chunks.month-1,chunks.day-1); ver.maint = defaultTo(chunks[1],99); } return ver; } // assuming x.y.z or x.y format version var handleNormalRelease = function() { var ver = defaultVersion("stable"); var chunks = version.split("."); // refine values switch (chunks.length) { case 4: case 3: { // follow-thru ver.maint = defaultTo(chunks[2],99); } case 2: { // follow-thru ver.minor = defaultTo(chunks[1],99); } case 1: { ver.major = defaultTo(chunks[0],99); break; } default: { // no idea what we're dealing with! ver.status = "unknown"; } } return ver; } var handleUnknownRelease = function() { var ver; if (version == "TRUNK" || version == "MASTER") { ver = defaultVersion(version); } else if (version.toLowerCase().indexOf("master")>-1) { // master snapshot release ver = handleMasterRelease(); } else if (version.indexOf("_")>-1) { // beta release ver = handleBetaRelease("_"); } else if (version.indexOf("-")>-1) { // beta release ver = handleBetaRelease("-"); } else { // assume normal release ver = handleNormalRelease(); } // do the backport backport("version",ver); } // *** NOTE *** // month/day shown below are 1-referenced for clarity, they are converted to 0-referenced in setVer() // add detailed information to version variable if (!backport.global.version) { // early 3.1 master snapshots setVer(3,1,"alpha",0, 2012,01,09); } else if (!backport.global.enumBlips && backport.global.activateStructure) { setVer(3,1,"beta",1, 2012,01,30); } else if (!backport.global.enumStructOffWorld && "OPTIONS" in backport.global) { setVer(3,1,"beta",2, 2012,02,08); } else if (backport.global.enumStructOffWorld && !backport.global.DROID_SUPERTRANSPORTER) { setVer(3,1,"beta",4, 2012,02,21); } else { // // some future release? handleUnknownRelease(); } } })();