+ public function tokenize() {
+ return TokenizedMessage::fromLog($this);
+ }
+
+ public function isReply() {
+ return !empty($this->tags['reply-parent-msg-body']);
+ }
+
+ public function getReplyParent() {
+ return str_replace('\\s', ' ', $this->tags['reply-parent-msg-body']);
+ }
+
+ public function getReplyParentUser() {
+ return $this->tags['reply-parent-display-name'];
+ }
+
+ public function getText() {
+ return $this->params[1];
+ }
+
+ public function getTextWithoutEmotes() {
+ $text = $this->params[1];
+ if (isset($this->tags['emotes']) && !empty($this->tags['emotes'])) {
+ $emotes = explode('/', $this->tags['emotes']);
+ foreach ($emotes as $emote) {
+ $set = explode(':', $emote);
+ $positions = explode(',', $set[1]);
+ foreach ($positions as $position) {
+ $coords = explode('-', $position);
+ $text = mb_substr($text, 0, $coords[0]).str_repeat(' ', $coords[1] - $coords[0] + 1).mb_substr($text, $coords[1] + 1);
+ }
+ }
+ }
+ return trim(preg_replace('/\s+/', ' ', $text));
+ }
+
+ public function getTextWithoutReply() {
+ if ($this->isReply()) {
+ return mb_substr($this->params[1], mb_strlen($this->getReplyParentUser()) + 2);
+ }
+ return $this->params[1];
+ }
+