1 | "use strict";
|
2 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
3 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
4 | };
|
5 | Object.defineProperty(exports, "__esModule", { value: true });
|
6 | const slugify_1 = __importDefault(require("slugify"));
|
7 | const configs_1 = require("../configs");
|
8 | const separateIntoLines = (jagexPlayer) => {
|
9 | return jagexPlayer.split("\n");
|
10 | };
|
11 | const formatActivities = (activitiesArray) => {
|
12 | const activities = {};
|
13 | configs_1.runescape.hiscores.activities.map((activityName, index) => {
|
14 | const [rank, count] = activitiesArray[index].split(",");
|
15 | activities[slugify_1.default(activityName, {
|
16 | replacement: "_",
|
17 | remove: /[*+~.()'"!:@]/g,
|
18 | lower: true,
|
19 | })] = { rank: parseInt(rank), count: parseInt(count) };
|
20 | });
|
21 | return activities;
|
22 | };
|
23 | const formatSkills = (skillsArray) => {
|
24 | const skills = {};
|
25 | configs_1.runescape.hiscores.skills.map((skillName, index) => {
|
26 | const [rank, level, experience] = skillsArray[index].split(",");
|
27 | skills[slugify_1.default(skillName, {
|
28 | replacement: "_",
|
29 | remove: /[*+~.()'"!:@]/g,
|
30 | lower: true,
|
31 | })] = {
|
32 | rank: parseInt(rank),
|
33 | level: parseInt(level),
|
34 | experience: parseInt(experience),
|
35 | };
|
36 | });
|
37 | return skills;
|
38 | };
|
39 | const formatClanMembers = (membersArray) => {
|
40 | const members = {};
|
41 | membersArray.map(member => {
|
42 | const [name, rank, experience, kills] = member.split(",");
|
43 | const regex = new RegExp(/\uFFFD/g);
|
44 | members[name.replace(regex, " ")] = {
|
45 | rank,
|
46 | experience: parseInt(experience),
|
47 | kills: parseInt(kills),
|
48 | };
|
49 | });
|
50 | return members;
|
51 | };
|
52 | exports.parseJagexPlayerToJSON = (jagexPlayer) => {
|
53 | const lines = separateIntoLines(jagexPlayer);
|
54 | const [skillsStartIndex, skillsEndIndex] = [
|
55 | 0,
|
56 | configs_1.runescape.hiscores.skills.length,
|
57 | ];
|
58 | const [activitiesStartIndex, activitiesEndIndex] = [
|
59 | configs_1.runescape.hiscores.skills.length,
|
60 | configs_1.runescape.hiscores.skills.length + configs_1.runescape.hiscores.activities.length,
|
61 | ];
|
62 | const activities = formatActivities([
|
63 | ...lines.slice(activitiesStartIndex, activitiesEndIndex),
|
64 | ]);
|
65 | const skills = formatSkills([
|
66 | ...lines.slice(skillsStartIndex, skillsEndIndex),
|
67 | ]);
|
68 | return {
|
69 | activities,
|
70 | skills,
|
71 | };
|
72 | };
|
73 | exports.parseJagexClanToJSON = (jagexClan) => {
|
74 | const lines = separateIntoLines(jagexClan);
|
75 | const members = formatClanMembers([...lines.slice(1, -1)]);
|
76 | return members;
|
77 | };
|
78 |
|
\ | No newline at end of file |