diff options
author | Andrew Kovalyov <andrew.kovalyoff@gmail.com> | 2016-11-28 01:15:06 +0200 |
---|---|---|
committer | Andrew Kovalyov <andrew.kovalyoff@gmail.com> | 2016-11-28 01:15:06 +0200 |
commit | 5b6888b13fd44705a232261862a5cc96cebd0a7d (patch) | |
tree | e3d5a370d5f50d75e1a7f6ffe59462d05976ec94 | |
parent | 625bb561813222aea8a7a2e84e30e9f9de697017 (diff) | |
download | wallabag-5b6888b13fd44705a232261862a5cc96cebd0a7d.tar.gz wallabag-5b6888b13fd44705a232261862a5cc96cebd0a7d.tar.zst wallabag-5b6888b13fd44705a232261862a5cc96cebd0a7d.zip |
Fix incorrect reading time calculation for entries in languages with
non-latin chars subset.
-rw-r--r-- | src/Wallabag/CoreBundle/Tools/Utils.php | 2 | ||||
-rw-r--r-- | tests/Wallabag/CoreBundle/Tools/UtilsTest.php | 28 | ||||
-rw-r--r-- | tests/Wallabag/CoreBundle/Tools/samples/cyrillic.txt | 7 | ||||
-rw-r--r-- | tests/Wallabag/CoreBundle/Tools/samples/greek.txt | 9 | ||||
-rw-r--r-- | tests/Wallabag/CoreBundle/Tools/samples/latin.txt | 9 |
5 files changed, 54 insertions, 1 deletions
diff --git a/src/Wallabag/CoreBundle/Tools/Utils.php b/src/Wallabag/CoreBundle/Tools/Utils.php index 4561f39f..eba21c02 100644 --- a/src/Wallabag/CoreBundle/Tools/Utils.php +++ b/src/Wallabag/CoreBundle/Tools/Utils.php | |||
@@ -29,6 +29,6 @@ class Utils | |||
29 | */ | 29 | */ |
30 | public static function getReadingTime($text) | 30 | public static function getReadingTime($text) |
31 | { | 31 | { |
32 | return floor(str_word_count(strip_tags($text)) / 200); | 32 | return floor(count(preg_split('~[^\p{L}\p{N}\']+~u', strip_tags($text))) / 200); |
33 | } | 33 | } |
34 | } | 34 | } |
diff --git a/tests/Wallabag/CoreBundle/Tools/UtilsTest.php b/tests/Wallabag/CoreBundle/Tools/UtilsTest.php new file mode 100644 index 00000000..435c25ca --- /dev/null +++ b/tests/Wallabag/CoreBundle/Tools/UtilsTest.php | |||
@@ -0,0 +1,28 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Tests\Wallabag\CoreBundle\Tools; | ||
4 | |||
5 | use Symfony\Component\Finder\Finder; | ||
6 | use Wallabag\CoreBundle\Tools\Utils; | ||
7 | |||
8 | class UtilsTest extends \PHPUnit_Framework_TestCase | ||
9 | { | ||
10 | /** | ||
11 | * @dataProvider examples | ||
12 | */ | ||
13 | public function testCorrectWordsCountForDifferentLanguages($text, $expectedCount) | ||
14 | { | ||
15 | static::assertEquals((float) $expectedCount, Utils::getReadingTime($text)); | ||
16 | } | ||
17 | |||
18 | public function examples() | ||
19 | { | ||
20 | $examples = []; | ||
21 | $finder = (new Finder())->in(__DIR__.'/samples'); | ||
22 | foreach ($finder->getIterator() as $file) { | ||
23 | $examples[] = [$file->getContents(), 1]; | ||
24 | } | ||
25 | |||
26 | return $examples; | ||
27 | } | ||
28 | } | ||
diff --git a/tests/Wallabag/CoreBundle/Tools/samples/cyrillic.txt b/tests/Wallabag/CoreBundle/Tools/samples/cyrillic.txt new file mode 100644 index 00000000..7b904da4 --- /dev/null +++ b/tests/Wallabag/CoreBundle/Tools/samples/cyrillic.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | Лорем ипсум долор сит амет, ех цум иллуд деленит, пер регионе фацилис те. Еи мел видит саепе интеллегам, яуас маиестатис цонституам яуо ат, цивибус реформиданс нецесситатибус ид яуи. Импетус тациматес пертинах ад еум. Усу еу легере бландит. | ||
2 | |||
3 | Ан меа тритани иуварет, иллум сцаевола легендос ат меа, дебитис импедит нусяуам ест ад. Не маиорум молестие цотидиеяуе вис. Иисяуе цонцлудатуряуе меи еу, татион цонсецтетуер еи про. Либер риденс ид хас, ид цонсул сенсерит пертинациа меа. Фацер молестиае цомпрехенсам ад еум, ин хис апеириан вивендум. Яуи аудире епицуреи иудицабит ат, веро хабео вертерем ад иус. Бонорум плацерат ин вис, сеа но оцурререт принципес интерессет, хас ет дицерет диспутандо. | ||
4 | |||
5 | Яуо цу цлита оцурререт. Сонет менандри ин сеа. Еум те нонумы вертерем. Вирис еяуидем фацилиси ет вим, делицата интеллегат иус ин. Ид дицат суммо витае вел, алияуип делецтус те дуо, цу вих хинц дуис видиссе. Нец цу фацилис урбанитас, алиа инсоленс ассуеверит при ут. | ||
6 | |||
7 | Яуаеяуе абхорреант инцоррупте не сеа, еу еирмод ерудити вих. Вел оптион тритани цоррумпит те. Поссе сусципит губергрен ут мел, ет еос ириуре менандри еффициенди. Те сале нулла цонсецтетуер сеа, меа не прима алиенум еффициантур. При ет воцибус реформиданс, темпор албуциус сед ан. Еи утрояуе волумус иус, атяуи цонгуе но меи. \ No newline at end of file | ||
diff --git a/tests/Wallabag/CoreBundle/Tools/samples/greek.txt b/tests/Wallabag/CoreBundle/Tools/samples/greek.txt new file mode 100644 index 00000000..59f15b8b --- /dev/null +++ b/tests/Wallabag/CoreBundle/Tools/samples/greek.txt | |||
@@ -0,0 +1,9 @@ | |||
1 | Λορεμ ιπσθμ δολορ σιτ αμετ, ηασ νο θταμθρ qθαεqθε ρεπρεηενδθντ. Ναμ λατινε προμπτα qθαερενδθμ ιδ. Νεc ει φαcερ cονcλθδατθρqθε, vολθπτθα vολθπταρια εφφιcιενδι αδ προ, νε σεα ασσεντιορ δεφινιεβασ. Μεα αγαμ ειθσ δολορε ετ, ηισ ει cορπορα περφεcτο. Vιξ cιβο δελενιτ νε, jθστο ριδενσ οπορτερε σεδ ιδ. | ||
2 | |||
3 | Ηισ νισλ ιθvαρετ γθβεργρεν εξ. Εθμ ιμπεδιτ δετραξιτ ινιμιcθσ ατ, αλια βλανδιτ δθο εα, μεα ιλλθδ επιcθρι cονσετετθρ αδ. Ιλλθδ γραεcε δελενιτι ηισ νο. Νεc ιδ ριδενσ εθισμοδ περιcθλισ, vισ αδ λαβοραμθσ περσεcθτι. Ιθσ εα λθπτατθμ αλιqθανδο δισπθτανδο. | ||
4 | |||
5 | Νεc εθ σθασ θτιναμ cονcεπταμ, σεα φεθγαιτ φιερεντ νε, σθμο ταμqθαμ περ ετ. Ελιτ θτροqθε ατομορθμ ιν δθο, εθ μεα λιβρισ ορνατθσ ταcιματεσ. Cθ σολεατ cονστιτθαμ νεc, τε σεα εξερcι αλιενθμ ρεcτεqθε. Σεα θτιναμ ινcορρθπτε αδ, δελενιτ cονcλθσιονεμqθε ναμ αν, διαμ γθβεργρεν cθ σιτ. | ||
6 | |||
7 | Cθ σεδ αλβθcιθσ ποστθλαντ. Vιξ ιδ ηομερο περcιπιτ cονcεπταμ. Ιν vιμ λιβρισ vιδερερ, εξ vισ αλιι ερρορ. Vιξ λοβορτισ ασσεντιορ cοντεντιονεσ τε, νε ηασ δεcορε περcιπιτθρ. Εστ εξ δισπθτατιονι δεφινιτιονεμ, qθοδ πηαεδρθμ προ εθ, εξ ηασ ιντεγρε ελιγενδι cονσεcτετθερ. | ||
8 | |||
9 | Ιθσ μολλισ ειρμοδ νο, vιξ νοστρθμ cονσετετθρ ει. Ιθδιcο vερτερεμ λθcιλιθσ qθι τε, νε προμπτα θτροqθε αccομμοδαρε περ. Φαcετε μανδαμθσ ηασ εξ, λιβερ δεβετ εθμ εξ, vιξ ιδ διcερετ σιγνιφερθμqθε. Εθ vιξ vοcεντ. \ No newline at end of file | ||
diff --git a/tests/Wallabag/CoreBundle/Tools/samples/latin.txt b/tests/Wallabag/CoreBundle/Tools/samples/latin.txt new file mode 100644 index 00000000..605cc40e --- /dev/null +++ b/tests/Wallabag/CoreBundle/Tools/samples/latin.txt | |||
@@ -0,0 +1,9 @@ | |||
1 | Lorem ipsum dolor sit amet, pro vivendo oporteat pertinacia ei. Vim fabellas molestiae cu, vel nibh legimus ea, in qui atomorum democritum. Ius ne agam soluta ignota, his sale aperiri complectitur te, omnis volumus accusam an eos. Ut mentitum appetere mel, minim temporibus eloquentiam sea ea. | ||
2 | |||
3 | Tation nominati pro ad. Pri eros eloquentiam reformidans ea, et liber epicurei erroribus pro, pri patrioque repudiandae et. Cetero perfecto at eam. Eros hendrerit constituto vix at, brute aperiri adolescens pro eu. Vix lucilius consulatu ei, ullum tantas munere vel in, regione feugiat eligendi at eam. | ||
4 | |||
5 | Eam an lucilius iracundia, audire diceret facilisi his in, ex paulo pertinacia pro. Ei nec dolorum prodesset, adhuc tacimates argumentum sit ad. Vim te hinc scriptorem, ad labores perpetua nec. Sit no legimus fierent, epicuri partiendo reformidans ne mea, per assum animal mnesarchum no. Cum cetero apeirian at. Ne altera feugait vim, pri purto accumsan at, causae mentitum epicurei eam ad. | ||
6 | |||
7 | Nec ut quod probo eligendi, cu dico iriure aperiam vis. Augue causae abhorreant per ut, iriure repudiandae no nam, exerci equidem deleniti nam te. Et duo saperet debitis adipiscing, quo odio audiam no, ex iudico delenit propriae duo. Eu eum eros abhorreant, an tractatos expetendis est. | ||
8 | |||
9 | Vix. \ No newline at end of file | ||