Skip to content

Commit

Permalink
Merge pull request #13 from blastorg/left-buyzone-with
Browse files Browse the repository at this point in the history
left buyzone with
  • Loading branch information
fredrikj31 authored Dec 1, 2023
2 parents ca42338 + 98fee4c commit d252743
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/log-parser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
connectionParser,
entityTriggeredParser,
killedParser,
leftBuyzoneWithParser,
playerUpdateParser,
projectileSpawnedParser,
purchasedParser,
Expand All @@ -25,6 +26,7 @@ import {
ConnectionEvent,
EntityTriggeredEvent,
KilledEvent,
LeftBuyzoneWithEvent,
PlayerUpdateEvent,
ProjectileSpawnedEvent,
PurchasedEvent,
Expand All @@ -48,6 +50,7 @@ export const defaultParsers = [
connectionParser,
entityTriggeredParser,
killedParser,
leftBuyzoneWithParser,
playerUpdateParser,
projectileSpawnedParser,
purchasedParser,
Expand All @@ -71,6 +74,7 @@ export type Events =
| ConnectionEvent
| EntityTriggeredEvent
| KilledEvent
| LeftBuyzoneWithEvent
| PlayerUpdateEvent
| ProjectileSpawnedEvent
| PurchasedEvent
Expand Down
1 change: 1 addition & 0 deletions src/parsers/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ export * from "./attacked";
export * from "./connection";
export * from "./entity-triggered";
export * from "./killed";
export * from "./left-buyzone-with";
export * from "./player-update";
export * from "./projectile-spawned";
export * from "./purchased";
Expand Down
27 changes: 27 additions & 0 deletions src/parsers/left-buyzone-with.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { IBaseEvent, defineParser } from "./parser";
import { concatPattern } from "../helpers";
import { Entity, entityRe, parseEntity } from "../entities";

export type LeftBuyzoneWithEventPayload = {
entity: Entity;
kind: string;
value: string[];
};

export type LeftBuyzoneWithEvent = IBaseEvent<"left_buyzone_with", LeftBuyzoneWithEventPayload>;

// eslint-disable-next-line max-len
// "Player<93><STEAM_1:0:12345><CT>" left buyzone with [ weapon_knife_butterfly weapon_usp_silencer kevlar(100) ]
export const leftBuyzoneWithParser = defineParser<LeftBuyzoneWithEvent>({
type: "left_buyzone_with",

patterns: [concatPattern`^(?<entity>${entityRe}) left buyzone with (?<value>\\[.*\\])$`],

parse({ entity, kind = "left_buyzone_with", value }) {
return {
entity: parseEntity(entity),
kind,
value: value.trim().replaceAll("[", "").replaceAll("]", "").split(" ").slice(1, -1),
};
},
});
32 changes: 32 additions & 0 deletions tests/left_buyzone_with.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { ok } from "assert";
import { parse } from "../src";
import { getEventString } from "./helpers/getEventString";
import { counterTerroristTeam } from "./helpers/teams";

describe("left buyzone with", (): void => {
it("should correctly parse", () => {
const log = getEventString(
'"Player<93><[U:1:230970467]><CT>" left buyzone with [ weapon_knife_butterfly weapon_usp_silencer kevlar(100) ]',
);

const result = parse(log);

ok(result !== undefined, `Failed parse log: ${log}`);

expect(result.type).toBe("left_buyzone_with");
expect(result.payload).toMatchObject({
entity: {
kind: "player",

entityId: 93,
steamId: "76561198191236195",

name: "Player",

team: counterTerroristTeam,
},
kind: "left_buyzone_with",
value: ["weapon_knife_butterfly", "weapon_usp_silencer", "kevlar(100)"],
});
});
});

0 comments on commit d252743

Please sign in to comment.