Merge pull request #626 from mpriour/zeropad
Consolidate numeric zero padding functions (r=@bartvde)
This commit is contained in:
@@ -295,7 +295,25 @@ OpenLayers.Number = {
|
|||||||
str = integer + dsep + rem;
|
str = integer + dsep + rem;
|
||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
}
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method: zeroPad
|
||||||
|
* Create a zero padded string optionally with a radix for casting numbers.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* num - {Number} The number to be zero padded.
|
||||||
|
* len - {Number} The length of the string to be returned.
|
||||||
|
* radix - {Number} An integer between 2 and 36 specifying the base to use
|
||||||
|
* for representing numeric values.
|
||||||
|
*/
|
||||||
|
zeroPad: function(num, len, radix) {
|
||||||
|
var str = num.toString(radix || 10);
|
||||||
|
while (str.length < len) {
|
||||||
|
str = "0" + str;
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -49,13 +49,6 @@ OpenLayers.Date = {
|
|||||||
return date.toISOString();
|
return date.toISOString();
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
function pad(num, len) {
|
|
||||||
var str = num + "";
|
|
||||||
while (str.length < len) {
|
|
||||||
str = "0" + str;
|
|
||||||
}
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
return function(date) {
|
return function(date) {
|
||||||
var str;
|
var str;
|
||||||
if (isNaN(date.getTime())) {
|
if (isNaN(date.getTime())) {
|
||||||
@@ -65,12 +58,12 @@ OpenLayers.Date = {
|
|||||||
} else {
|
} else {
|
||||||
str =
|
str =
|
||||||
date.getUTCFullYear() + "-" +
|
date.getUTCFullYear() + "-" +
|
||||||
pad(date.getUTCMonth() + 1, 2) + "-" +
|
OpenLayers.Number.zeroPad(date.getUTCMonth() + 1, 2) + "-" +
|
||||||
pad(date.getUTCDate(), 2) + "T" +
|
OpenLayers.Number.zeroPad(date.getUTCDate(), 2) + "T" +
|
||||||
pad(date.getUTCHours(), 2) + ":" +
|
OpenLayers.Number.zeroPad(date.getUTCHours(), 2) + ":" +
|
||||||
pad(date.getUTCMinutes(), 2) + ":" +
|
OpenLayers.Number.zeroPad(date.getUTCMinutes(), 2) + ":" +
|
||||||
pad(date.getUTCSeconds(), 2) + "." +
|
OpenLayers.Number.zeroPad(date.getUTCSeconds(), 2) + "." +
|
||||||
pad(date.getUTCMilliseconds(), 3) + "Z";
|
OpenLayers.Number.zeroPad(date.getUTCMilliseconds(), 3) + "Z";
|
||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -457,9 +457,9 @@ OpenLayers.Layer.ArcGISCache = OpenLayers.Class(OpenLayers.Layer.XYZ, {
|
|||||||
url = url + '/tile/${z}/${y}/${x}';
|
url = url + '/tile/${z}/${y}/${x}';
|
||||||
} else {
|
} else {
|
||||||
// The tile images are stored using hex values on disk.
|
// The tile images are stored using hex values on disk.
|
||||||
x = 'C' + this.zeroPad(x, 8, 16);
|
x = 'C' + OpenLayers.Number.zeroPad(x, 8, 16);
|
||||||
y = 'R' + this.zeroPad(y, 8, 16);
|
y = 'R' + OpenLayers.Number.zeroPad(y, 8, 16);
|
||||||
z = 'L' + this.zeroPad(z, 2, 16);
|
z = 'L' + OpenLayers.Number.zeroPad(z, 2, 16);
|
||||||
url = url + '/${z}/${y}/${x}.' + this.type;
|
url = url + '/${z}/${y}/${x}.' + this.type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -471,23 +471,5 @@ OpenLayers.Layer.ArcGISCache = OpenLayers.Class(OpenLayers.Layer.XYZ, {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
|
||||||
* Method: zeroPad
|
|
||||||
* Create a zero padded string optionally with a radix for casting numbers.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
* num - {Number} The number to be zero padded.
|
|
||||||
* len - {Number} The length of the string to be returned.
|
|
||||||
* radix - {Number} An integer between 2 and 36 specifying the base to use
|
|
||||||
* for representing numeric values.
|
|
||||||
*/
|
|
||||||
zeroPad: function(num, len, radix) {
|
|
||||||
var str = num.toString(radix || 10);
|
|
||||||
while (str.length < len) {
|
|
||||||
str = "0" + str;
|
|
||||||
}
|
|
||||||
return str;
|
|
||||||
},
|
|
||||||
|
|
||||||
CLASS_NAME: 'OpenLayers.Layer.ArcGISCache'
|
CLASS_NAME: 'OpenLayers.Layer.ArcGISCache'
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -116,31 +116,16 @@ OpenLayers.Layer.TileCache = OpenLayers.Class(OpenLayers.Layer.Grid, {
|
|||||||
var tileZ = this.serverResolutions != null ?
|
var tileZ = this.serverResolutions != null ?
|
||||||
OpenLayers.Util.indexOf(this.serverResolutions, res) :
|
OpenLayers.Util.indexOf(this.serverResolutions, res) :
|
||||||
this.map.getZoom();
|
this.map.getZoom();
|
||||||
/**
|
|
||||||
* Zero-pad a positive integer.
|
|
||||||
* number - {Int}
|
|
||||||
* length - {Int}
|
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
* {String} A zero-padded string
|
|
||||||
*/
|
|
||||||
function zeroPad(number, length) {
|
|
||||||
number = String(number);
|
|
||||||
var zeros = [];
|
|
||||||
for(var i=0; i<length; ++i) {
|
|
||||||
zeros.push('0');
|
|
||||||
}
|
|
||||||
return zeros.join('').substring(0, length - number.length) + number;
|
|
||||||
}
|
|
||||||
var components = [
|
var components = [
|
||||||
this.layername,
|
this.layername,
|
||||||
zeroPad(tileZ, 2),
|
OpenLayers.Number.zeroPad(tileZ, 2),
|
||||||
zeroPad(parseInt(tileX / 1000000), 3),
|
OpenLayers.Number.zeroPad(parseInt(tileX / 1000000), 3),
|
||||||
zeroPad((parseInt(tileX / 1000) % 1000), 3),
|
OpenLayers.Number.zeroPad((parseInt(tileX / 1000) % 1000), 3),
|
||||||
zeroPad((parseInt(tileX) % 1000), 3),
|
OpenLayers.Number.zeroPad((parseInt(tileX) % 1000), 3),
|
||||||
zeroPad(parseInt(tileY / 1000000), 3),
|
OpenLayers.Number.zeroPad(parseInt(tileY / 1000000), 3),
|
||||||
zeroPad((parseInt(tileY / 1000) % 1000), 3),
|
OpenLayers.Number.zeroPad((parseInt(tileY / 1000) % 1000), 3),
|
||||||
zeroPad((parseInt(tileY) % 1000), 3) + '.' + this.extension
|
OpenLayers.Number.zeroPad((parseInt(tileY) % 1000), 3) + '.' + this.extension
|
||||||
];
|
];
|
||||||
var path = components.join('/');
|
var path = components.join('/');
|
||||||
var url = this.url;
|
var url = this.url;
|
||||||
|
|||||||
@@ -278,6 +278,17 @@
|
|||||||
OpenLayers.Number.decimalSeparator = ",";
|
OpenLayers.Number.decimalSeparator = ",";
|
||||||
t.eq(format(num, 3), "12.345,679", "changing thousands/decimal separator globally works");
|
t.eq(format(num, 3), "12.345,679", "changing thousands/decimal separator globally works");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function test_Number_zeroPad(t) {
|
||||||
|
t.plan(6);
|
||||||
|
var pad = OpenLayers.Number.zeroPad;
|
||||||
|
t.eq(pad(15, 4), "0015", "left padding works");
|
||||||
|
t.eq(pad(15, 2), "15", "no left padding when equal to number of digits");
|
||||||
|
t.eq(pad(15, 1), "15", "no left padding when less than number of digits");
|
||||||
|
t.eq(pad(10, 5, 2), "01010", "radix modified and padding works");
|
||||||
|
t.eq(pad(10, 5, 8), "00012", "radix modified and padding works");
|
||||||
|
t.eq(pad(10, 5, 36), "0000a", "radix modified and padding works");
|
||||||
|
}
|
||||||
|
|
||||||
function test_Function_bind(t) {
|
function test_Function_bind(t) {
|
||||||
t.plan(12);
|
t.plan(12);
|
||||||
|
|||||||
@@ -187,7 +187,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check our utility function for generating tile indexes against a file cache
|
* Check the utility function for generating tile indexes against a file cache
|
||||||
|
* This is already tested in BaseTypes test, but these are specific,
|
||||||
|
* common conversions that this class will rely on, so the tests are retained
|
||||||
*/
|
*/
|
||||||
function test_Layer_ARCGISCACHE_zeroPad(t) {
|
function test_Layer_ARCGISCACHE_zeroPad(t) {
|
||||||
t.plan(4);
|
t.plan(4);
|
||||||
@@ -195,10 +197,10 @@
|
|||||||
var layer = new OpenLayers.Layer.ArcGISCache('test', null, { });
|
var layer = new OpenLayers.Layer.ArcGISCache('test', null, { });
|
||||||
|
|
||||||
//some tile examples
|
//some tile examples
|
||||||
t.ok('00000001' == layer.zeroPad(1, 8, 16), 'zeroPad should generate tile indexes properly ');
|
t.ok('00000001' == OpenLayers.Number.zeroPad(1, 8, 16), 'zeroPad should generate tile indexes properly ');
|
||||||
t.ok('00000020' == layer.zeroPad(32, 8, 16), 'zeroPad should generate tile indexes properly ');
|
t.ok('00000020' == OpenLayers.Number.zeroPad(32, 8, 16), 'zeroPad should generate tile indexes properly ');
|
||||||
t.ok('00000100' == layer.zeroPad(256, 8, 16), 'zeroPad should generate tile indexes properly ');
|
t.ok('00000100' == OpenLayers.Number.zeroPad(256, 8, 16), 'zeroPad should generate tile indexes properly ');
|
||||||
t.ok('00001000' == layer.zeroPad(4096, 8, 16), 'zeroPad should generate tile indexes properly ');
|
t.ok('00001000' == OpenLayers.Number.zeroPad(4096, 8, 16), 'zeroPad should generate tile indexes properly ');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user