diff --git a/lib/mbtiles.js b/lib/mbtiles.js index c7fc7e3..f8a50ee 100644 --- a/lib/mbtiles.js +++ b/lib/mbtiles.js @@ -31,8 +31,11 @@ MBTiles.schema = fs.readFileSync(__dirname + '/schema.sql', 'utf8'); // - callback: Will be called when the resources have been acquired // or acquisition failed. require('util').inherits(MBTiles, require('events').EventEmitter) -function MBTiles(uri, callback) { - if (typeof uri === 'string') uri = url.parse(uri, true); +function MBTiles(uri, callback) { + if (typeof uri === 'string') { + uri = url.parse(uri, true); + uri.pathname = qs.unescape(uri.pathname); + } else if (typeof uri.query === 'string') uri.query = qs.parse(uri.query); if (!uri.pathname) { diff --git a/test/fixtures/with spaces.mbtiles b/test/fixtures/with spaces.mbtiles new file mode 100644 index 0000000..f160de5 Binary files /dev/null and b/test/fixtures/with spaces.mbtiles differ diff --git a/test/spaces.test.js b/test/spaces.test.js new file mode 100644 index 0000000..5fb2b85 --- /dev/null +++ b/test/spaces.test.js @@ -0,0 +1,14 @@ +var tape = require('tape'); +var MBTiles = require('..'); + +tape('opens mbtiles file with spaces', function(assert) { + new MBTiles(__dirname + '/fixtures/with spaces.mbtiles', function(err, mbtiles) { + assert.ifError(err); + mbtiles.getInfo(function(err, info) { + assert.ifError(err); + assert.deepEqual(info.level1, {level2:'property'}); + assert.deepEqual(info.custom, ['custom list']); + assert.end(); + }); + }); +});