jekyll-reading-time 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/jekyll-reading-time.rb +53 -0
  3. metadata +58 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: ae977e94ca2754b568c0243554f6fc7f7593df763d98548a626af534afd2768a
4
+ data.tar.gz: e77cd6d62f4235a6ccc94eac7f338025870205b5532e3f379c0e5533d017eef0
5
+ SHA512:
6
+ metadata.gz: 61696da82bc2f84e26c4e960c13329e824101f9a4b753de89be18384a5ca6df17fb2fc0c93eeaaa02d688030470a9849d5379df56f5fc8468a055629e7541d5a
7
+ data.tar.gz: f662a8a57f08836c094dca32597aaa7f951dd2ac64dfd0b0e696722bd443239a5d41e113ea2260683ba619fe4c824a313adc5c8587806bcd37bf0d7a9fa49dec
@@ -0,0 +1,53 @@
1
+ # Average reading words per minute
2
+ WORDS_PER_MINUTE = 180
3
+
4
+ def strip_pre_tags(input)
5
+ empty = ''.freeze
6
+ input.to_s.gsub(/<pre(?:(?!<\/pre).|\s)*<\/pre>/mi, empty)
7
+ end
8
+
9
+ def get_plain_text(input)
10
+ strip_html(strip_pre_tags(input))
11
+ end
12
+
13
+ module JekyllReadingTime
14
+ def reading_time(input)
15
+ # Get words count
16
+ total_words = get_plain_text(input).split.size
17
+
18
+ # Load configuration
19
+ config = @context.registers[:site].config["reading_time"]
20
+
21
+ # Setup default value
22
+ if ! config
23
+ second_plural = "seconds"
24
+ minute_singular = "minute"
25
+ minute_plural = "minutes"
26
+ else
27
+ second_plural = config["second_plural"] ? config["second_plural"] : "seconds"
28
+ minute_singular = config["minute_singular"] ? config["minute_singular"] : "minute"
29
+ minute_plural = config["minute_plural"] ? config["minute_plural"] : "minutes"
30
+ end
31
+
32
+ # Calculate reading time
33
+ case total_words
34
+ when 0 .. 89
35
+ return "30 #{second_plural}"
36
+ when 90 .. 269
37
+ return "1 #{minute_singular}"
38
+ when 230 .. 449
39
+ return "2 #{minute_plural}"
40
+ when 450 .. 629
41
+ return "3 #{minute_plural}"
42
+ when 630 .. 809
43
+ return "4 #{minute_plural}"
44
+ when 810 .. 990
45
+ return "5 #{minute_plural}"
46
+ else
47
+ minutes = ( total_words / WORDS_PER_MINUTE ).floor
48
+ return "#{minutes} #{minute_plural}";
49
+ end
50
+ end
51
+ end
52
+
53
+ Liquid::Template.register_filter(JekyllReadingTime)
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jekyll-reading-time
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Alex
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-01-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: jekyll
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description:
28
+ email: alxmorais8@msn.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/jekyll-reading-time.rb
34
+ homepage: http://rubygems.org/gems/jekyll-reading-time
35
+ licenses:
36
+ - MIT
37
+ metadata: {}
38
+ post_install_message:
39
+ rdoc_options: []
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ requirements: []
53
+ rubyforge_project:
54
+ rubygems_version: 2.7.6.2
55
+ signing_key:
56
+ specification_version: 4
57
+ summary: Get the time needed to read a post
58
+ test_files: []