Merge pull request #5853 from fredj/number_range_expandUrl
Allow more than one digit range in ol.TileUrlFunction.expandUrl
This commit is contained in:
@@ -107,16 +107,26 @@ ol.TileUrlFunction.nullTileUrlFunction = function(tileCoord, pixelRatio, project
|
||||
*/
|
||||
ol.TileUrlFunction.expandUrl = function(url) {
|
||||
var urls = [];
|
||||
var match = /\{(\d)-(\d)\}/.exec(url) || /\{([a-z])-([a-z])\}/.exec(url);
|
||||
var match = /\{([a-z])-([a-z])\}/.exec(url);
|
||||
if (match) {
|
||||
// char range
|
||||
var startCharCode = match[1].charCodeAt(0);
|
||||
var stopCharCode = match[2].charCodeAt(0);
|
||||
var charCode;
|
||||
for (charCode = startCharCode; charCode <= stopCharCode; ++charCode) {
|
||||
urls.push(url.replace(match[0], String.fromCharCode(charCode)));
|
||||
}
|
||||
} else {
|
||||
urls.push(url);
|
||||
return urls;
|
||||
}
|
||||
match = match = /\{(\d+)-(\d+)\}/.exec(url);
|
||||
if (match) {
|
||||
// number range
|
||||
var stop = parseInt(match[2], 10);
|
||||
for (var i = parseInt(match[1], 10); i <= stop; i++) {
|
||||
urls.push(url.replace(match[0], i.toString()));
|
||||
}
|
||||
return urls;
|
||||
}
|
||||
urls.push(url);
|
||||
return urls;
|
||||
};
|
||||
|
||||
@@ -18,6 +18,15 @@ describe('ol.TileUrlFunction', function() {
|
||||
'http://tile-3/{z}/{x}/{y}'
|
||||
]);
|
||||
});
|
||||
it('creates expected URLs', function() {
|
||||
var template = 'http://tile-{9-11}/{z}/{x}/{y}';
|
||||
var urls = ol.TileUrlFunction.expandUrl(template);
|
||||
expect(urls).to.eql([
|
||||
'http://tile-9/{z}/{x}/{y}',
|
||||
'http://tile-10/{z}/{x}/{y}',
|
||||
'http://tile-11/{z}/{x}/{y}'
|
||||
]);
|
||||
});
|
||||
});
|
||||
describe('with character range', function() {
|
||||
it('creates expected URLs', function() {
|
||||
@@ -30,6 +39,15 @@ describe('ol.TileUrlFunction', function() {
|
||||
]);
|
||||
});
|
||||
});
|
||||
describe('without range', function() {
|
||||
it('creates expected URLs', function() {
|
||||
var template = 'http://tiles.example.com/{z}/{x}/{y}';
|
||||
var urls = ol.TileUrlFunction.expandUrl(template);
|
||||
expect(urls).to.eql([
|
||||
'http://tiles.example.com/{z}/{x}/{y}'
|
||||
]);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('createFromTemplate', function() {
|
||||
|
||||
Reference in New Issue
Block a user