Criaremos para Jekyll sem utilizar plugins, um jeito de fazer esta estimativa de um jeito tão simples que você conseguirá aplicar a mesma lógica para qualquer sistema.
Se você já entende de programação, clique aqui ir direto ao código completo.
A lógica é bem simples, em média o ser humano ler 250 palavras por minutos (se você discordar poderá mudar a variável com esse valor depois).
Então primeiro passo é calcular quantas palavras o post tem e guardar em uma variável para usarmos depois.
1
2
{ % assign content = post . content %}
{% assign words = content | number_of_words %}
Com esse valor basta apenas dividir pelo número de palavras que o ser humano ler em média. Com isso já temos a estimativa de minutos do post.
1
2
3
4
{ % assign wpm = 250 % }
{ % assign content = post . content %}
{% assign words = content | number_of_words %}
{{ words | divided_by :wpm }} minutos de leitura
Com isso acabamos de criar um problema. Se der menos de 1 minuto o texto mostrará 0 minutos de leitura.
Faremos a divisão antes e verificaremos se é menor que 1 para colocar um texto mais adequado.
1
2
3
4
5
6
7
8
9
10
{ % assign wpm = 250 % }
{ % assign content = post . content %}
{% assign words = content | number_of_words %}
{ % assign estimated_minutes = words | divided_by :wpm % }
{ % if estimated_minutes < 1 % }
Menos de um minuto
{ % else % }
{{ words | divided_by :wpm }} minutos
{ % endif % } de leitura
Agora só verificar se deu 1 minuto para tirar o plural da frase.
1
2
3
4
5
6
7
8
9
10
11
12
{ % assign wpm = 250 % }
{ % assign content = post . content %}
{% assign words = content | number_of_words %}
{ % assign estimated_minutes = words | divided_by :wpm % }
{ % if estimated_minutes < 1 % }
Menos de um minuto
{ % elsif estimated_minutes == 1 % }
1 minuto
{ % else % }
{{ words | divided_by :wpm }} minutos
{ % endif % } de leitura
Daqui já poderiamos parar. Mas digamos que os posts são muito grandes, tipo livro. Será estranho mostrar 999 minutos. Melhor reduzir para horas.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{ % assign wpm = 250 % }
{ % assign hour = 60 % }
{ % assign content = post . content %}
{% assign words = content | number_of_words %}
{ % assign estimated_minutes = words | divided_by :wpm % }
{ % if estimated_minutes < 1 % }
Menos de um minuto
{ % elsif estimated_minutes == 1 % }
1 minuto
{ % elsif estimated_minutes < hour %}
{{ estimated_minutes } } minutos
{ % else % }
{{ estimated_minutes | divided_by :hour }} horas
{ % endif % } de leitura
Agora para deixar o código pronto para textos muito extenso, marcaremos quando a leitura passar de um dia para um texto melhor.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{ % assign wpm = 250 % }
{ % assign hour = 60 % }
{ % assign one_day = 1440 % }
{ % assign content = post . content %}
{% assign words = content | number_of_words %}
{ % assign estimated_minutes = words | divided_by :wpm % }
{ % if estimated_minutes < 1 % }
Menos de um minuto
{ % elsif estimated_minutes == 1 % }
1 minuto
{ % elsif estimated_minutes < hour %}
{{ estimated_minutes } } minutos
{ % elsif estimated_minutes < one_day %}
{{ estimated_minutes | divided_by:hour } } horas
{ % else % }
{{ estimated_minutes | divided_by :one_day }} dias
{ % endif % } de leitura
Para finalizar, verificamos se é um dia ou mais, para deixar o texto no plural ou singular.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{ % assign wpm = 250 % }
{ % assign hour = 60 % }
{ % assign one_day = 1440 % }
{ % assign content = post . content %}
{% assign words = content | number_of_words %}
{ % assign estimated_minutes = words | divided_by :wpm % }
{ % if estimated_minutes < 1 % }
Menos de um minuto
{ % elsif estimated_minutes == 1 % }
1 minuto
{ % elsif estimated_minutes < hour %}
{{ estimated_minutes } } minutos
{ % elsif estimated_minutes < one_day %}
{{ estimated_minutes | divided_by:hour } } horas
{ % else % }
{ % assign days = estimated_minutes | divided_by :one_day % }
{ % if days <= 1 % }
{{ days }} dia
{ % else % }
{{ days }} dias
{ % endif % }
{ % endif % } de leitura
Sua vez
Agora mostre que você entendeu o post, e tente portar esse código para outra linguagem.
Já até criamos um repositório para você criar sua versão lá. Repositório