royw-imdb 0.1.2 → 0.1.3
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.
- data/Rakefile +8 -0
- data/VERSION.yml +1 -1
- data/lib/imdb.rb +4 -4
- data/spec/spec_helper.rb +2 -2
- metadata +23 -10
- data/lib/file_extensions.rb +0 -18
- data/lib/module_extensions.rb +0 -27
- data/lib/object_extensions.rb +0 -24
- data/lib/string_extensions.rb +0 -40
- data/spec/cache_extensions.rb +0 -53
data/Rakefile
CHANGED
@@ -40,6 +40,8 @@ begin
|
|
40
40
|
gem.files.reject! { |fn| File.basename(fn) =~ /^tt\d+\.html/}
|
41
41
|
|
42
42
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
43
|
+
gem.add_dependency('royw-roys_extensions','>= 0.0.2')
|
44
|
+
gem.add_dependency('royw-read_page_cache','>= 0.0.1')
|
43
45
|
end
|
44
46
|
rescue LoadError
|
45
47
|
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
@@ -59,3 +61,9 @@ Rake::RDocTask.new do |rdoc|
|
|
59
61
|
rdoc.rdoc_files.include('README*')
|
60
62
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
61
63
|
end
|
64
|
+
|
65
|
+
desc "stalk github until gem is published"
|
66
|
+
task :stalk do
|
67
|
+
`gemstalk royw imdb`
|
68
|
+
end
|
69
|
+
|
data/VERSION.yml
CHANGED
data/lib/imdb.rb
CHANGED
@@ -9,12 +9,12 @@ require 'hpricot'
|
|
9
9
|
require 'chronic'
|
10
10
|
require 'xmlsimple'
|
11
11
|
|
12
|
+
# royw gems on github
|
13
|
+
require 'roys_extensions'
|
14
|
+
|
15
|
+
# local files
|
12
16
|
require 'imdb/optional_logger'
|
13
17
|
require 'imdb/imdb_search'
|
14
18
|
require 'imdb/imdb_movie'
|
15
19
|
require 'imdb/imdb_profile'
|
16
20
|
require 'imdb/imdb_image'
|
17
|
-
require 'module_extensions'
|
18
|
-
require 'string_extensions'
|
19
|
-
require 'file_extensions'
|
20
|
-
require 'object_extensions'
|
data/spec/spec_helper.rb
CHANGED
@@ -5,8 +5,8 @@ require 'imdb'
|
|
5
5
|
|
6
6
|
$samples_dir = File.dirname(__FILE__) + '/samples'
|
7
7
|
|
8
|
-
require '
|
9
|
-
|
8
|
+
require 'read_page_cache'
|
9
|
+
ReadPageCache.attach_to_classes($samples_dir)
|
10
10
|
|
11
11
|
Spec::Runner.configure do |config|
|
12
12
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: royw-imdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roy Wright
|
@@ -9,10 +9,29 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-04-
|
12
|
+
date: 2009-04-21 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: royw-roys_extensions
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.2
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: royw-read_page_cache
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.0.1
|
34
|
+
version:
|
16
35
|
description:
|
17
36
|
email: roy@wright.org
|
18
37
|
executables: []
|
@@ -25,17 +44,12 @@ files:
|
|
25
44
|
- History.txt
|
26
45
|
- Rakefile
|
27
46
|
- VERSION.yml
|
28
|
-
- lib/file_extensions.rb
|
29
47
|
- lib/imdb.rb
|
30
48
|
- lib/imdb/imdb_image.rb
|
31
49
|
- lib/imdb/imdb_movie.rb
|
32
50
|
- lib/imdb/imdb_profile.rb
|
33
51
|
- lib/imdb/imdb_search.rb
|
34
52
|
- lib/imdb/optional_logger.rb
|
35
|
-
- lib/module_extensions.rb
|
36
|
-
- lib/object_extensions.rb
|
37
|
-
- lib/string_extensions.rb
|
38
|
-
- spec/cache_extensions.rb
|
39
53
|
- spec/imdb_image_spec.rb
|
40
54
|
- spec/imdb_movie_spec.rb
|
41
55
|
- spec/imdb_profile_spec.rb
|
@@ -89,7 +103,6 @@ specification_version: 2
|
|
89
103
|
summary: TODO
|
90
104
|
test_files:
|
91
105
|
- spec/imdb_movie_spec.rb
|
92
|
-
- spec/cache_extensions.rb
|
93
106
|
- spec/spec_helper.rb
|
94
107
|
- spec/imdb_search_spec.rb
|
95
108
|
- spec/imdb_image_spec.rb
|
data/lib/file_extensions.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
# == Synopsis
|
2
|
-
# add a mkdirs method to the File class
|
3
|
-
class File
|
4
|
-
class << self
|
5
|
-
my_extension("mkdirs") do
|
6
|
-
##
|
7
|
-
# make directories including any missing in the path
|
8
|
-
#
|
9
|
-
# @param [String] dirspec the path to make sure exists
|
10
|
-
def File.mkdirs(dirspec)
|
11
|
-
unless File.exists?(dirspec)
|
12
|
-
mkdirs(File.dirname(dirspec))
|
13
|
-
Dir.mkdir(dirspec)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/lib/module_extensions.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
######################################################################
|
2
|
-
# my extensions to Module. (taken from rake, named changed to not clash
|
3
|
-
# when rake is used for this rails project.
|
4
|
-
#
|
5
|
-
class Module
|
6
|
-
# Check for an existing method in the current class before extending. IF
|
7
|
-
# the method already exists, then a warning is printed and the extension is
|
8
|
-
# not added. Otherwise the block is yielded and any definitions in the
|
9
|
-
# block will take effect.
|
10
|
-
#
|
11
|
-
# Usage:
|
12
|
-
#
|
13
|
-
# class String
|
14
|
-
# rake_extension("xyz") do
|
15
|
-
# def xyz
|
16
|
-
# ...
|
17
|
-
# end
|
18
|
-
# end
|
19
|
-
# end
|
20
|
-
#
|
21
|
-
def my_extension(method)
|
22
|
-
unless instance_methods.include?(method.to_s) || instance_methods.include?(method.to_sym)
|
23
|
-
yield
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end # module Module
|
27
|
-
|
data/lib/object_extensions.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
# == Synopsis
|
2
|
-
# add a blank? method to all Objects
|
3
|
-
class Object
|
4
|
-
my_extension("blank?") do
|
5
|
-
# return asserted if object is nil or empty
|
6
|
-
def blank?
|
7
|
-
result = nil?
|
8
|
-
unless result
|
9
|
-
if respond_to? 'empty?'
|
10
|
-
if respond_to? 'strip'
|
11
|
-
result = strip.empty?
|
12
|
-
else
|
13
|
-
if respond_to? 'compact'
|
14
|
-
result = compact.empty?
|
15
|
-
else
|
16
|
-
result = empty?
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
result
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
data/lib/string_extensions.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
require 'cgi'
|
2
|
-
require 'iconv'
|
3
|
-
|
4
|
-
class String
|
5
|
-
my_extension("unescape_html") do
|
6
|
-
def unescape_html
|
7
|
-
Iconv.conv("UTF-8", 'ISO-8859-1', CGI::unescapeHTML(self))
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
# this handles unicode characters by converting each byte to "%XX"
|
12
|
-
# where XX is the hex value
|
13
|
-
my_extension("escape_unicode") do
|
14
|
-
def escape_unicode
|
15
|
-
self.each_byte.collect{|c| c.to_i > 127 ? "%#{c.to_i.to_s(16)}" : c.chr}.join('')
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
my_extension("strip_tags") do
|
20
|
-
def strip_tags
|
21
|
-
gsub(/<\/?[^>]*>/, "")
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
my_extension("ext") do
|
26
|
-
# Replace the file extension with +newext+. If there is no extenson on
|
27
|
-
# the string, append the new extension to the end. If the new extension
|
28
|
-
# is not given, or is the empty string, remove any existing extension.
|
29
|
-
#
|
30
|
-
# +ext+ is a user added method for the String class.
|
31
|
-
def ext(newext='')
|
32
|
-
return self.dup if ['.', '..'].include? self
|
33
|
-
if newext != ''
|
34
|
-
newext = (newext =~ /^\./) ? newext : ("." + newext)
|
35
|
-
end
|
36
|
-
dup.sub!(%r(([^/\\])\.[^./\\]*$)) { $1 + newext } || self + newext
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
data/spec/cache_extensions.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
|
2
|
-
# override the classes' read_page method and replace with one
|
3
|
-
# that will cache pages in spec/samples/{url}
|
4
|
-
|
5
|
-
module CacheExtensions
|
6
|
-
# == Synopsis
|
7
|
-
# Attach the read_page and cache_file methods to the given
|
8
|
-
# class (cls) and use the given directory for the cache files
|
9
|
-
def self.attach_to(cls, directory='/tmp')
|
10
|
-
|
11
|
-
# define the read_page(page) method on the given class: cls
|
12
|
-
cls.send('define_method', "read_page") do |page|
|
13
|
-
data = nil
|
14
|
-
filespec = page.gsub(/^http:\//, directory).gsub(/\/$/, '.html')
|
15
|
-
if File.exist?(filespec)
|
16
|
-
data = open(filespec).read
|
17
|
-
else
|
18
|
-
data = open(page).read
|
19
|
-
cache_file(page, data)
|
20
|
-
end
|
21
|
-
data
|
22
|
-
end
|
23
|
-
|
24
|
-
# define the cache_file(page, data) method on the given class: cls
|
25
|
-
cls.send('define_method', "cache_file") do |page, data|
|
26
|
-
begin
|
27
|
-
filespec = page.gsub(/^http:\//, directory).gsub(/\/$/, '.html')
|
28
|
-
unless File.exist?(filespec)
|
29
|
-
puts "caching #{filespec}"
|
30
|
-
File.mkdirs(File.dirname(filespec))
|
31
|
-
File.open(filespec, 'w') { |f| f.puts data }
|
32
|
-
end
|
33
|
-
rescue Exception => eMsg
|
34
|
-
puts eMsg.to_s
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
# == Synopsis
|
40
|
-
# Find all classes that have a read_page instance method and
|
41
|
-
# then overwrite that read_page method with one that handles
|
42
|
-
# the caching. Use the given directory for the cache files.
|
43
|
-
def self.attach_to_read_page_classes(directory='/tmp')
|
44
|
-
ObjectSpace.each_object(Class) do |cls|
|
45
|
-
if(cls.public_instance_methods(false).include?("read_page") ||
|
46
|
-
cls.protected_instance_methods(false).include?("read_page") ||
|
47
|
-
cls.private_instance_methods(false).include?("read_page"))
|
48
|
-
CacheExtensions.attach_to(cls, directory)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|