google_custom_search 0.3.0 → 0.3.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.
data/.gitignore CHANGED
@@ -1,5 +1,4 @@
1
- *.sw?
2
- .DS_Store
3
- coverage
4
- rdoc
5
- pkg
1
+ pkg/*
2
+ rdoc/*
3
+ *.gem
4
+ .bundle
data/CHANGELOG.rdoc CHANGED
@@ -1,8 +1,11 @@
1
1
  = Changelog
2
2
 
3
- Per-release changes to Handler.
3
+ Per-release changes to google_custom_search.
4
4
 
5
+ == 0.3.1 (2011 May 12)
5
6
 
6
- == 0.8.0 (2009 Oct 12)
7
+ *
7
8
 
8
- First release.
9
+ == 0.3.0 (2009 Oct 14)
10
+
11
+ * First release.
data/README.rdoc CHANGED
@@ -1,6 +1,10 @@
1
1
  = Google Custom Search
2
2
 
3
- Ruby API to Google Custom Search Engine (http://www.google.com/cse). Works with the paid version of CSE where you get results in XML format.
3
+ This project is a Ruby API to Google's Custom Search Engine (http://www.google.com/cse).
4
+
5
+ If you want a Google-like search engine for your web site, why not use Google? For $100/yr (more if you have over 1,000 pages) you can get access to Google search results for your site in XML format. The google_custom_search gem helps you access this web service and publish the results on your site however you like (all covered under Google's acceptable use policy).
6
+
7
+ <b>Google Custom Search is currently compatible with Rails 2.x and Rails 3.</b>
4
8
 
5
9
 
6
10
  == 1. Install
@@ -30,6 +34,13 @@ You *must* define a constant in your application called <tt>GOOGLE_SEARCH_CX</tt
30
34
 
31
35
  You can find the CX value for your custom search engine via the search control panel on Google's site (click the "Get code" link and you'll see a hidden "cx" field in the sample HTML form).
32
36
 
37
+ Optionally, you can set default Google search params, such as encoding, by setting up the <tt>GOOGLE_SEARCH_PARAMS</tt> hash in the same initializer:
38
+
39
+ GOOGLE_SEARCH_PARAMS = {
40
+ :ie => 'utf8',
41
+ :oe => 'utf8'
42
+ }
43
+
33
44
  If you're working outside of Rails you'll also need some +require+ statements:
34
45
 
35
46
  require 'rubygems'
@@ -45,21 +56,22 @@ To perform a search:
45
56
 
46
57
  The +results+ variable is now a GoogleCustomSearch::ResultSet object:
47
58
 
48
- results.total # 5080
49
- results.pages # array of GoogleCustomSearch::Result objects
50
- results.suggestion # string with suggested search term, if any
59
+ results.total # number of results (integer)
60
+ results.pages # array of result objects
61
+ results.suggestion # suggested search term, if any
51
62
 
52
63
  Iterate through the results:
53
64
 
54
- results.pages.each do |r|
55
- r.title # page title
56
- r.url # page URL
57
- r.description # Google's excerpt, with terms highlighted
65
+ results.pages.each do |result|
66
+ result.title # result title
67
+ result.url # result URL
68
+ result.description # excerpt, with terms highlighted
58
69
  end
59
70
 
60
71
 
61
72
  == Future
62
73
 
74
+ * prevent NameError when GOOGLE_SEARCH_CX is missing: show nice msg
63
75
  * access to all data returned by Google
64
76
  * support for features of CSE free version
65
77
  * support for multiple CSEs in one app (GOOGLE_SEARCH_CX should be a hash)
data/Rakefile CHANGED
@@ -1,21 +1,5 @@
1
- require 'rubygems'
2
- require 'rake'
3
-
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "google_custom_search"
8
- gem.summary = %Q{Ruby API to Google Custom Search Engine.}
9
- gem.description = %Q{Ruby API to Google Custom Search Engine. Works with the paid version of CSE where you get results in XML format.}
10
- gem.email = "alex@alexreisner.com"
11
- gem.homepage = "http://github.com/alexreisner/google_custom_search"
12
- gem.authors = ["Alex Reisner"]
13
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
14
- end
15
- Jeweler::GemcutterTasks.new
16
- rescue LoadError
17
- puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
18
- end
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
19
3
 
20
4
  require 'rake/testtask'
21
5
  Rake::TestTask.new(:test) do |test|
@@ -24,33 +8,12 @@ Rake::TestTask.new(:test) do |test|
24
8
  test.verbose = true
25
9
  end
26
10
 
27
- begin
28
- require 'rcov/rcovtask'
29
- Rcov::RcovTask.new do |test|
30
- test.libs << 'test'
31
- test.pattern = 'test/**/*_test.rb'
32
- test.verbose = true
33
- end
34
- rescue LoadError
35
- task :rcov do
36
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
37
- end
38
- end
39
-
40
- task :test => :check_dependencies
41
-
42
11
  task :default => :test
