jr_codeschool 2.0.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7a5b78957e8d9c68cfae57d332e8811270c72054
4
+ data.tar.gz: 9b78d10f6dc8834c2767e4b79019714f58fcfb93
5
+ SHA512:
6
+ metadata.gz: 54b5dbf3c6d04f0e4c80455099503cda01f139c4f4f421335554f54bc09d5f6aa1ed69bda439f89df4dd3a683f1a7aa7937fcc3df1e4083846286ebcbd3d22e3
7
+ data.tar.gz: c440a70f9985f7a5da7bc9ba49152d049b0940e7b722bcb8701a52c717e1f86e09aa6faa3aed8671c11ef25c604c3c713ead5e884463ae8e382856e496b9d2e1
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ Gemfile.lock
data/.travis.yml ADDED
@@ -0,0 +1,15 @@
1
+ language: ruby
2
+ rvm:
3
+ - ruby-head
4
+ - 1.9.3
5
+ - 2.1.1
6
+ - 2.1.0
7
+ - jruby-19mode # JRuby in 1.9 mode
8
+ - jruby-head
9
+
10
+ branches:
11
+ only:
12
+ - master
13
+ - combine
14
+ - /^release-.*$/
15
+
data/Gemfile ADDED
@@ -0,0 +1,13 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ gem 'nokogiri'
6
+
7
+ group :test do
8
+ gem 'rake'
9
+ gem 'vcr'
10
+ gem 'webmock'
11
+ gem 'minitest'
12
+ gem 'minitest-rg'
13
+ end
data/LICENSE ADDED
File without changes
data/README.md ADDED
@@ -0,0 +1,2 @@
1
+ # Team-HW-1-Ideate-and-Scrape
2
+ # Hi!
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require 'rake/testtask'
2
+
3
+ task :default => [:spec]
4
+
5
+ desc 'Run specs'
6
+ Rake::TestTask.new(name=:spec) do |t|
7
+ t.pattern = 'spec/*_spec.rb'
8
+ end
data/bin/codeschool ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/scrape'
4
+
5
+ code_school = SiteScraper.new
6
+ code_school.code_school_output
@@ -0,0 +1,24 @@
1
+ $LOAD_PATH.push File.expand_path('../lib', __FILE__)
2
+ require 'version'
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = 'jr_codeschool'
6
+ s.version = CodeSchool::VERSION
7
+ s.date = CodeSchool::DATE
8
+ s.executables << 'codeschool'
9
+ s.summary = 'Access teacher and course information on CodeSchool'
10
+ s.description = 'show course and teacher on codeschool'
11
+ s.authors = %w('stozuka', 'stonegold546', 'huangjr', 'pengyuchen')
12
+ s.email = %w('stozuka@gmail.com', 'stozuka@gmail.com',
13
+ 'jr@nlplab.cc', 'pengyu@gmail.com')
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files spec/*`.split("\n")
16
+ s.homepage = 'https://github.com/SOAupstart2/Team-HW-1-Ideate-and-Scrape'
17
+ s.license = 'MIT'
18
+
19
+ s.add_development_dependency 'minitest'
20
+ s.add_development_dependency 'minitest-rg'
21
+ s.add_development_dependency 'vcr'
22
+ s.add_development_dependency 'webmock'
23
+ s.add_runtime_dependency 'nokogiri'
24
+ end
@@ -0,0 +1,47 @@
1
+ require 'open-uri'
2
+ require 'nokogiri'
3
+ require 'json'
4
+
5
+ # Scraper for CodeSchool website
6
+ module CodeSchool
7
+ COURSES = 'https://www.codeschool.com/courses'
8
+
9
+ # Gets array of courses
10
+ def courses
11
+ Nokogiri::HTML(open(COURSES))
12
+ end
13
+
14
+ # Gets names of teacher(s) for one course
15
+ def teacher(name)
16
+ Nokogiri::HTML(open("#{COURSES}/#{name}"))
17
+ end
18
+
19
+ # Get an array of course names
20
+ def course_names
21
+ courses.xpath('//h2/a').map(&:text)
22
+ end
23
+
24
+ # Change course names to urls
25
+ def course_urls
26
+ # Turn ' ', '.' to '-'
27
+ # Delete ':'
28
+ course_names.map do |name|
29
+ name.downcase.split(' ').join('-').tr('.', '-').delete(':')
30
+ end
31
+ end
32
+
33
+ # Get teachar's name by visiting each course page
34
+ def teacher_names
35
+ course_urls.map do |course_url|
36
+ teacher(course_url).xpath('//h3/a').map(&:text)
37
+ end
38
+ end
39
+
40
+ # JSON array of course names (string) and teacher(s) (array)
41
+ def code_school_data
42
+ course_names.zip(teacher_names).map do |c_t|
43
+ # { course: c_t[0], teacher: c_t[1] }
44
+ { c_t[0] => c_t[1] }
45
+ end.to_json
46
+ end
47
+ end
data/lib/scrape.rb ADDED
@@ -0,0 +1,10 @@
1
+ require_relative './code_school'
2
+
3
+ # Scraper class for several sites
4
+ class SiteScraper
5
+ include CodeSchool
6
+
7
+ def code_school_output
8
+ puts code_school_data
9
+ end
10
+ end
data/lib/version.rb ADDED
@@ -0,0 +1,4 @@
1
+ module CodeSchool
2
+ VERSION = '2.0.0'
3
+ DATE = '2015-10-19'
4
+ end
@@ -0,0 +1,17 @@
1
+ require 'minitest/autorun'
2
+ require 'minitest/rg'
3
+ require_relative '../lib/scrape'
4
+
5
+ describe 'test for code school' do
6
+ before do
7
+ cs = SiteScraper.new
8
+ @codeschool = cs.code_school_data
9
+ @output = File.read('./spec/testfiles/output.json')
10
+ end
11
+ it 'has same length' do
12
+ @codeschool.size.must_equal @output.chomp.length
13
+ end
14
+ it 'should be same' do
15
+ JSON.parse(@codeschool).must_equal JSON.parse(@output)
16
+ end
17
+ end
@@ -0,0 +1 @@
1
+ [{"Adventures in Web Animations":["Alyssa Nicoll"]},{"Breaking the Ice With Regular Expressions":["Dan Bickford"]},{"The Sequel to SQL":["Gregg Pollack"]},{"Unmasking HTML Emails":["Dan Denney"]},{"Try SQL":["Chari Clark"]},{"Staying Sharp with Angular.js":["Alyssa Nicoll"]},{"Blasting Off with Bootstrap":["Adam Fortuna"]},{"Building Blocks of Express.js":["Carlos Souza"]},{"Front-end Foundations":["Jon Friskics"]},{"Mastering GitHub":["Peter Bell"]},{"JavaScript Best Practices":["Jason Millhouse"]},{"Shaping up with Angular.js":["Gregg Pollack"]},{"Exploring Google Maps for iOS":["Jon Friskics"]},{"Surviving APIs with Rails":["Carlos Souza"]},{"Discover Drive":["Gregg Pollack"]},{"Warming Up With Ember.js":["Adam Fortuna"]},{"JavaScript Road Trip Part 3":["Jason Millhouse"]},{"Front-end Formations":["Drew Barontini"]},{"Core iOS 7":["Jon Friskics","Eric Allam"]},{"JavaScript Road Trip Part 1":["Jason Millhouse"]},{"JavaScript Road Trip Part 2":["Jason Millhouse"]},{"Rails 4 Patterns":["Gregg Pollack","Carlos Souza"]},{"Fundamentals of Design":["Tim Dikun"]},{"jQuery: The Return Flight":["Gregg Pollack"]},{"iOS Operation: MapKit":["Jon Friskics"]},{"Try Objective-C":["Eric Allam"]},{"iOS Operation: Models":["Jon Friskics"]},{"Git Real 2":["Gregg Pollack"]},{"Rails 4: Zombie Outlaws":["Gregg Pollack","Carlos Souza"]},{"Discover DevTools":["Gregg Pollack"]},{"Try jQuery":["Gregg Pollack"]},{"Anatomy of Backbone.js Part 2":["Gregg Pollack"]},{"Assembling Sass Part 2":["Nick Walsh"]},{"Try iOS":["Gregg Pollack"]},{"Try R":["Jay McGavren"]},{"Ruby Bits Part 2":["Carlos Souza","Mark Kendall"]},{"Assembling Sass":["Nick Walsh"]},{"Ruby Bits":["Gregg Pollack"]},{"Git Real":["Gregg Pollack","Olivier Lacan"]},{"Try Git":["Gregg Pollack","Olivier Lacan"]},{"Testing with RSpec":["Gregg Pollack","Olivier Lacan"]},{"Real-time Web with Node.js":["Gregg Pollack","Carlos Souza"]},{"Anatomy of Backbone.js":["Eric Allam","Gregg Pollack"]},{"Journey Into Mobile":["Jason VanLue"]},{"Rails Testing for Zombies":["Nathaniel Bibler"]},{"CSS Cross-Country":["Nick Walsh","Aimee Simone"]},{"CoffeeScript":["Gregg Pollack","Carlos Souza"]},{"Rails for Zombies 2":["Gregg Pollack"]},{"Try Ruby":["Why The Lucky Stiff"]},{"Rails for Zombies Redux":["Gregg Pollack"]}]
metadata ADDED
@@ -0,0 +1,136 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jr_codeschool
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
+ platform: ruby
6
+ authors:
7
+ - "'stozuka',"
8
+ - "'stonegold546',"
9
+ - "'huangjr',"
10
+ - "'pengyuchen'"
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2015-10-19 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: minitest
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: minitest-rg
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ - !ruby/object:Gem::Dependency
45
+ name: vcr
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ type: :development
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ - !ruby/object:Gem::Dependency
59
+ name: webmock
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ - !ruby/object:Gem::Dependency
73
+ name: nokogiri
74
+ requirement: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ type: :runtime
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ description: show course and teacher on codeschool
87
+ email:
88
+ - "'stozuka@gmail.com',"
89
+ - "'stozuka@gmail.com',"
90
+ - "'jr@nlplab.cc',"
91
+ - "'pengyu@gmail.com'"
92
+ executables:
93
+ - codeschool
94
+ extensions: []
95
+ extra_rdoc_files: []
96
+ files:
97
+ - ".gitignore"
98
+ - ".travis.yml"
99
+ - Gemfile
100
+ - LICENSE
101
+ - README.md
102
+ - Rakefile
103
+ - bin/codeschool
104
+ - codeschool.gemspec
105
+ - lib/code_school.rb
106
+ - lib/scrape.rb
107
+ - lib/version.rb
108
+ - spec/code_school_spec.rb
109
+ - spec/testfiles/output.json
110
+ homepage: https://github.com/SOAupstart2/Team-HW-1-Ideate-and-Scrape
111
+ licenses:
112
+ - MIT
113
+ metadata: {}
114
+ post_install_message:
115
+ rdoc_options: []
116
+ require_paths:
117
+ - lib
118
+ required_ruby_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ requirements: []
129
+ rubyforge_project:
130
+ rubygems_version: 2.2.2
131
+ signing_key:
132
+ specification_version: 4
133
+ summary: Access teacher and course information on CodeSchool
134
+ test_files:
135
+ - spec/code_school_spec.rb
136
+ - spec/testfiles/output.json