read-time 1.0.0.beta

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/read-time.rb +57 -0
  3. metadata +58 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e1af0628ed42c950217432c52dd50129d684cf9f
4
+ data.tar.gz: 2db889fcff39e1075e7ae0a79881ccad0cfe7f8d
5
+ SHA512:
6
+ metadata.gz: eae2eec380bcc2c73f789600638a7950cfc695e3e40d49f5d60af844d652719886843e7a047f524403306e4c2cc45e41bfe54532be3c51f9bcb117e8a3b9cc40
7
+ data.tar.gz: 3bbc7ba8045a310a1f3389278140c3f1b5042e5896abb1bd20fce1e0df5a2f1cf1a8f003acbc9567ba642be6f9123ab70cadd17e0cf708c666fb1008ba373adf
@@ -0,0 +1,57 @@
1
+ module ReadTime
2
+ def readtime(options = {})
3
+ reading_speed = (options[:reading_speed] || ReadTime.config.reading_speed).to_f
4
+ format = options[:format] || ReadTime.config.format
5
+ word_count = scan(/[\w-]+/).size
6
+ num = ((word_count / reading_speed) * 60).ceil
7
+
8
+ minutes = num / 60
9
+ seconds = num - (minutes * 60)
10
+
11
+ case format
12
+ when :default
13
+ min = (num / 60.0).ceil
14
+ "#{min} minute read"
15
+ when :long
16
+ if seconds.zero?
17
+ "#{minutes} minute read"
18
+ elsif minutes.zero?
19
+ "#{seconds} second read"
20
+ else
21
+ "#{minutes} minute #{seconds} second read"
22
+ end
23
+ else
24
+ min = (num / 60.0).ceil
25
+ "#{min} minute read"
26
+ end
27
+ end
28
+
29
+ class << self
30
+ attr_writer :config
31
+ end
32
+
33
+ def self.config
34
+ @config ||= Configuration.new
35
+ end
36
+
37
+ def self.reset_config
38
+ @config = Configuration.new
39
+ end
40
+
41
+ def self.configure
42
+ yield(config)
43
+ end
44
+
45
+ class Configuration
46
+ attr_accessor :format, :reading_speed
47
+
48
+ def initialize
49
+ @format = :default
50
+ @reading_speed = 275 # WPM (words per minute)
51
+ end
52
+ end
53
+ end
54
+
55
+ class String
56
+ include ReadTime
57
+ end
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: read-time
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.beta
5
+ platform: ruby
6
+ authors:
7
+ - Deepak Mahakale
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-08-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: ReadTime estimates the time required to read the article.
28
+ email: deepakmahakale@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/read-time.rb
34
+ homepage: http://rubygems.org/gems/read-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: 1.3.1
52
+ requirements: []
53
+ rubyforge_project:
54
+ rubygems_version: 2.4.5
55
+ signing_key:
56
+ specification_version: 4
57
+ summary: Time required to read an article
58
+ test_files: []