43
12
 
44
13
  require 'rake/rdoctask'
45
14
  Rake::RDocTask.new do |rdoc|
46
- if File.exist?('VERSION')
47
- version = File.read('VERSION')
48
- else
49
- version = ""
50
- end
51
-
52
15
  rdoc.rdoc_dir = 'rdoc'
53
- rdoc.title = "Google Custom Search #{version}"
54
- rdoc.rdoc_files.include('README*')
16
+ rdoc.title = "Google Custom Search #{GoogleCustomSearch::VERSION}"
17
+ rdoc.rdoc_files.include('*.rdoc')
55
18
  rdoc.rdoc_files.include('lib/**/*.rb')
56
19
  end
@@ -3,6 +3,7 @@
3
3
  # http://www.google.com/coop/docs/cse/resultsxml.html
4
4
  #
5
5
  module GoogleCustomSearch
6
+ extend self
6
7
 
7
8
  ##
8
9
  # Quick Struct-based class to hold a collection of search result data.
@@ -17,7 +18,7 @@ module GoogleCustomSearch
17
18
  ##
18
19
  # Search the site.
19
20
  #
20
- def self.search(query, offset = 0, length = 20)
21
+ def search(query, offset = 0, length = 20)
21
22
 
22
23
  # Get and parse results.
23
24
  url = url(query, offset, length)
@@ -42,7 +43,7 @@ module GoogleCustomSearch
42
43
  ##
43
44
  # Build search request URL.
44
45
  #
45
- def self.url(query, offset = 0, length = 20)
46
+ def url(query, offset = 0, length = 20)
46
47
  params = {
47
48
  :q => query,
48
49
  :start => offset,
@@ -51,13 +52,17 @@ module GoogleCustomSearch
51
52
  :output => "xml_no_dtd",
52
53
  :cx => GOOGLE_SEARCH_CX
53
54
  }
55
+ begin
56
+ params.merge!(GOOGLE_SEARCH_PARAMS)
57
+ rescue NameError
58
+ end
54
59
  "http://www.google.com/search?" + params.to_query
55
60
  end
56
61
 
57
62
  ##
58
63
  # Query Google, and make sure it responds.
59
64
  #
60
- def self.fetch_xml(url)
65
+ def fetch_xml(url)
61
66
  begin
62
67
  resp = nil
63
68
  timeout(3) do
@@ -71,14 +76,14 @@ module GoogleCustomSearch
71
76
  # Transform an array of Google search results (XML parsed by REXML) into
72
77
  # a more useful format.
73
78
  #
74
- def self.parse_results(results)
79
+ def parse_results(results)
75
80
  out = []
76
81
  results = [results] if results.is_a?(Hash) # no array if only one result
77
82
  results.each do |r|
78
83
  out << Result.new(
79
- r['U'], # url
80
- r['T'].sub(/ \[[^\]]*\]$/, ''), # title
81
- r['S'].gsub('<br>', '') # desciption
84
+ r['U'], # url
85
+ r['T'].try(:sub, / \[[^\]]*\]$/, ''), # title
86
+ r['S'].try(:gsub, '<br>', '') # desciption
82
87
  )
83
88
  end
