This commit is contained in:
51
node_modules/@mapbox/mapbox-gl-style-spec/format.js
generated
vendored
Normal file
51
node_modules/@mapbox/mapbox-gl-style-spec/format.js
generated
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
|
||||
import reference from './reference/latest.js';
|
||||
import stringifyPretty from 'json-stringify-pretty-compact';
|
||||
|
||||
function sortKeysBy(obj, reference) {
|
||||
const result = {};
|
||||
for (const key in reference) {
|
||||
if (obj[key] !== undefined) {
|
||||
result[key] = obj[key];
|
||||
}
|
||||
}
|
||||
for (const key in obj) {
|
||||
if (result[key] === undefined) {
|
||||
result[key] = obj[key];
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format a Mapbox GL Style. Returns a stringified style with its keys
|
||||
* sorted in the same order as the reference style.
|
||||
*
|
||||
* The optional `space` argument is passed to
|
||||
* [`JSON.stringify`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)
|
||||
* to generate formatted output.
|
||||
*
|
||||
* If `space` is unspecified, a default of `2` spaces will be used.
|
||||
*
|
||||
* @private
|
||||
* @param {Object} style a Mapbox GL Style
|
||||
* @param {number} [space] space argument to pass to `JSON.stringify`
|
||||
* @returns {string} stringified formatted JSON
|
||||
* @example
|
||||
* var fs = require('fs');
|
||||
* var format = require('mapbox-gl-style-spec').format;
|
||||
* var style = fs.readFileSync('./source.json', 'utf8');
|
||||
* fs.writeFileSync('./dest.json', format(style));
|
||||
* fs.writeFileSync('./dest.min.json', format(style, 0));
|
||||
*/
|
||||
function format(style, space = 2) {
|
||||
style = sortKeysBy(style, reference.$root);
|
||||
|
||||
if (style.layers) {
|
||||
style.layers = style.layers.map((layer) => sortKeysBy(layer, reference.layer));
|
||||
}
|
||||
|
||||
return stringifyPretty(style, {indent: space});
|
||||
}
|
||||
|
||||
export default format;
|
||||
Reference in New Issue
Block a user