movie_show_times 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,6 +2,7 @@ require "movie_show_times/version"
2
2
  require 'movie_show_times/crawler'
3
3
  require 'movie_show_times/parser'
4
4
  require 'movie_show_times/language_parser'
5
+ require 'movie_show_times/genre_parser'
5
6
 
6
7
  module MovieShowTimes
7
8
 
@@ -0,0 +1,36 @@
1
+ # encoding: UTF-8
2
+
3
+ module MovieShowTimes
4
+ class GenreParser
5
+
6
+ def initialize(language = 'en')
7
+ @language = language
8
+ terms = nil
9
+
10
+ begin
11
+ genres_file_contents = File.open("#{File.dirname(__FILE__)}/genres/#{language}.txt").readlines.map(&:chomp)
12
+ terms = genres_file_contents.join('|')
13
+ rescue Errno::ENOENT
14
+ end
15
+ @regular_expression = Regexp.new("(#{terms})", 'i') unless terms.nil?
16
+ end
17
+
18
+ def parse(info_line)
19
+ if @regular_expression
20
+ parts = info_line.split(' - ')
21
+ parts.each do |p|
22
+ return p unless @regular_expression.match(p).nil?
23
+ end
24
+ end
25
+
26
+ nil
27
+
28
+ end
29
+ end
30
+
31
+ end
32
+
33
+ =begin
34
+ i.match("-+[^-]+-")
35
+
36
+ =end
@@ -0,0 +1,28 @@
1
+ Action
2
+ Adventure
3
+ Animation
4
+ Biography
5
+ Comedy
6
+ Crime
7
+ Documentary
8
+ Drama
9
+ Family
10
+ Fantasy
11
+ Film-Noir
12
+ Game-Show
13
+ History
14
+ Horror
15
+ Music
16
+ Musical
17
+ Mystery
18
+ News
19
+ Reality-TV
20
+ Romance
21
+ Sci-Fi
22
+ Scifi
23
+ Sport
24
+ Suspense
25
+ Talk-Show
26
+ Thriller
27
+ War
28
+ Western
@@ -0,0 +1,26 @@
1
+ acción
2
+ aventura
3
+ animación
4
+ biografía
5
+ comedia
6
+ crimen
7
+ documental
8
+ drama
9
+ familia
10
+ fantasía
11
+ Cine negro
12
+ historia
13
+ horror
14
+ música
15
+ musical
16
+ misterio
17
+ noticias
18
+ reality
19
+ romance
20
+ ciencia ficción
21
+ scifi
22
+ deporte
23
+ suspenso
24
+ Talk-Show
25
+ guerra
26
+ western
@@ -10,6 +10,7 @@ module MovieShowTimes
10
10
  def initialize(language = 'en')
11
11
  @language = language
12
12
  @language_parser = MovieShowTimes::LanguageParser.new(language)
13
+ @genre_parser = MovieShowTimes::GenreParser.new(language)
13
14
  @theaters = Hash.new
14
15
  @movies = Hash.new
15
16
  end
@@ -49,16 +50,11 @@ module MovieShowTimes
49
50
 
50
51
  def parse_movie_info(info_line)
51
52
  duration = ChronicDuration.parse(info_line)
52
- genre = parse_genre(info_line)
53
+ genre = @genre_parser.parse(info_line)
53
54
  language = @language_parser.parse(info_line)
54
55
 
55
56
  { :duration => duration, :genre => genre, :language => language }
56
57
  end
57
-
58
- def parse_genre(info_line)
59
- matches = info_line.match(/(Drama|Scifi\/Fantasy|Documentary)/)
60
- return matches[0] unless matches.nil?
61
- nil
62
- end
58
+
63
59
  end
64
60
  end
