diff --git a/README.md b/README.md index f9fa3cc..b9ae752 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,7 @@ import { generateStyle } from "hsl-map-style"; const style = generateStyle({ sourcesUrl: "https://cdn.digitransit.fi/", // <-- You can override the default sources URL. The default is https://api.digitransit.fi/ + // OR sourcesUrl: ["https://cdn.digitransit.fi/", "vector"], // <---- [{ HOST_URL }, { SOURCE_NAME }] Use this to replace the specified source URL as a whole instead of only the hostname glyphsUrl: "", // Possibility to overwrite fonts url, an empty string does nothing spriteUrl: "", // Possibility to overwrite sprite url queryParams: [ // It's possible to add query parameters to urls, for example apikeys. diff --git a/index.js b/index.js index d687624..c1dd4c5 100644 --- a/index.js +++ b/index.js @@ -252,8 +252,17 @@ function replaceInStyle(style, options) { forEach(values, (value) => { if (value.replacement) { - const replaceableRegexp = new RegExp(value.default, "g"); - replacedStyle = replacedStyle.replace(replaceableRegexp, value.replacement); + if (Array.isArray(value.replacement)) { + /* Full replacement of a selected source URL. + This condition expects replacements like this: [fullReplacementUrl, fullReplacementTarget] in order to fully replace the source url instead of using RegExp */ + const parsedReplacedStyle = JSON.parse(replacedStyle); + const [fullReplacementUrl, fullReplacementTarget] = value.replacement; + parsedReplacedStyle.sources[fullReplacementTarget].url = fullReplacementUrl; + replacedStyle = JSON.stringify(parsedReplacedStyle); + } else { + const replaceableRegexp = new RegExp(value.default, "g"); + replacedStyle = replacedStyle.replace(replaceableRegexp, value.replacement); + } } }); diff --git a/package.json b/package.json index 4dcebc4..21217ab 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hsl-map-style", - "version": "1.2.1", + "version": "1.2.2", "description": "", "main": "index.js", "bin": {