mirror of
https://github.com/rastapasta/mapscii.git
synced 2024-11-25 01:23:58 +01:00
Shorten the code by using Array.prototype.find in the Styler.
This commit is contained in:
parent
554ae593be
commit
fd40b57f51
@ -77,73 +77,44 @@ module.exports = class Styler {
|
|||||||
|
|
||||||
//TODO Better translation of the long cases.
|
//TODO Better translation of the long cases.
|
||||||
_compileFilter(filter) {
|
_compileFilter(filter) {
|
||||||
var filters;
|
let filters;
|
||||||
switch (filter != null ? filter[0] : void 0) {
|
switch (filter != null ? filter[0] : void 0) {
|
||||||
case 'all':
|
case 'all':
|
||||||
filter = filter.slice(1);
|
filter = filter.slice(1);
|
||||||
filters = (() => {
|
filters = (() => {
|
||||||
return filter.map((sub) => this._compileFilter(sub));
|
return filter.map((sub) => this._compileFilter(sub));
|
||||||
}).call(this);
|
}).call(this);
|
||||||
//TODO Use Array.prototype.find
|
return (feature) => !!filters.find((appliesTo) => {
|
||||||
return (feature) => {
|
return !appliesTo(feature);
|
||||||
for (const appliesTo of filters) {
|
});
|
||||||
if (!appliesTo(feature)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
case 'any':
|
case 'any':
|
||||||
filter = filter.slice(1);
|
filter = filter.slice(1);
|
||||||
filters = (() => {
|
filters = (() => {
|
||||||
return filter.map((sub) => this._compileFilter(sub));
|
return filter.map((sub) => this._compileFilter(sub));
|
||||||
}).call(this);
|
}).call(this);
|
||||||
//TODO Use Array.prototype.find
|
return (feature) => !!filters.find((appliesTo) => {
|
||||||
return (feature) => {
|
return appliesTo(feature);
|
||||||
for (const appliesTo of filters) {
|
});
|
||||||
if (appliesTo(feature)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
case 'none':
|
case 'none':
|
||||||
filter = filter.slice(1);
|
filter = filter.slice(1);
|
||||||
filters = (() => {
|
filters = (() => {
|
||||||
return filter.map((sub) => this._compileFilter(sub));
|
return filter.map((sub) => this._compileFilter(sub));
|
||||||
}).call(this);
|
}).call(this);
|
||||||
return (feature) => {
|
return (feature) => !filters.find((appliesTo) => {
|
||||||
for (const appliesTo of filters) {
|
return !appliesTo(feature);
|
||||||
if (appliesTo(feature)) {
|
});
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
case '==':
|
case '==':
|
||||||
return (feature) => feature.properties[filter[1]] === filter[2];
|
return (feature) => feature.properties[filter[1]] === filter[2];
|
||||||
case "!=":
|
case "!=":
|
||||||
return (feature) => feature.properties[filter[1]] !== filter[2];
|
return (feature) => feature.properties[filter[1]] !== filter[2];
|
||||||
case "in":
|
case "in":
|
||||||
return (feature) => {
|
return (feature) => !!filter.slice(2).find((value) => {
|
||||||
filter = filter.slice(2);
|
return feature.properties[filter[1]] === value;
|
||||||
for (const value of filter) {
|
});
|
||||||
if (feature.properties[filter[1]] === value) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
case '!in':
|
case '!in':
|
||||||
return (feature) => {
|
return (feature) => !filter.slice(2).find((value) => {
|
||||||
filter = filter.slice(2);
|
return feature.properties[filter[1]] === value;
|
||||||
for (const value of filter) {
|
});
|
||||||
if (feature.properties[filter[1]] === value) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
case "has":
|
case "has":
|
||||||
return (feature) => !!feature.properties[filter[1]];
|
return (feature) => !!feature.properties[filter[1]];
|
||||||
case "!has":
|
case "!has":
|
||||||
|
Loading…
Reference in New Issue
Block a user