lesswrong 0.0.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 +7 -0
- data/bin/lesswrong_exec +3 -0
- data/lib/lesswrong_gem.rb +106 -0
- metadata +103 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9c3edd88393b62a92df6b7722b76b809b64c9008
|
4
|
+
data.tar.gz: a95cb039d1f3486e407cc32501eb7642515c2cd1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 631c523065e8115bf7795b5feebaa4d455ac444b2ec8ae4cd9f5c5db24de5e807040c5ba25cbfa5006e4aa56b25c5283e7d41777af9743ddce6d56110c8fd162
|
7
|
+
data.tar.gz: 822838e07f1da593521e89ebe8a91f2deb560e29fc76c54642396f23a366d699490f34c27bffb81ee43a90e17a669a973450a12ef4f9bf633682742eab3fe511
|
data/bin/lesswrong_exec
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
require 'Nokogiri'
|
2
|
+
require 'open-uri'
|
3
|
+
require 'launchy'
|
4
|
+
require 'pry'
|
5
|
+
|
6
|
+
url = URI('https://wiki.lesswrong.com/wiki/Sequences')
|
7
|
+
html = Nokogiri::HTML(open(url))
|
8
|
+
books_node = html.css('li')
|
9
|
+
|
10
|
+
# fill hash with book names and urls
|
11
|
+
books_hash = {}
|
12
|
+
|
13
|
+
books_node.each do |n|
|
14
|
+
if n.inner_text.include?("Book") && !n.css('a').empty?
|
15
|
+
books_hash[n.text.lines.first] = "https://wiki.lesswrong.com#{n.css('a').attribute('href')}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
puts "Welcome to the lesswrong sequences"
|
20
|
+
puts "Select a book by number (1-6) or randomize your selection (random)"
|
21
|
+
puts books_hash.keys
|
22
|
+
|
23
|
+
user_input = gets.chomp
|
24
|
+
|
25
|
+
book_toggle = false
|
26
|
+
|
27
|
+
while book_toggle != true
|
28
|
+
if user_input == "random"
|
29
|
+
user_input = rand(1..6)
|
30
|
+
book_toggle = true
|
31
|
+
elsif user_input.to_i.between?(1, 6)
|
32
|
+
break
|
33
|
+
else
|
34
|
+
puts "Invalid input"
|
35
|
+
user_input = gets.chomp
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
puts "You have selected #{books_hash.keys[user_input.to_i - 1]}"
|
40
|
+
|
41
|
+
new_html = Nokogiri::HTML(open(books_hash.values[user_input.to_i - 1]).read)
|
42
|
+
book_node = new_html.css('div#toc')
|
43
|
+
|
44
|
+
chapters = {}
|
45
|
+
book_node.css('li a').each do |n|
|
46
|
+
chapters[n.inner_text] = "#{books_hash.values[user_input.to_i - 1]}#{n.attribute('href')}"
|
47
|
+
end
|
48
|
+
|
49
|
+
puts "Book #{user_input} has #{chapters.length} chapters: "
|
50
|
+
puts "Select a chapter by number (1-#{chapters.length}) or randomize your selection (random)"
|
51
|
+
puts chapters.keys
|
52
|
+
|
53
|
+
user_input = gets.chomp
|
54
|
+
|
55
|
+
chapter_toggle = false
|
56
|
+
|
57
|
+
while chapter_toggle != true
|
58
|
+
if user_input == "random"
|
59
|
+
user_input = rand(1..chapters.length)
|
60
|
+
chapter_toggle = true
|
61
|
+
elsif user_input.to_i.between?(1, chapters.length)
|
62
|
+
break
|
63
|
+
else
|
64
|
+
puts "Invalid input"
|
65
|
+
user_input = gets.chomp
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
articles = new_html.css('dl')[user_input.to_i - 1].inner_text.split("\n\n")
|
70
|
+
articles.map! { |article| article.gsub(/\n/, "") }
|
71
|
+
|
72
|
+
article_hash = {}
|
73
|
+
|
74
|
+
new_html.css('dl').each do |n|
|
75
|
+
articles.each do |a|
|
76
|
+
if n.inner_text.include?(a)
|
77
|
+
article_hash[a] = "#{n.css('a').attribute('href')}"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
puts "You have selected chapter #{chapters.keys[user_input.to_i - 1]}"
|
83
|
+
puts "#{chapters.keys[user_input.to_i - 1]} has #{article_hash.length} articles:"
|
84
|
+
puts "Select an article by number (1-#{article_hash.length}) or randomize your selection (random)"
|
85
|
+
puts article_hash.keys
|
86
|
+
|
87
|
+
user_input = gets.chomp
|
88
|
+
|
89
|
+
article_toggle = false
|
90
|
+
|
91
|
+
while article_toggle != true
|
92
|
+
if user_input == "random"
|
93
|
+
user_input = rand(1..article_hash.length)
|
94
|
+
article_toggle = true
|
95
|
+
elsif user_input.to_i.between?(1, article_hash.length)
|
96
|
+
break
|
97
|
+
else
|
98
|
+
puts "Invalid input"
|
99
|
+
user_input = gets.chomp
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
puts "You have selected article #{article_hash.keys[user_input.to_i - 1]}"
|
104
|
+
puts article_hash.values[user_input.to_i - 1]
|
105
|
+
|
106
|
+
Launchy.open(article_hash.values[user_input.to_i - 1])
|
metadata
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lesswrong
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Noah Milstein
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-09-11 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.12'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.12'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.4'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.4'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: Nokogiri
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.6.8
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.6.8
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: launchy
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.4.3
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 2.4.3
|
69
|
+
description: Allows the user to quickly navigate through the LW sequences from the
|
70
|
+
command line
|
71
|
+
email: noahamilstein@gmail.com
|
72
|
+
executables:
|
73
|
+
- lesswrong_exec
|
74
|
+
extensions: []
|
75
|
+
extra_rdoc_files: []
|
76
|
+
files:
|
77
|
+
- bin/lesswrong_exec
|
78
|
+
- lib/lesswrong_gem.rb
|
79
|
+
homepage: https://github.com/mihaowei/lesswrong
|
80
|
+
licenses:
|
81
|
+
- MIT
|
82
|
+
metadata: {}
|
83
|
+
post_install_message:
|
84
|
+
rdoc_options: []
|
85
|
+
require_paths:
|
86
|
+
- lib
|
87
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
requirements: []
|
98
|
+
rubyforge_project:
|
99
|
+
rubygems_version: 2.6.6
|
100
|
+
signing_key:
|
101
|
+
specification_version: 4
|
102
|
+
summary: Navigate the LW sequences from the command line
|
103
|
+
test_files: []
|