84
89
  out
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_custom_search
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ prerelease:
5
+ version: 0.3.1
5
6
  platform: ruby
6
7
  authors:
7
8
  - Alex Reisner
@@ -9,19 +10,19 @@ autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
12
 
12
- date: 2009-10-14 00:00:00 -04:00
13
+ date: 2011-05-12 00:00:00 -04:00
13
14
  default_executable:
14
15
  dependencies: []
15
16
 
16
- description: Ruby API to Google Custom Search Engine. Works with the paid version of CSE where you get results in XML format.
17
- email: alex@alexreisner.com
17
+ description: Ruby interface to Google Custom Search Engine. Works with the paid version of CSE where you get results in XML format.
18
+ email:
19
+ - alex@alexreisner.com
18
20
  executables: []
19
21
 
20
22
  extensions: []
21
23
 
22
- extra_rdoc_files:
23
- - LICENSE
24
- - README.rdoc
24
+ extra_rdoc_files: []
25
+
25
26
  files:
26
27
  - .gitignore
27
28
  - CHANGELOG.rdoc
@@ -29,8 +30,6 @@ files:
29
30
  - README.rdoc
30
31
  - Rakefile
31
32
  - VERSION
32
- - google_custom_search.gemspec
33
- - init.rb
34
33
  - lib/google_custom_search.rb
35
34
  - test/google_custom_search_test.rb
36
35
  - test/test_helper.rb
@@ -39,29 +38,28 @@ homepage: http://github.com/alexreisner/google_custom_search
39
38
  licenses: []
40
39
 
41
40
  post_install_message:
42
- rdoc_options:
43
- - --charset=UTF-8
41
+ rdoc_options: []
42
+
44
43
  require_paths:
45
44
  - lib
46
45
  required_ruby_version: !ruby/object:Gem::Requirement
46
+ none: false
47
47
  requirements:
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
50
  version: "0"
51
- version:
52
51
  required_rubygems_version: !ruby/object:Gem::Requirement
52
+ none: false
53
53
  requirements:
54
54
  - - ">="
55
55
  - !ruby/object:Gem::Version
56
56
  version: "0"
57
- version:
58
57
  requirements: []
59
58
 
60
59
  rubyforge_project:
61
- rubygems_version: 1.3.5
60
+ rubygems_version: 1.6.1
62
61
  signing_key:
63
62
  specification_version: 3
64
- summary: Ruby API to Google Custom Search Engine.
65
- test_files:
66
- - test/google_custom_search_test.rb
67
- - test/test_helper.rb
63
+ summary: Ruby interface to Google Custom Search Engine.
64
+ test_files: []
65
+
@@ -1,51 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{google_custom_search}
8
- s.version = "0.3.0"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Alex Reisner"]
12
- s.date = %q{2009-10-14}
13
- s.description = %q{Ruby API to Google Custom Search Engine. Works with the paid version of CSE where you get results in XML format.}
14
- s.email = %q{alex@alexreisner.com}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.rdoc"
18
- ]
19
- s.files = [
20
- ".gitignore",
21
- "CHANGELOG.rdoc",
22
- "LICENSE",
23
- "README.rdoc",
24
- "Rakefile",
25
- "VERSION",
26
- "google_custom_search.gemspec",
27
- "init.rb",
28
- "lib/google_custom_search.rb",
29
- "test/google_custom_search_test.rb",
30
- "test/test_helper.rb"
31
- ]
32
- s.homepage = %q{http://github.com/alexreisner/google_custom_search}
33
- s.rdoc_options = ["--charset=UTF-8"]
34
- s.require_paths = ["lib"]
35
- s.rubygems_version = %q{1.3.5}
36
- s.summary = %q{Ruby API to Google Custom Search Engine.}
37
- s.test_files = [
38
- "test/google_custom_search_test.rb",
39
- "test/test_helper.rb"
40
- ]
41
-
42
- if s.respond_to? :specification_version then
43
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
44
- s.specification_version = 3
45
-
46
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
47
- else
48
- end
49
- else
50
- end
51
- end
data/init.rb DELETED
@@ -1 +0,0 @@
1
- require 'google_custom_search'