Allow using punctuation chars as smiley delimiters
This commit is contained in:
parent
d45e9d6af2
commit
d493946ba4
7 changed files with 95 additions and 54 deletions
|
@ -371,7 +371,7 @@ return [
|
|||
[
|
||||
'uri-id' => 100,
|
||||
'title' => 'item_title',
|
||||
'body' => ':like ~friendica no [code]:dislike[/code] :-p :-[',
|
||||
'body' => ':like ~friendica no [code]:dislike[/code] :-p :-[ <3',
|
||||
'plink' => 'https://friendica.local/post/100',
|
||||
],
|
||||
],
|
||||
|
|
|
@ -147,7 +147,7 @@ class SmiliesTest extends FixtureTest
|
|||
|
||||
public function dataReplace(): array
|
||||
{
|
||||
return [
|
||||
$data = [
|
||||
'simple-1' => [
|
||||
'expected' => 'alt=":-p"',
|
||||
'body' => ':-p',
|
||||
|
@ -165,7 +165,7 @@ class SmiliesTest extends FixtureTest
|
|||
'body' => '~friendicaca',
|
||||
],
|
||||
'symbol-boundary-1' => [
|
||||
'expected' => '(:-p)',
|
||||
'expected' => 'alt=":-p"',
|
||||
'body' => '(:-p)',
|
||||
],
|
||||
'hearts-1' => [
|
||||
|
@ -185,6 +185,19 @@ class SmiliesTest extends FixtureTest
|
|||
'body' => '(3<33)',
|
||||
],
|
||||
];
|
||||
foreach ([':-[', ':-D', 'o.O'] as $emoji) {
|
||||
foreach (['A', '_', ':', '-'] as $prefix) {
|
||||
foreach (['', ' ', 'A', ':', '-'] as $suffix) {
|
||||
$no_smile = ($prefix !== '' && ctype_alnum($prefix)) || ($suffix !== '' && ctype_alnum($suffix));
|
||||
$s = $prefix . $emoji . $suffix;
|
||||
$data[] = [
|
||||
'expected' => $no_smile ? $s : 'alt="' . $emoji . '"',
|
||||
'body' => $s,
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -202,6 +215,11 @@ class SmiliesTest extends FixtureTest
|
|||
public function dataExtractUsedSmilies(): array
|
||||
{
|
||||
return [
|
||||
'symbols' => [
|
||||
'expected' => ['p', 'heart', 'embarrassed', 'kiss'],
|
||||
'body' => ':-p <3 ":-[:-"',
|
||||
'normalized' => ':p: :heart: ":embarrassed::kiss:',
|
||||
],
|
||||
'single-smiley' => [
|
||||
'expected' => ['like'],
|
||||
'body' => ':like',
|
||||
|
@ -239,11 +257,12 @@ class SmiliesTest extends FixtureTest
|
|||
*/
|
||||
public function testExtractUsedSmilies(array $expected, string $body, string $normalized)
|
||||
{
|
||||
$extracted = Smilies::extractUsedSmilies($body);
|
||||
$this->assertEquals($normalized, $extracted['']);
|
||||
foreach ($expected as $shortcode) {
|
||||
$this->assertArrayHasKey($shortcode, $extracted);
|
||||
$extracted = Smilies::extractUsedSmilies($body, $converted);
|
||||
$expected = array_fill_keys($expected, true);
|
||||
$this->assertEquals($normalized, $converted);
|
||||
foreach (array_keys($extracted) as $shortcode) {
|
||||
$this->assertArrayHasKey($shortcode, $expected);
|
||||
}
|
||||
$this->assertEquals(count($expected), count($extracted) - 1);
|
||||
$this->assertEquals(count($expected), count($extracted));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -50,7 +50,7 @@ class StatusTest extends FixtureTest
|
|||
$post = Post::selectFirst([], ['id' => 14]);
|
||||
$this->assertNotNull($post);
|
||||
$result = $this->status->createFromUriId($post['uri-id'])->toArray();
|
||||
$this->assertEquals(':like: :friendica: no <code>:dislike</code> :p: :embarrassed:', $result['content']);
|
||||
$this->assertEquals(':like: :friendica: no <code>:dislike</code> :p: :embarrassed: ❤', $result['content']);
|
||||
$emojis = array_fill_keys(['like', 'friendica', 'p', 'embarrassed'], true);
|
||||
$this->assertEquals(count($emojis), count($result['emojis']));
|
||||
foreach ($result['emojis'] as $emoji) {
|
||||
|
|
|
@ -42,7 +42,7 @@ class TransmitterTest extends FixtureTest
|
|||
$note = Transmitter::createNote($post);
|
||||
$this->assertNotNull($note);
|
||||
|
||||
$this->assertEquals(':like: :friendica: no <code>:dislike</code> :p: :embarrassed:', $note['content']);
|
||||
$this->assertEquals(':like: :friendica: no <code>:dislike</code> :p: :embarrassed: ❤', $note['content']);
|
||||
$emojis = array_fill_keys(['like', 'friendica', 'p', 'embarrassed'], true);
|
||||
$this->assertEquals(count($emojis), count($note['tag']));
|
||||
foreach ($note['tag'] as $emoji) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue