brawlhalla-api-ts
Version:
TypeScript wrapper for the Brawlhalla API.
63 lines • 2.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var levenshtein = require("fast-levenshtein");
var legends_1 = require("../data/legends");
var weapons_1 = require("../data/weapons");
var legend_1 = require("../models/legend");
var LegendUtils = (function () {
function LegendUtils() {
}
LegendUtils.findLegendById = function (legendId) {
var legendFound = LegendUtils.legends.find(function (legend) { return legend.id === legendId; });
if (legendFound === undefined) {
console.warn('Legend not found! Unknown ID given');
legendFound = new legend_1.Legend(legendId, 'Unknown', weapons_1.sword, weapons_1.sword);
}
return legendFound;
};
LegendUtils.findLegendByName = function (legendName) {
var legendFound = LegendUtils.legends.find(function (legend) { return legend.name === legendName; });
if (legendFound === undefined) {
console.warn('Legend not found! Unknown name given');
legendFound = new legend_1.Legend(-1, legendName, weapons_1.sword, weapons_1.sword);
}
return legendFound;
};
LegendUtils.findLegendByApproximateName = function (legendToFindName) {
if (LegendUtils.legendSegmentMap.has(legendToFindName)) {
var matchingLegend = LegendUtils.legendSegmentMap.get(legendToFindName);
if (matchingLegend === undefined) {
throw new Error('Something went really wrong!');
}
return matchingLegend;
}
var shortestDistance = -1;
var legendWithShortestDistance;
LegendUtils.legendSegmentMap.forEach(function (legend, legendSegment) {
var currentDistance = levenshtein.get(legendSegment, legendToFindName);
if (shortestDistance === -1 || currentDistance < shortestDistance) {
shortestDistance = currentDistance;
legendWithShortestDistance = legend;
}
});
if (legendWithShortestDistance === undefined) {
throw new Error('Something went really wrong!');
}
var shortestAllowedDistance = 3;
if (shortestDistance > shortestAllowedDistance) {
console.warn("Distance is over " + shortestAllowedDistance + "! Weird results can be expected");
}
return legendWithShortestDistance;
};
LegendUtils.legends = legends_1.legends;
LegendUtils.legendSegmentMap = legends_1.legends.reduce(function (legendNameSegments, legend) {
legendNameSegments.set(legend.name, legend);
legend.name.split(' ').forEach(function (legendNameSegment) {
legendNameSegments.set(legendNameSegment, legend);
});
return legendNameSegments;
}, new Map());
return LegendUtils;
}());
exports.LegendUtils = LegendUtils;
//# sourceMappingURL=LegendUtils.js.map