return Str::endsWith($this->emoteless, $text);
}
+ public function endsWithEmotelessToken($text) {
+ return !empty($this->emoteless_tokens) && $this->tokens[count($this->emoteless_tokens) - 1] == $text;
+ }
+
public function endsWithRaw($text) {
return Str::endsWith($this->raw, $text);
}
+ public function endsWithToken($text) {
+ return !empty($this->tokens) && $this->tokens[count($this->tokens) - 1] == $text;
+ }
+
public function getNumericValue() {
return intval($this->text);
}
return $this->startsWith($text) || $this->endsWith($text);
}
+ public function startsOrEndsWithEmotelessToken($text) {
+ return $this->startsWithEmotelessToken($text) || $this->endsWithEmotelessToken($text);
+ }
+
public function startsOrEndsWithRaw($text) {
return $this->startsWithRaw($text) || $this->endsWithRaw($text);
}
+ public function startsOrEndsWithToken($text) {
+ return $this->startsWithToken($text) || $this->endsWithToken($text);
+ }
+
public function startsWith($text) {
return Str::startsWith($this->text, $text);
}
return Str::startsWith($this->emoteless, $text);
}
+ public function startsWithEmotelessToken($text) {
+ return isset($this->emoteless_tokens[0]) && $this->emoteless_tokens[0] == $text;
+ }
+
public function startsWithRaw($text) {
return Str::startsWith($this->raw, $text);
}
+ public function startsWithToken($text) {
+ return isset($this->tokens[0]) && $this->tokens[0] == $text;
+ }
+
public function isSpammy() {
if ($this->startsWith('!')) {
$this->classification = 'sweat';
} else if ($this->endsWithEmoteless('?')) {
$this->classification = 'question';
- } else if ($this->hasToken(['ja', 'jo', 'yep', 'yes']) || $this->containsRaw('nodders') || $this->hasEmoteThatEndsWith(['nod', 'nodders', 'yea'])) {
+ } else if ($this->hasToken(['jo', 'yep', 'yes']) || $this->startsOrEndsWithEmotelessToken('ja') || $this->containsRaw('nodders') || $this->hasEmoteThatEndsWith(['nod', 'nodders', 'yea'])) {
$this->classification = 'yes';
} else if ($this->hasToken(['nah', 'nee', 'nein', 'no']) || $this->containsRaw('nopers') || $this->hasEmoteThatEndsWith(['nay', 'nope', 'nopers'])) {
$this->classification = 'no';
$this->assertEquals('wtf', TokenizedMessage::fromString('wtf? lol')->classify());
$this->assertNotEquals('wtf', TokenizedMessage::fromString('ein waterwalk aufgesetzt')->classify());
+ $this->assertEquals('yes', TokenizedMessage::fromString('ja geht SeemsGood')->classify());
+ $this->assertEquals('yes', TokenizedMessage::fromString('also ich würde sagen ja LUL', ['emotes' => 'blah:25-27'])->classify());
+ $this->assertNotEquals('yes', TokenizedMessage::fromString('find ich ja gut')->classify());
+
$this->assertEquals('unclassified', TokenizedMessage::fromString('')->classify());
$this->assertEquals('unclassified', TokenizedMessage::fromString('bitte boots locked in desert und bib')->classify());
}