UNPKG

gbf-raidfinder-parser

Version:
69 lines 2.51 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); var BossParser_1 = require("./BossParser"); var RaidParser_1 = require("./RaidParser"); var TextParser_1 = require("./TextParser"); var RaidTweet_1 = require("../RaidTweet"); function parseTweet(text) { var parser = new TweetParser(); return parser.parse(text); } exports.parseTweet = parseTweet; function isRaidTweet(text) { try { parseTweet(text); return true; } catch (e) { if (e instanceof TypeError && e.message.match(/can't parse/i)) { return false; } else { throw e; } } } exports.isRaidTweet = isRaidTweet; var TweetParser = /** @class */ (function (_super) { __extends(TweetParser, _super); function TweetParser() { return _super !== null && _super.apply(this, arguments) || this; } TweetParser.prototype.parse = function (text) { var lines = text .trim() .split('\n') .reverse(); if (lines.length < 3) { throw this.invalidFormatError(text); } var image = lines[0].trim(); // pad the tokenized string if it doesn't start with an image link if (!image.startsWith('https://t.co')) { lines.splice(0, 0, ''); image = undefined; } var boss = new BossParser_1.default().parse(lines[1]); var language = this.getLanguage(lines[2]); var raid = new RaidParser_1.default().parse(lines[3]); return new RaidTweet_1.default(text, raid, boss, language, image); }; TweetParser.prototype.getLanguage = function (text) { return text.match(/参加者募集!/) ? 'jp' : 'en'; }; TweetParser.parse = parseTweet; TweetParser.isRaidTweet = isRaidTweet; return TweetParser; }(TextParser_1.default)); exports.default = TweetParser; //# sourceMappingURL=TweetParser.js.map