SquadJS/core/squad-layers/squad-layers.js

58 lines
1.5 KiB
JavaScript
Raw Normal View History

2020-06-13 09:33:44 -05:00
import fs from 'fs';
import { fileURLToPath } from 'url';
import path from 'path';
2020-06-13 09:33:44 -05:00
import didYouMean from 'didyoumean';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
2020-06-13 09:33:44 -05:00
class SquadLayers {
constructor(layers) {
if (Array.isArray(layers)) {
this.layers = layers;
} else {
this.layers = JSON.parse(fs.readFileSync(path.resolve(__dirname, './layers.json'), 'utf8'));
2020-06-13 09:33:44 -05:00
}
for (let i = 0; i < this.layers.length; i++) {
this.layers[i] = {
...this.layers[i],
layerNumber: i + 1
};
}
}
getLayers() {
return this.layers;
}
getLayerNames() {
return this.layers.map((layer) => layer.layer);
2020-06-13 09:33:44 -05:00
}
getLayerByLayerName(layerName) {
const layer = this.layers.filter((layer) => layer.layer === layerName);
2020-06-13 09:33:44 -05:00
return layer.length === 1 ? layer[0] : null;
}
getLayerByLayerClassname(layerClassname) {
const layer = this.layers.filter((layer) => layer.layerClassname === layerClassname);
2020-06-13 09:33:44 -05:00
return layer.length === 1 ? layer[0] : null;
}
getLayerByDidYouMean(layerName) {
layerName = didYouMean(layerName, this.getLayerNames());
const layer = this.layers.filter((layer) => layer.layer === layerName);
2020-06-13 09:33:44 -05:00
return layer.length === 1 ? layer[0] : null;
}
getLayerByNumber(number) {
const layer = this.layers.filter((layer) => layer.layerNumber === number);
2020-06-13 09:33:44 -05:00
return layer.length === 1 ? layer[0] : null;
}
}
export { SquadLayers };
export default new SquadLayers();