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.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/bin/lesswrong_exec +3 -0
  3. data/lib/lesswrong_gem.rb +106 -0
  4. 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
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'lesswrong_gem.rb'
@@ -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: []