@@ -1,3 +1,3 @@
1
1
  module MovieShowTimes
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -0,0 +1,38 @@
1
+ # encoding: UTF-8
2
+ require 'spec_helper'
3
+
4
+ describe MovieShowTimes::GenreParser do
5
+ context 'when initialized with language that does not have genre names file' do
6
+ it "it should return nil" do
7
+ @parser = MovieShowTimes::GenreParser.new('ur')
8
+ @parser.parse('1گھنٹہ 40م‏‏ - ہسپانوی').should be_nil
9
+ end
10
+ end
11
+
12
+
13
+ context 'parsing an info string' do
14
+ context 'in english' do
15
+ before :all do
16
+ @parser = MovieShowTimes::GenreParser.new('en')
17
+ end
18
+
19
+ it "detects genre name" do
20
+ @parser.parse('1hr 25min‎- Suspense - English').should match('Suspense')
21
+ end
22
+
23
+ it "detects genres names when there is more than one" do
24
+ @parser.parse('1hr 25min‎- Suspense/Thriller - English').should match('Suspense/Thriller')
25
+ end
26
+ end
27
+
28
+ context 'in spanish' do
29
+ before :all do
30
+ @parser = MovieShowTimes::GenreParser.new('es')
31
+ end
32
+
33
+ it "detects genres names" do
34
+ @parser.parse('1h 57min‎- Acción/Aventuras/Drama‎- inglés‎').should match('Acción/Aventuras/Drama')
35
+ end
36
+ end
37
+ end
38
+ end
@@ -87,14 +87,10 @@ describe MovieShowTimes do
87
87
  end
88
88
 
89
89
  it "provides movie info with genre" do
90
- pending
91
-
92
90
  movie = @movieShowTimes.movies['Mirror Mirror']
93
- movie[:info][:genre].should_not be_nil
94
91
  movie[:info][:genre].should match('Scifi/Fantasy')
95
92
 
96
93
  movie = @movieShowTimes.movies['American Reunion']
97
- movie[:info][:genre].should_not be_nil
98
94
  movie[:info][:genre].should match('Comedy/Romance')
99
95
  end
100
96
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: movie_show_times
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-20 00:00:00.000000000Z
12
+ date: 2012-04-21 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mechanize
16
- requirement: &2153566980 !ruby/object:Gem::Requirement
16
+ requirement: &2156941580 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2153566980
24
+ version_requirements: *2156941580
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: nokogiri
27
- requirement: &2153566560 !ruby/object:Gem::Requirement
27
+ requirement: &2156941160 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2153566560
35
+ version_requirements: *2156941160
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: chronic_duration
38
- requirement: &2153566140 !ruby/object:Gem::Requirement
38
+ requirement: &2156940740 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2153566140
46
+ version_requirements: *2156940740
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &2153565720 !ruby/object:Gem::Requirement
49
+ requirement: &2156940320 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2153565720
57
+ version_requirements: *2156940320
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &2153565300 !ruby/object:Gem::Requirement
60
+ requirement: &2156939900 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2153565300
68
+ version_requirements: *2156939900
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: fakeweb
71
- requirement: &2156927680 !ruby/object:Gem::Requirement
71
+ requirement: &2156939480 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2156927680
79
+ version_requirements: *2156939480
80
80
  description: Get Movie Show Times by Location
81
81
  email:
82
82
  - chrishein@gmail.com
@@ -91,6 +91,9 @@ files:
91
91
  - Rakefile
92
92
  - lib/movie_show_times.rb
93
93
  - lib/movie_show_times/crawler.rb
94
+ - lib/movie_show_times/genre_parser.rb
95
+ - lib/movie_show_times/genres/en.txt
96
+ - lib/movie_show_times/genres/es.txt
94
97
  - lib/movie_show_times/language_parser.rb
95
98
  - lib/movie_show_times/languages/de.txt
96
99
  - lib/movie_show_times/languages/en.txt
@@ -108,6 +111,7 @@ files:
108
111
  - spec/fixtures/movies_bsas_4.txt
109
112
  - spec/fixtures/movies_bsas_5.txt
110
113
  - spec/fixtures/movies_bsas_6.txt
114
+ - spec/genre_parser_spec.rb
111
115
  - spec/language_parser_spec.rb
112
116
  - spec/movie_show_times_spec.rb
113
117
  - spec/spec_helper.rb
@@ -143,6 +147,7 @@ test_files:
143
147
  - spec/fixtures/movies_bsas_4.txt
144
148
  - spec/fixtures/movies_bsas_5.txt
145
149
  - spec/fixtures/movies_bsas_6.txt
150
+ - spec/genre_parser_spec.rb
146
151
  - spec/language_parser_spec.rb
147
152
  - spec/movie_show_times_spec.rb
148
153
  - spec/spec_helper.rb