wikiquote 1.0.0 → 1.0.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.
- checksums.yaml +7 -0
- data/bin/wikiquote +4 -3
- data/lib/wikiquote.rb +44 -7
- data/test/test_wikiquote.rb +23 -3
- metadata +33 -54
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: af585ef4dbc7d521807461df6072cae5e5ae229c
|
4
|
+
data.tar.gz: d94da4ef08a5140ec74212a354b89f3a27d1e83a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9f06e97c0a5ce89562a9f337283c269bae1ca1cfeeac1d57be241bc041feb38716ca0914dbf1f03ebd23980b3212d2d6ba11ea5ef615111bd71b4832fb18112d
|
7
|
+
data.tar.gz: 26722faa410ecd39e136337ba1ff100c8310750ffbb7edc9bfc8e25d5248b71b956dde78e550e24935a5cc237ad0e6379b0474829c1e64ff6951cf4ac5b53b18
|
data/bin/wikiquote
CHANGED
data/lib/wikiquote.rb
CHANGED
@@ -1,19 +1,56 @@
|
|
1
|
-
|
1
|
+
#! /usr/bin/env ruby
|
2
2
|
require 'net/http'
|
3
3
|
require 'open-uri'
|
4
4
|
require 'nokogiri'
|
5
|
+
|
5
6
|
# The main wiki driver
|
6
|
-
|
7
|
-
#
|
7
|
+
module WikiQuote
|
8
|
+
# Every function should be a module_function
|
9
|
+
# so that users can run them.
|
10
|
+
extend self
|
11
|
+
|
12
|
+
# Get quote of the day from WikiQuote.
|
8
13
|
#
|
9
14
|
# Example:
|
10
15
|
# >> WikiQuote.get()
|
11
16
|
# => "Ruby rocks"
|
12
|
-
def
|
13
|
-
|
14
|
-
|
15
|
-
|
17
|
+
def quote_of_the_day
|
18
|
+
quote_url = "http://en.wikiquote.org/wiki/Main_Page"
|
19
|
+
|
20
|
+
# Hope this remains ;)
|
21
|
+
quote_selector = "td , #mw-content-text div div:nth-child(1)"
|
22
|
+
|
16
23
|
page = Nokogiri::HTML(open(quote_url).read)
|
17
24
|
page.css(quote_selector)[3].text
|
18
25
|
end
|
26
|
+
|
27
|
+
alias_method :get, :quote_of_the_day
|
28
|
+
alias_method :qotd, :quote_of_the_day
|
29
|
+
|
30
|
+
# Gets only the quote in the quote of the day.
|
31
|
+
#
|
32
|
+
# First, the start of the author portion of the quote of the day
|
33
|
+
# to the end of the string is removed from the future string.
|
34
|
+
# Then, the characters before any characters A-Z, a-z, or 0-9
|
35
|
+
# are removed from the start of the string, and whitespace is
|
36
|
+
# removed from the end of the string using regular expressions.
|
37
|
+
def quote
|
38
|
+
quote_of_the_day[0...second_to_last_index(quote_of_the_day, "~")].gsub(/(\A[^a-zA-z0-9]*|\s*\z)/, "")
|
39
|
+
end
|
40
|
+
|
41
|
+
# Gets the author of the quote of the day.
|
42
|
+
#
|
43
|
+
# Wikiquote contains this within tildes (~), which makes it easy to find.
|
44
|
+
# One just has to get the substring of the quote between the second to last tilde and the last tilde.
|
45
|
+
# This method gets that string (example "~ Isaac Asimov ~"),
|
46
|
+
# then removes the "~ " at the beginning of the string and
|
47
|
+
# " ~" at the end of the string, using regular expressions.
|
48
|
+
def author
|
49
|
+
quote_of_the_day[second_to_last_index(quote_of_the_day, "~")..quote_of_the_day.rindex("~")].gsub(/(\A~\s*|\s*~\z)/, "")
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
def second_to_last_index(string, search)
|
54
|
+
string.rindex(search, string.rindex(search) - 1)
|
55
|
+
end
|
19
56
|
end
|
data/test/test_wikiquote.rb
CHANGED
@@ -2,7 +2,27 @@ require 'test/unit'
|
|
2
2
|
require 'wikiquote'
|
3
3
|
|
4
4
|
class XKCDTest < Test::Unit::TestCase
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
def test_XKCD_get
|
6
|
+
assert WikiQuote.get
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_quote
|
10
|
+
# Assert that it has the correct format,
|
11
|
+
# which includes no newlines
|
12
|
+
refute WikiQuote.quote.include?("\n")
|
13
|
+
# and has a non-whitespace first character
|
14
|
+
refute WikiQuote.quote[0][/\s/]
|
15
|
+
# and last character.
|
16
|
+
refute WikiQuote.quote[-1][/\s/]
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_author
|
20
|
+
# Assert that it has the correct format,
|
21
|
+
# which includes no newlines
|
22
|
+
refute WikiQuote.author.include?("\n")
|
23
|
+
# and has a non-whitespace first character
|
24
|
+
refute WikiQuote.author[0][/\s/]
|
25
|
+
# and last character.
|
26
|
+
refute WikiQuote.author[-1][/\s/]
|
27
|
+
end
|
8
28
|
end
|
metadata
CHANGED
@@ -1,83 +1,62 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: wikiquote
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 0
|
9
|
-
- 0
|
10
|
-
version: 1.0.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Hemanth.HM
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2012-05-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
21
14
|
name: nokogiri
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
- - ">="
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 3
|
29
|
-
segments:
|
30
|
-
- 1
|
31
|
-
- 5
|
32
|
-
- 0
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
33
19
|
version: 1.5.0
|
34
20
|
type: :runtime
|
35
|
-
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.5.0
|
36
27
|
description: A simple gem to get Quote of the day from wikiquote.org
|
37
28
|
email: hemanth.hm@gmail.com
|
38
|
-
executables:
|
29
|
+
executables:
|
39
30
|
- wikiquote
|
40
31
|
extensions: []
|
41
|
-
|
42
32
|
extra_rdoc_files: []
|
43
|
-
|
44
|
-
files:
|
33
|
+
files:
|
45
34
|
- Rakefile
|
46
35
|
- lib/wikiquote.rb
|
47
36
|
- bin/wikiquote
|
48
37
|
- test/test_wikiquote.rb
|
49
38
|
homepage: http://rubygems.org/gems/xkcd
|
50
39
|
licenses: []
|
51
|
-
|
40
|
+
metadata: {}
|
52
41
|
post_install_message:
|
53
42
|
rdoc_options: []
|
54
|
-
|
55
|
-
require_paths:
|
43
|
+
require_paths:
|
56
44
|
- lib
|
57
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
none: false
|
68
|
-
requirements:
|
69
|
-
- - ">="
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
hash: 3
|
72
|
-
segments:
|
73
|
-
- 0
|
74
|
-
version: "0"
|
45
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
75
55
|
requirements: []
|
76
|
-
|
77
56
|
rubyforge_project:
|
78
|
-
rubygems_version:
|
57
|
+
rubygems_version: 2.0.0
|
79
58
|
signing_key:
|
80
59
|
specification_version: 3
|
81
60
|
summary: Quote of the day from wikiquote.org
|
82
|
-
test_files:
|
61
|
+
test_files:
|
83
62
|
- test/test_wikiquote.rb
|