diff options
author | emkael <emkael@tlen.pl> | 2017-05-06 15:25:59 +0200 |
---|---|---|
committer | emkael <emkael@tlen.pl> | 2017-05-06 15:25:59 +0200 |
commit | 039ad7e7c5cb66017430c1885dfc1201f7b3223e (patch) | |
tree | d5c07d6ff14911f676058ae1ea0e3250bc6c9c51 | |
parent | 2a708631a005cdcd21798ac35cbb15c2093d6aad (diff) |
* Emoji-replacing filter
-rw-r--r-- | _cron/emoji-list | 1 | ||||
-rw-r--r-- | bin/emoji-list.py | 15 | ||||
-rw-r--r-- | config/emoji.json | bin | 0 -> 68717 bytes | |||
-rw-r--r-- | providers/Provider.php | 19 |
4 files changed, 34 insertions, 1 deletions
diff --git a/_cron/emoji-list b/_cron/emoji-list new file mode 100644 index 0000000..f705d00 --- /dev/null +++ b/_cron/emoji-list @@ -0,0 +1 @@ +25 15 * * * python $SITEPATH/bin/emoji-list.py diff --git a/bin/emoji-list.py b/bin/emoji-list.py new file mode 100644 index 0000000..81b73ea --- /dev/null +++ b/bin/emoji-list.py @@ -0,0 +1,15 @@ +import json, os, urllib + +emoji_list = json.load(urllib.urlopen( + 'https://raw.githubusercontent.com/iamcal/emoji-data/master/emoji.json' +)) +dictionary = {} +for emoji in emoji_list: + character = ''.join([unichr(int(nibble, 16)) for nibble in emoji['unified'].split('-')]) + name = emoji['name'].replace(' ', '_') if emoji['name'] else emoji['short_name'].upper().replace('-', '_') + dictionary[character] = ' <%s> ' % (name) + +json.dump(dictionary, file(os.path.join( + os.path.dirname(os.path.realpath(__file__)), + '../config/emoji.json' +), 'w')) diff --git a/config/emoji.json b/config/emoji.json Binary files differnew file mode 100644 index 0000000..30c3560 --- /dev/null +++ b/config/emoji.json diff --git a/providers/Provider.php b/providers/Provider.php index 2e14d2b..bf85f12 100644 --- a/providers/Provider.php +++ b/providers/Provider.php @@ -41,12 +41,29 @@ abstract class Provider { } } + protected function _filterItemContent($items) { + if (in_array('noemoji', $this->_options)) { + $dictionary = json_decode(file_get_contents('../config/emoji.json'), TRUE); + $filtered = []; + foreach ($items as $item) { + foreach (['Title', 'Text'] as $field) { + $item->{$field} = strtr($item->{$field}, $dictionary); + } + } + } + return $items; + } + public function get() { $items = $this->_getItems(); if (isset($this->_options['spamfilter'])) { $items = $this->_spamFilter($items); } - return $this->_sortContent($this->_mapItems($items)); + return $this->_sortContent( + $this->_filterItemContent( + $this->_mapItems($items) + ) + ); } public function cacheTime() { |