simpsons_world 0.1.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 +7 -0
- data/.gitignore +16 -0
- data/Gemfile +4 -0
- data/Guardfile +77 -0
- data/LICENSE +22 -0
- data/README.md +41 -0
- data/Rakefile +14 -0
- data/lib/data/.gitkeep +0 -0
- data/lib/data/season-1.yml +69 -0
- data/lib/data/season-10.yml +116 -0
- data/lib/data/season-11.yml +114 -0
- data/lib/data/season-12.yml +114 -0
- data/lib/data/season-13.yml +120 -0
- data/lib/data/season-14.yml +129 -0
- data/lib/data/season-15.yml +125 -0
- data/lib/data/season-16.yml +118 -0
- data/lib/data/season-17.yml +121 -0
- data/lib/data/season-18.yml +123 -0
- data/lib/data/season-19.yml +112 -0
- data/lib/data/season-2.yml +113 -0
- data/lib/data/season-20.yml +106 -0
- data/lib/data/season-21.yml +126 -0
- data/lib/data/season-22.yml +122 -0
- data/lib/data/season-23.yml +117 -0
- data/lib/data/season-24.yml +115 -0
- data/lib/data/season-25.yml +126 -0
- data/lib/data/season-26.yml +49 -0
- data/lib/data/season-3.yml +125 -0
- data/lib/data/season-4.yml +112 -0
- data/lib/data/season-5.yml +107 -0
- data/lib/data/season-6.yml +123 -0
- data/lib/data/season-7.yml +124 -0
- data/lib/data/season-8.yml +128 -0
- data/lib/data/season-9.yml +123 -0
- data/lib/simpsons_world/railtie.rb +9 -0
- data/lib/simpsons_world/scrape.rb +28 -0
- data/lib/simpsons_world/season.rb +36 -0
- data/lib/simpsons_world/version.rb +3 -0
- data/lib/simpsons_world/view_helpers.rb +12 -0
- data/lib/simpsons_world.rb +13 -0
- data/simpsons_world.gemspec +28 -0
- data/spec/data/.gitkeep +0 -0
- data/spec/simpsons_world_spec.rb +125 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/support/helpers.rb +9 -0
- metadata +191 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
- 9
|
|
3
|
+
- 1:
|
|
4
|
+
:title: The City of New York vs. Homer Simpson
|
|
5
|
+
:description: The Simpsons journey to New York City to retrieve the family car.
|
|
6
|
+
:url: "/video/279160899882"
|
|
7
|
+
2:
|
|
8
|
+
:title: The Principal and the Pauper
|
|
9
|
+
:description: A stranger claims that Principal Skinner is an impostor.
|
|
10
|
+
:url: "/video/279164995863"
|
|
11
|
+
3:
|
|
12
|
+
:title: Lisa's Sax
|
|
13
|
+
:description: Homer and Marge recount how Lisa got her saxophone.
|
|
14
|
+
:url: "/video/279743555749"
|
|
15
|
+
4:
|
|
16
|
+
:title: Treehouse of Horror VIII
|
|
17
|
+
:description: Homer battles killer mutants after Springfield is destroyed by a
|
|
18
|
+
nuclear blast; a matter- transportation device melds Bart with a housefly; in
|
|
19
|
+
Colonial times, Marge is accused of being a witch.
|
|
20
|
+
:url: "/video/279170627965"
|
|
21
|
+
5:
|
|
22
|
+
:title: The Cartridge Family
|
|
23
|
+
:description: Homer purchases a handgun to protect his family.
|
|
24
|
+
:url: "/video/302813251779"
|
|
25
|
+
6:
|
|
26
|
+
:title: Bart Star
|
|
27
|
+
:description: Homer becomes coach of the Springfield Pee Wee Football team and
|
|
28
|
+
appoints Bart as starting quarterback.
|
|
29
|
+
:url: "/video/277030979963"
|
|
30
|
+
7:
|
|
31
|
+
:title: The Two Mrs. Nahasapeemapetilons
|
|
32
|
+
:description: In an effort to annul an arranged marriage, Apu tells his mother
|
|
33
|
+
he wed Marge.
|
|
34
|
+
:url: "/video/279177283545"
|
|
35
|
+
8:
|
|
36
|
+
:title: Lisa the Skeptic
|
|
37
|
+
:description: Townspeople believe Lisa has unearthed the fossilized remains of
|
|
38
|
+
an angel.
|
|
39
|
+
:url: "/video/279180355540"
|
|
40
|
+
9:
|
|
41
|
+
:title: Realty Bites
|
|
42
|
+
:description: Marge gets a job with a realty firm, but her honesty costs her lucrative
|
|
43
|
+
sales. Homer purchases a 60s hot-rod convertible at a police auction.
|
|
44
|
+
:url: "/video/280404547525"
|
|
45
|
+
10:
|
|
46
|
+
:title: Miracle on Evergreen Terrace
|
|
47
|
+
:description: People throughout Springfield open their hearts and wallets after
|
|
48
|
+
Bart claims the family's Christmas presents were stolen by a burglar.
|
|
49
|
+
:url: "/video/306881091696"
|
|
50
|
+
11:
|
|
51
|
+
:title: All Singing, All Dancing
|
|
52
|
+
:description: The Simpsons recall their many musical moments from seasons past.
|
|
53
|
+
:url: "/video/294808131518"
|
|
54
|
+
12:
|
|
55
|
+
:title: Bart Carny
|
|
56
|
+
:description: A carnival worker and his son move in with the Simpsons after Homer
|
|
57
|
+
costs them their jobs.
|
|
58
|
+
:url: "/video/302818371931"
|
|
59
|
+
13:
|
|
60
|
+
:title: The Joy of Sect
|
|
61
|
+
:description: Marge tries her hand at deprogramming after her family is brainwashed
|
|
62
|
+
by a religious cult.
|
|
63
|
+
:url: "/video/299627075941"
|
|
64
|
+
14:
|
|
65
|
+
:title: Das Bus
|
|
66
|
+
:description: Bart, Lisa and their classmates fight for survival when they become
|
|
67
|
+
stranded on a remote island. Homer starts his own business on the Internet.
|
|
68
|
+
:url: "/video/307093571584"
|
|
69
|
+
15:
|
|
70
|
+
:title: The Last Temptation of Krust
|
|
71
|
+
:description: Krusty shuns his old routines in favor of edgier material and suddenly
|
|
72
|
+
becomes the hottest comic in show business.
|
|
73
|
+
:url: "/video/294812739638"
|
|
74
|
+
16:
|
|
75
|
+
:title: Dumbbell Indemnity
|
|
76
|
+
:description: When Moe goes broke romancing his new love, he enlists Homer in
|
|
77
|
+
a scheme to collect on an insurance policy.
|
|
78
|
+
:url: "/video/283910211639"
|
|
79
|
+
17:
|
|
80
|
+
:title: Lisa the Simpson
|
|
81
|
+
:description: Lisa fears she is genetically predisposed to lose her intelligence.
|
|
82
|
+
Apu uses a frozen Jasper as a tourist attraction.
|
|
83
|
+
:url: "/video/299651139676"
|
|
84
|
+
18:
|
|
85
|
+
:title: This Little Wiggy
|
|
86
|
+
:description: Bart is appalled when Marge pairs him with Ralph Wiggum.
|
|
87
|
+
:url: "/video/299639875678"
|
|
88
|
+
19:
|
|
89
|
+
:title: Simpson Tide
|
|
90
|
+
:description: Homer becomes the captain of a Navy submarine. Bart gets his ear
|
|
91
|
+
pierced.
|
|
92
|
+
:url: "/video/302809667837"
|
|
93
|
+
20:
|
|
94
|
+
:title: The Trouble with Trillions
|
|
95
|
+
:description: When a tax audit lands him in hot water, Homer goes undercover for
|
|
96
|
+
the government and attempts to retrieve a trillion dollar note from Mr. Burns.
|
|
97
|
+
:url: "/video/299644483816"
|
|
98
|
+
21:
|
|
99
|
+
:title: Girly Edition
|
|
100
|
+
:description: Bart attempts to upstage Lisa when the pair co-host a children's
|
|
101
|
+
news program. Homer obtains a helper monkey.
|
|
102
|
+
:url: "/video/299672131928"
|
|
103
|
+
22:
|
|
104
|
+
:title: Trash of the Titans
|
|
105
|
+
:description: Homer enters the race for Sanitation Commissioner after garbage
|
|
106
|
+
men refuse to collect his trash.
|
|
107
|
+
:url: "/video/307101763818"
|
|
108
|
+
23:
|
|
109
|
+
:title: King of the Hill
|
|
110
|
+
:description: After improving his physique, Homer attempts to climb a treacherous
|
|
111
|
+
mountain.
|
|
112
|
+
:url: "/video/283916867598"
|
|
113
|
+
24:
|
|
114
|
+
:title: Lost Our Lisa
|
|
115
|
+
:description: Lisa gets lost in an unfamiliar part of town while searching for
|
|
116
|
+
a museum. Bart adheres novelties to his face only to discover they cannot be
|
|
117
|
+
removed.
|
|
118
|
+
:url: "/video/288133187527"
|
|
119
|
+
25:
|
|
120
|
+
:title: Natural Born Kissers
|
|
121
|
+
:description: Homer and Marge discover the secret to reigniting their sex life.
|
|
122
|
+
Bart and Lisa hunt for hidden treasure using Grampa's old mine sweeper.
|
|
123
|
+
:url: "/video/307099715600"
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module SimpsonsWorld
|
|
2
|
+
BASE_URL = "http://www.simpsonsworld.com"
|
|
3
|
+
EPISODES_URL = "/watch/episodes"
|
|
4
|
+
|
|
5
|
+
class Scrape
|
|
6
|
+
require 'nokogiri'
|
|
7
|
+
require 'open-uri'
|
|
8
|
+
|
|
9
|
+
def self.all
|
|
10
|
+
doc = Nokogiri::HTML(open BASE_URL << EPISODES_URL)
|
|
11
|
+
seasons = doc.css(".chapters-wrapper")
|
|
12
|
+
seasons.each_with_index do |season, i|
|
|
13
|
+
number = season.attr 'data-season-number'
|
|
14
|
+
episodes = season.css("ul.items > li").map.with_index(1) { |episode, j|
|
|
15
|
+
[ j,
|
|
16
|
+
{
|
|
17
|
+
title: episode.css('.category-thumb-expanded .thumbnail-text').text,
|
|
18
|
+
description: episode.css('.category-thumb-expanded .thumbnail-extra-text').text,
|
|
19
|
+
url: episode.css('a')[0]['href']
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}.to_h
|
|
23
|
+
SimpsonsWorld::Season.new(number, episodes)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module SimpsonsWorld
|
|
2
|
+
class Season
|
|
3
|
+
require 'yaml'
|
|
4
|
+
attr_reader :number, :episodes
|
|
5
|
+
|
|
6
|
+
def initialize number, episodes
|
|
7
|
+
@number, @episodes, @@all = number.to_i, episodes, nil
|
|
8
|
+
save
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def save
|
|
12
|
+
File.open(self.class.to_file_path(@number), 'w') do |file|
|
|
13
|
+
file.write [@number, @episodes].to_yaml
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
class << self
|
|
18
|
+
def all
|
|
19
|
+
@@all ||= init
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def init
|
|
23
|
+
Dir.glob(to_file_path("*")).map { |file| YAML.load_file(file) }.to_h
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def find number
|
|
27
|
+
all[number]
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def to_file_path number
|
|
31
|
+
File.join(DATA_DIR, "season-#{number}.yml")
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module SimpsonsWorld
|
|
2
|
+
module ViewHelpers
|
|
3
|
+
|
|
4
|
+
def simpsons_world_episode_url season:nil, episode:
|
|
5
|
+
season = 1 + Season.all.take_while { |k, episodes|
|
|
6
|
+
episode -= episodes.size if episode > episodes.size
|
|
7
|
+
}.size unless season
|
|
8
|
+
"#{BASE_URL}#{Season.all[season][episode][:url]}"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require "simpsons_world/version"
|
|
2
|
+
require 'simpsons_world/season'
|
|
3
|
+
require 'simpsons_world/scrape'
|
|
4
|
+
require 'simpsons_world/view_helpers'
|
|
5
|
+
require 'pry'
|
|
6
|
+
|
|
7
|
+
module SimpsonsWorld
|
|
8
|
+
DATA_DIR = ENV['environment'] && ENV['environment'] == 'test' ?
|
|
9
|
+
File.join(File.dirname(__FILE__), '..', 'spec', 'data') :
|
|
10
|
+
File.join(File.dirname(__FILE__), 'data')
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
require 'simpsons_world/railtie' if defined?(Rails)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'simpsons_world/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = "simpsons_world"
|
|
8
|
+
spec.version = SimpsonsWorld::VERSION
|
|
9
|
+
spec.authors = ["mcianni"]
|
|
10
|
+
spec.email = ["mcianni@gmail.com"]
|
|
11
|
+
spec.summary = %q{Link to episodes on the Simpsons World website.}
|
|
12
|
+
spec.description = %q{Generate a full url from an episode number to a Simpsons episode streaming on SimpsonsWorld.com.}
|
|
13
|
+
spec.homepage = "https://github.com/mcianni/simpsonsworld"
|
|
14
|
+
spec.license = "MIT"
|
|
15
|
+
|
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
|
+
spec.require_paths = ["lib"]
|
|
20
|
+
|
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.7"
|
|
22
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
|
23
|
+
spec.add_development_dependency "nokogiri"
|
|
24
|
+
spec.add_development_dependency "rspec"
|
|
25
|
+
spec.add_development_dependency "rspec-nc"
|
|
26
|
+
spec.add_development_dependency "guard"
|
|
27
|
+
spec.add_development_dependency "guard-rspec"
|
|
28
|
+
end
|
data/spec/data/.gitkeep
ADDED
|
File without changes
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
|
|
4
|
+
describe SimpsonsWorld do
|
|
5
|
+
describe "test suite" do
|
|
6
|
+
it 'should not touch the real data dir' do
|
|
7
|
+
expect( SimpsonsWorld::DATA_DIR ).to include("/spec/")
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
describe SimpsonsWorld do
|
|
13
|
+
include Helpers
|
|
14
|
+
include SimpsonsWorld::ViewHelpers
|
|
15
|
+
|
|
16
|
+
EPISODE_COUNT = 5
|
|
17
|
+
|
|
18
|
+
let(:season_one_data) { season_data }
|
|
19
|
+
let(:season_two_data) { season_data(season: 2) }
|
|
20
|
+
let(:season_three_data) { season_data(season: 3) }
|
|
21
|
+
|
|
22
|
+
def create_season data=nil
|
|
23
|
+
@season = SimpsonsWorld::Season.new(*(data || season_one_data))
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def purge_test_data
|
|
27
|
+
FileUtils.rm_rf(Dir.glob(File.join(File.dirname(__FILE__), "/data/*.yml")))
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
#it 'successfully parses the current markup' do
|
|
31
|
+
# expect{ SimpsonsWorld::Scrape.all }.to_not raise_error
|
|
32
|
+
#end
|
|
33
|
+
|
|
34
|
+
it 'should have a legit fixture' do
|
|
35
|
+
expect { create_season }.to_not raise_error
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
before(:each) do
|
|
39
|
+
purge_test_data
|
|
40
|
+
create_season
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it 'should set the season number' do
|
|
44
|
+
expect( @season.number ).to eql(1)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it 'should set the episodes' do
|
|
48
|
+
expect( @season.episodes ).not_to be_nil
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "should set #{EPISODE_COUNT} episodes" do
|
|
52
|
+
expect( @season.episodes.count ).to eql(EPISODE_COUNT)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "should save the data to file" do
|
|
56
|
+
expect File.exists?(SimpsonsWorld::Season::to_file_path(@season.number))
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "should save multiple seasons to multiple files" do
|
|
60
|
+
create_season(season_two_data)
|
|
61
|
+
expect( Dir[File.join(SimpsonsWorld::DATA_DIR, "season-*.yml")].count ).to eql 2
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "should load the data on demand when looking for one season" do
|
|
65
|
+
expect( SimpsonsWorld::Season.find(1) ).to_not be(nil)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "should load the data on demand when requesting all seasons" do
|
|
69
|
+
expect( SimpsonsWorld::Season.all ).to_not be(nil)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "shouldn't reload the data once it's been loaded" do
|
|
73
|
+
expect( SimpsonsWorld::Season.all.object_id ).to eql( SimpsonsWorld::Season.all.object_id )
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
it "should reload the data if a new season has been added" do
|
|
77
|
+
obj_id = SimpsonsWorld::Season.all.object_id
|
|
78
|
+
create_season(season_two_data)
|
|
79
|
+
expect( SimpsonsWorld::Season.all.object_id ).not_to eql( obj_id )
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "should not find a non-existent season" do
|
|
83
|
+
expect( SimpsonsWorld::Season.find(50) ).to be(nil)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it 'should return the correct episode' do
|
|
87
|
+
expect( @season.episodes[1] ).to eql(season_one_data[1][1])
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it 'should set the correct path' do
|
|
91
|
+
expect( @season.episodes[1][:url] ).to eql("/path/s1-e1")
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
describe "url finders" do
|
|
95
|
+
before(:all) do
|
|
96
|
+
@view = Object.new
|
|
97
|
+
@view.extend(SimpsonsWorld::ViewHelpers)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
it 'should return the correct url for episode number' do
|
|
101
|
+
expect( @view.simpsons_world_episode_url(episode: 1) ).to \
|
|
102
|
+
eql("http://www.simpsonsworld.com/path/s1-e1")
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
it 'should return the correct url for season and episode number' do
|
|
106
|
+
expect( @view.simpsons_world_episode_url(season: 1, episode: 1) ).to match(/s1-e1/)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
it 'should return the correct url for a season 2 episode' do
|
|
110
|
+
create_season(season_two_data)
|
|
111
|
+
expect( @view.simpsons_world_episode_url(episode: 6) ).to match(/s2-e1/)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
it 'should return the correct url for a season 1 finale' do
|
|
115
|
+
create_season(season_two_data)
|
|
116
|
+
expect( @view.simpsons_world_episode_url(episode: 5) ).to match(/s1-e5/)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
it 'should return the correct url for a season 3 episode' do
|
|
120
|
+
create_season(season_two_data) and create_season(season_three_data)
|
|
121
|
+
expect( @view.simpsons_world_episode_url(episode: 14) ).to match(/s3-e4/)
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: simpsons_world
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- mcianni
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2015-01-21 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.7'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '1.7'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '10.0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '10.0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: nokogiri
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: rspec
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: rspec-nc
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: guard
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: guard-rspec
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - ">="
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - ">="
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0'
|
|
111
|
+
description: Generate a full url from an episode number to a Simpsons episode streaming
|
|
112
|
+
on SimpsonsWorld.com.
|
|
113
|
+
email:
|
|
114
|
+
- mcianni@gmail.com
|
|
115
|
+
executables: []
|
|
116
|
+
extensions: []
|
|
117
|
+
extra_rdoc_files: []
|
|
118
|
+
files:
|
|
119
|
+
- ".gitignore"
|
|
120
|
+
- Gemfile
|
|
121
|
+
- Guardfile
|
|
122
|
+
- LICENSE
|
|
123
|
+
- README.md
|
|
124
|
+
- Rakefile
|
|
125
|
+
- lib/data/.gitkeep
|
|
126
|
+
- lib/data/season-1.yml
|
|
127
|
+
- lib/data/season-10.yml
|
|
128
|
+
- lib/data/season-11.yml
|
|
129
|
+
- lib/data/season-12.yml
|
|
130
|
+
- lib/data/season-13.yml
|
|
131
|
+
- lib/data/season-14.yml
|
|
132
|
+
- lib/data/season-15.yml
|
|
133
|
+
- lib/data/season-16.yml
|
|
134
|
+
- lib/data/season-17.yml
|
|
135
|
+
- lib/data/season-18.yml
|
|
136
|
+
- lib/data/season-19.yml
|
|
137
|
+
- lib/data/season-2.yml
|
|
138
|
+
- lib/data/season-20.yml
|
|
139
|
+
- lib/data/season-21.yml
|
|
140
|
+
- lib/data/season-22.yml
|
|
141
|
+
- lib/data/season-23.yml
|
|
142
|
+
- lib/data/season-24.yml
|
|
143
|
+
- lib/data/season-25.yml
|
|
144
|
+
- lib/data/season-26.yml
|
|
145
|
+
- lib/data/season-3.yml
|
|
146
|
+
- lib/data/season-4.yml
|
|
147
|
+
- lib/data/season-5.yml
|
|
148
|
+
- lib/data/season-6.yml
|
|
149
|
+
- lib/data/season-7.yml
|
|
150
|
+
- lib/data/season-8.yml
|
|
151
|
+
- lib/data/season-9.yml
|
|
152
|
+
- lib/simpsons_world.rb
|
|
153
|
+
- lib/simpsons_world/railtie.rb
|
|
154
|
+
- lib/simpsons_world/scrape.rb
|
|
155
|
+
- lib/simpsons_world/season.rb
|
|
156
|
+
- lib/simpsons_world/version.rb
|
|
157
|
+
- lib/simpsons_world/view_helpers.rb
|
|
158
|
+
- simpsons_world.gemspec
|
|
159
|
+
- spec/data/.gitkeep
|
|
160
|
+
- spec/simpsons_world_spec.rb
|
|
161
|
+
- spec/spec_helper.rb
|
|
162
|
+
- spec/support/helpers.rb
|
|
163
|
+
homepage: https://github.com/mcianni/simpsonsworld
|
|
164
|
+
licenses:
|
|
165
|
+
- MIT
|
|
166
|
+
metadata: {}
|
|
167
|
+
post_install_message:
|
|
168
|
+
rdoc_options: []
|
|
169
|
+
require_paths:
|
|
170
|
+
- lib
|
|
171
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
172
|
+
requirements:
|
|
173
|
+
- - ">="
|
|
174
|
+
- !ruby/object:Gem::Version
|
|
175
|
+
version: '0'
|
|
176
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
177
|
+
requirements:
|
|
178
|
+
- - ">="
|
|
179
|
+
- !ruby/object:Gem::Version
|
|
180
|
+
version: '0'
|
|
181
|
+
requirements: []
|
|
182
|
+
rubyforge_project:
|
|
183
|
+
rubygems_version: 2.4.5
|
|
184
|
+
signing_key:
|
|
185
|
+
specification_version: 4
|
|
186
|
+
summary: Link to episodes on the Simpsons World website.
|
|
187
|
+
test_files:
|
|
188
|
+
- spec/data/.gitkeep
|
|
189
|
+
- spec/simpsons_world_spec.rb
|
|
190
|
+
- spec/spec_helper.rb
|
|
191
|
+
- spec/support/helpers.rb
|