lurkmore 0.3.0 → 0.3.1
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.
- checksums.yaml +4 -4
- data/lib/lurkmore.rb +44 -12
- metadata +89 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a4710438fdd8a05a383e307acb310fe8b9740af
|
4
|
+
data.tar.gz: 77ebcd06b9cf07d6804cb44394cf66c104a365e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b2d30af980fc989f965688e81e8fbeab6aa20c1f48ce64f44035f6efd10630e444286ca1106aa36079c8ac62a90b72da2567172eec88fcc4af5c0ea431bfb3d6
|
7
|
+
data.tar.gz: a6bd23f8254016b8de470a20eafc4a578b6bb536075f97c624dcd3c2ef88388d9957864e8d8fe6bb04f661b2e430f0af30ce0553f5a9a4a181caf6c7395958df
|
data/lib/lurkmore.rb
CHANGED
@@ -3,21 +3,40 @@
|
|
3
3
|
require 'tty-spinner'
|
4
4
|
require 'capybara/poltergeist'
|
5
5
|
|
6
|
-
# Main
|
6
|
+
# Main class for http://lurkmore.to
|
7
7
|
class Lurkmore
|
8
|
+
# Link to random page
|
8
9
|
LINK_RANDOM = 'http://lurkmore.to/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:Random'
|
10
|
+
|
11
|
+
# Current terminal width
|
9
12
|
TERM_WIDTH = Integer(`tput cols`)
|
10
13
|
|
14
|
+
# @!group Color codes
|
15
|
+
|
16
|
+
# Red code
|
11
17
|
RED = "\e[31m"
|
18
|
+
|
19
|
+
# Green code
|
12
20
|
GREEN = "\e[32m"
|
21
|
+
|
22
|
+
#Reset code
|
13
23
|
RESET_COLOR = "\e[0m"
|
14
24
|
|
25
|
+
# @!endgroup
|
26
|
+
|
15
27
|
# Gets a random article from http://lurkmore.to
|
28
|
+
# @example
|
29
|
+
# Lurkmore.random #=> ...
|
30
|
+
# @note Sometimes throws a PhantomJS JavaScript error.
|
16
31
|
def self.random
|
17
32
|
spinner = TTY::Spinner.new
|
18
33
|
spinner.run do
|
19
|
-
|
20
|
-
|
34
|
+
begin
|
35
|
+
@session = Capybara::Session.new(:poltergeist)
|
36
|
+
@session.visit(LINK_RANDOM)
|
37
|
+
rescue Capybara::Poltergeist::JavascriptError
|
38
|
+
$stderr.puts "A JS error occured. Skipping..."
|
39
|
+
end
|
21
40
|
end
|
22
41
|
begin
|
23
42
|
if $stdout.tty?
|
@@ -27,8 +46,7 @@ class Lurkmore
|
|
27
46
|
end
|
28
47
|
puts
|
29
48
|
puts hr
|
30
|
-
|
31
|
-
paragraphs.each do |p|
|
49
|
+
all_p.each do |p|
|
32
50
|
text = p.text.strip
|
33
51
|
next if text.empty? || (text.split(' ').size < 10)
|
34
52
|
puts wrap(text), hr
|
@@ -38,28 +56,42 @@ class Lurkmore
|
|
38
56
|
end
|
39
57
|
end
|
40
58
|
|
41
|
-
# Wraps strings
|
42
|
-
|
43
|
-
|
59
|
+
# Wraps strings according to #TERM_WIDTH
|
60
|
+
|
61
|
+
# @param s [String] string to wrap
|
62
|
+
# @return [String] wrapped string
|
63
|
+
def self.wrap(s)
|
64
|
+
s.gsub(/(.{1,#{TERM_WIDTH}})(\s+|\Z)/, "\\1\n")
|
44
65
|
end
|
45
66
|
|
46
|
-
# Finds all p tags on current
|
67
|
+
# Finds all p tags on current _session_
|
68
|
+
#
|
69
|
+
# @return [Array] array of p tags
|
47
70
|
def self.all_p
|
48
71
|
@session.all(:css, '.mw-content-ltr p')
|
49
72
|
end
|
50
73
|
|
51
|
-
#
|
74
|
+
# Makes a horizontal rule
|
75
|
+
#
|
76
|
+
# @return [String] horizontal rule matching #TERM_WIDTH
|
52
77
|
def self.hr
|
53
78
|
"-" * TERM_WIDTH
|
54
79
|
end
|
55
80
|
|
56
|
-
#
|
81
|
+
# Creates a heading
|
82
|
+
#
|
83
|
+
# @param head [String] text to make heading from
|
84
|
+
# @return [String] heading
|
57
85
|
def self.heading(head)
|
58
86
|
half = ( TERM_WIDTH - Integer(head.size) ) / 2
|
59
87
|
"-" * half + head + "-" * half
|
60
88
|
end
|
61
89
|
|
62
|
-
# Colorcodes
|
90
|
+
# Colorcodes strings
|
91
|
+
#
|
92
|
+
# @param string [String] string to colorcode
|
93
|
+
# @param code [String] color code
|
94
|
+
# @return [String] colorcoded string
|
63
95
|
def self.colorcode(string, code)
|
64
96
|
code + string + RESET_COLOR
|
65
97
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lurkmore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Filonenko
|
@@ -10,13 +10,93 @@ bindir: bin
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2016-10-17 00:00:00.000000000 Z
|
12
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: '3.5'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 3.5.0
|
23
|
+
type: :development
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.5'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 3.5.0
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: rake
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '11.2'
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 11.2.2
|
43
|
+
type: :development
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '11.2'
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 11.2.2
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: simplecov
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0.12'
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.12.0
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0.12'
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: 0.12.0
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: yard
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0.9'
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.9.5
|
83
|
+
type: :development
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.9'
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 0.9.5
|
13
93
|
- !ruby/object:Gem::Dependency
|
14
94
|
name: poltergeist
|
15
95
|
requirement: !ruby/object:Gem::Requirement
|
16
96
|
requirements:
|
17
97
|
- - "~>"
|
18
98
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.11
|
99
|
+
version: '1.11'
|
20
100
|
- - ">="
|
21
101
|
- !ruby/object:Gem::Version
|
22
102
|
version: 1.11.0
|
@@ -26,7 +106,7 @@ dependencies:
|
|
26
106
|
requirements:
|
27
107
|
- - "~>"
|
28
108
|
- !ruby/object:Gem::Version
|
29
|
-
version: 1.11
|
109
|
+
version: '1.11'
|
30
110
|
- - ">="
|
31
111
|
- !ruby/object:Gem::Version
|
32
112
|
version: 1.11.0
|
@@ -35,6 +115,9 @@ dependencies:
|
|
35
115
|
requirement: !ruby/object:Gem::Requirement
|
36
116
|
requirements:
|
37
117
|
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0.4'
|
120
|
+
- - ">="
|
38
121
|
- !ruby/object:Gem::Version
|
39
122
|
version: 0.4.1
|
40
123
|
type: :runtime
|
@@ -42,6 +125,9 @@ dependencies:
|
|
42
125
|
version_requirements: !ruby/object:Gem::Requirement
|
43
126
|
requirements:
|
44
127
|
- - "~>"
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0.4'
|
130
|
+
- - ">="
|
45
131
|
- !ruby/object:Gem::Version
|
46
132
|
version: 0.4.1
|
47
133
|
description: Prints random articles from http://lurkmore.to
|