votd 1.0.1 → 1.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.
- data/.yardopts +3 -2
- data/CHANGELOG.md +11 -1
- data/Guardfile +5 -3
- data/README.md +6 -2
- data/TODO.md +6 -2
- data/bin/votd +4 -1
- data/lib/votd/bible_gateway.rb +67 -0
- data/lib/votd/netbible.rb +23 -19
- data/lib/votd/version.rb +1 -1
- data/lib/votd.rb +3 -5
- data/spec/fixtures/bible_gateway.html +5 -0
- data/spec/fixtures/bible_gateway.rss +32 -0
- data/spec/lib/votd/bible_gateway_spec.rb +29 -0
- data/spec/spec_helper.rb +8 -2
- data/votd.gemspec +2 -1
- metadata +28 -5
- /data/spec/{netbible_spec.rb → lib/votd/netbible_spec.rb} +0 -0
- /data/spec/{votd_spec.rb → lib/votd_spec.rb} +0 -0
data/.yardopts
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
* March 25, 2012 1.1.0 release
|
4
|
+
* Add support for [Bible Gateway](www.biblegateway.com)
|
5
|
+
* only supporting the default NIV translation for now, but
|
6
|
+
planning to implement other translations
|
7
|
+
* Update votd command line tool to load from Bible Gateway
|
8
|
+
* Move more code toward compatibility with Ruby 1.8
|
9
|
+
|
10
|
+
* March 25, 2012 1.0.1 release
|
11
|
+
* Updated documentation links
|
12
|
+
|
3
13
|
* March 24, 2012 1.0.0 release
|
4
|
-
* Initial release with support for Bible.org's NETBible
|
14
|
+
* Initial release with support for Bible.org's [NETBible](http://labs.bible.org/)
|
5
15
|
* YARD documentation added
|
data/Guardfile
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
guard 'rspec', version: 2, cli: "--color --format documentation" do
|
2
2
|
watch(%r{^spec/.+_spec\.rb$})
|
3
|
-
watch(%r{^lib/(.+)\.rb$}) { |m|
|
3
|
+
watch(%r{^lib/(.+)\.rb$}) { |m|
|
4
|
+
puts "running spec/lib/#{m[1]}_spec.rb"
|
5
|
+
"spec/lib/#{m[1]}_spec.rb"
|
6
|
+
}
|
4
7
|
watch('spec/spec_helper.rb') { "spec" }
|
5
|
-
end
|
6
|
-
|
8
|
+
end
|
data/README.md
CHANGED
@@ -3,13 +3,15 @@
|
|
3
3
|
VotD (Verse of the Day) is a Ruby Gem that wraps various web services that generate
|
4
4
|
daily Bible Verses.
|
5
5
|
|
6
|
-
Currently the gem supports
|
6
|
+
Currently the gem supports two VotD web services:
|
7
7
|
|
8
8
|
* [Bible.org](http://labs.bible.org) - NETBible Translation
|
9
|
+
* [Bible Gateway](http://www.biblegateway.com) - NIV Translations (Currently only supporting the default NIV, but planning on adding more.)
|
9
10
|
|
10
11
|
Other services are are planned:
|
11
12
|
|
12
|
-
* [Bible Gateway](http://www.biblegateway.com) -
|
13
|
+
* [Bible Gateway](http://www.biblegateway.com) - More Translations
|
14
|
+
|
13
15
|
* [ESV Bible Web Service](http://www.esvapi.org/) - ESV Translation
|
14
16
|
|
15
17
|
If you are able to contribute modules for any of these, please see our [CONTRIBUTING](http://rubydoc.info/gems/votd/file/CONTRIBUTING.md) file. Let us know before you begin work in case someone else has a module in-progress.
|
@@ -36,6 +38,8 @@ To use VotD in our code:
|
|
36
38
|
|
37
39
|
votd = Votd.NetBible.new
|
38
40
|
|
41
|
+
# or votd = Votd.BibleGateway.new
|
42
|
+
|
39
43
|
votd.reference # Ephesians 2:8-9
|
40
44
|
votd.text # For by grace you are saved through faith...
|
41
45
|
votd.date # 2012-03-24
|
data/TODO.md
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
## Todo
|
2
2
|
|
3
|
-
* Generate an appropriate VOTD from a static file if there's any error communicating with the VOTD API. (
|
3
|
+
* Generate an appropriate VOTD from a static file if there's any error communicating with the VOTD API. (e.g. John 3:16)
|
4
4
|
|
5
|
-
* Update `votd` command-line version
|
5
|
+
* Update `votd` command-line version. Currently only a bare stub of an app.
|
6
6
|
|
7
7
|
* Integrate [ESV API](http://www.esvapi.org/api)
|
8
8
|
|
9
|
+
* Enable support for more translations from [Bible Gateway](http://www.biblegateway.com/usage/votd/docs/)
|
10
|
+
|
9
11
|
* Ensure Ruby < 1.9 compatibility.
|
12
|
+
|
13
|
+
* Clean up architecture to use one base class for all modules
|
data/bin/votd
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
# allow this to run from development environment
|
4
|
+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
5
|
+
|
3
6
|
require 'votd'
|
4
7
|
|
5
|
-
votd = Votd::
|
8
|
+
votd = Votd::BibleGateway.new
|
6
9
|
|
7
10
|
puts "===================================================="
|
8
11
|
puts " VERSE OF THE DAY for #{votd.date.to_s}"
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'feedzirra'
|
2
|
+
module Votd
|
3
|
+
# Retrieves a Verse of the Day from biblegateway.com using a variety
|
4
|
+
# of translations.
|
5
|
+
#
|
6
|
+
# docs: http://www.biblegateway.com/usage/votd/docs/
|
7
|
+
#
|
8
|
+
# version list: http://www.biblegateway.com/usage/linking/versionslist.php
|
9
|
+
#
|
10
|
+
# @todo Extend this to allow requesting any of the supported Bible translations that
|
11
|
+
# Bible Gateway supports for VotD
|
12
|
+
#
|
13
|
+
class BibleGateway
|
14
|
+
# The name of the Bible Translation that this module generates
|
15
|
+
BIBLE_VERSION = "NIV"
|
16
|
+
|
17
|
+
# The URI of the API gateway
|
18
|
+
URI = "http://www.biblegateway.com/usage/votd/rss/votd.rdf?"
|
19
|
+
|
20
|
+
# Initializes the BibleGateway class
|
21
|
+
def initialize
|
22
|
+
@reference = ""
|
23
|
+
@text = ""
|
24
|
+
get_verse
|
25
|
+
end
|
26
|
+
|
27
|
+
# @macro votd.date
|
28
|
+
def date
|
29
|
+
Date.today
|
30
|
+
end
|
31
|
+
|
32
|
+
# @macro votd.reference
|
33
|
+
def reference
|
34
|
+
@reference
|
35
|
+
end
|
36
|
+
|
37
|
+
# @macro votd.text
|
38
|
+
def text
|
39
|
+
@text
|
40
|
+
end
|
41
|
+
|
42
|
+
# @macro votd.version
|
43
|
+
def version
|
44
|
+
BIBLE_VERSION
|
45
|
+
end
|
46
|
+
|
47
|
+
# @macro votd.to_html
|
48
|
+
def to_html
|
49
|
+
html = "<p class=\"votd-text\">#{self.text}</p>\n"
|
50
|
+
html << "<p>\n"
|
51
|
+
html << "<span class=\"votd-reference\"><strong>#{self.reference}</strong></span>\n"
|
52
|
+
html << "<span class=\"votd-version\"><em>(#{self.version})</em></span>\n"
|
53
|
+
html << "</p>\n"
|
54
|
+
html
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
# Gets the votd from the Bible Gateway RSS feed
|
59
|
+
def get_verse
|
60
|
+
feed = Feedzirra::Feed.parse(HTTParty.get(URI).body)
|
61
|
+
entry = feed.entries.first
|
62
|
+
@reference = entry.title
|
63
|
+
@text = entry.content.strip
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
data/lib/votd/netbible.rb
CHANGED
@@ -5,47 +5,51 @@ module Votd
|
|
5
5
|
# The name of the Bible Translation that this module generates
|
6
6
|
BIBLE_VERSION = "NETBible"
|
7
7
|
|
8
|
+
# The URI of the API gateway
|
9
|
+
URI = "http://labs.bible.org/api/?passage=votd&type=json"
|
10
|
+
|
8
11
|
# Initializes the NetBible class
|
9
12
|
def initialize
|
10
|
-
@reference = ""
|
11
|
-
@text = ""
|
13
|
+
@reference, @text = ""
|
12
14
|
get_verse
|
13
15
|
end
|
14
16
|
|
15
|
-
#
|
16
|
-
#
|
17
|
+
# @macro [new] votd.reference
|
18
|
+
# @example
|
19
|
+
# votd.reference # "Ephesians 2:8-9"
|
17
20
|
#
|
18
|
-
# @return [String]
|
21
|
+
# @return [String] the scripture reference.
|
19
22
|
def reference
|
20
23
|
@reference
|
21
24
|
end
|
22
25
|
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
+
# @macro [new] votd.text
|
27
|
+
# @example
|
28
|
+
# votd.text # "For by grace you are saved through faith..."
|
29
|
+
# @return [String] the full bible passage
|
26
30
|
def text
|
27
31
|
@text
|
28
32
|
end
|
29
33
|
|
30
|
-
#
|
31
|
-
#
|
34
|
+
# @macro [new] votd.date
|
35
|
+
# @example
|
36
|
+
# votd.date # "2012-03-24"
|
32
37
|
#
|
33
|
-
# @return [String]
|
38
|
+
# @return [String] the date the Verse was retrieved
|
34
39
|
def date
|
35
40
|
Date.today
|
36
41
|
end
|
37
42
|
|
38
|
-
#
|
39
|
-
#
|
40
|
-
#
|
41
|
-
#
|
42
|
-
# @return [String]
|
43
|
+
# For this module this will always be:
|
44
|
+
# "NETBible"
|
45
|
+
# @macro [new] votd.version
|
46
|
+
# @return [String] the bible translation used for this VotD
|
43
47
|
def version
|
44
48
|
BIBLE_VERSION
|
45
49
|
end
|
46
50
|
|
47
|
-
#
|
48
|
-
# e.g.
|
51
|
+
# @macro [new] votd.to_html
|
52
|
+
# Returns the Verse of the Day formatted as HTML. e.g.
|
49
53
|
# <p class="votd-text">For by grace you are saved through faith...</p>
|
50
54
|
# <p>
|
51
55
|
# <span class="votd-reference"><strong>Ephesians 2:8-9</strong></span>
|
@@ -68,7 +72,7 @@ module Votd
|
|
68
72
|
private
|
69
73
|
# Gets the verse in JSON format from bible.org
|
70
74
|
def get_verse
|
71
|
-
netbible_data = JSON.parse(HTTParty.get(
|
75
|
+
netbible_data = JSON.parse(HTTParty.get(URI))
|
72
76
|
|
73
77
|
# use bookname from first verse -- assume votd won't span books
|
74
78
|
bookname = netbible_data[0]["bookname"]
|
data/lib/votd/version.rb
CHANGED
data/lib/votd.rb
CHANGED
@@ -1,14 +1,12 @@
|
|
1
|
-
require "votd/
|
1
|
+
require "votd/bible_gateway"
|
2
2
|
require "votd/netbible"
|
3
|
+
require "votd/version"
|
3
4
|
require "time"
|
4
5
|
require "json"
|
5
6
|
require "httparty"
|
6
7
|
|
7
8
|
# This class acts as the entry point to all sub-modules that are used
|
8
|
-
# to interact with various Verse of the Day
|
9
|
-
#
|
10
|
-
# Currently there is only NetBible (bible.org), but more can be accomodated
|
11
|
-
# by following the established pattern.
|
9
|
+
# to interact with various Verse of the Day web services.
|
12
10
|
module Votd
|
13
11
|
include HTTParty
|
14
12
|
end
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<p class="votd-text">“If we confess our sins, he is faithful and just and will forgive us our sins and purify us from all unrighteousness.”<br/><br/> Brought to you by <a href="http://www.biblegateway.com">BibleGateway.com</a>. Copyright (C) . All Rights Reserved.</p>
|
2
|
+
<p>
|
3
|
+
<span class="votd-reference"><strong>1 John 1:9</strong></span>
|
4
|
+
<span class="votd-version"><em>(NIV)</em></span>
|
5
|
+
</p>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<?xml version="1.0" ?>
|
2
|
+
<rss version="2.0"
|
3
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
4
|
+
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
|
5
|
+
xmlns:admin="http://webns.net/mvcb/"
|
6
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
7
|
+
xmlns:content="http://purl.org/rss/1.0/modules/content/">
|
8
|
+
|
9
|
+
<channel>
|
10
|
+
<title>Bible Gateway's Verse of the Day</title>
|
11
|
+
<link>http://www.biblegateway.com</link>
|
12
|
+
<description>A daily word of exultation.</description>
|
13
|
+
<dc:language>en-us</dc:language>
|
14
|
+
<dc:creator>BibleGateway.com</dc:creator>
|
15
|
+
<dc:rights>Copyright 2004</dc:rights>
|
16
|
+
<dc:date>2012-03-25T12:00:00Z</dc:date>
|
17
|
+
<sy:updatePeriod>daily</sy:updatePeriod>
|
18
|
+
<sy:updateFrequency>1</sy:updateFrequency>
|
19
|
+
<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>
|
20
|
+
|
21
|
+
<item>
|
22
|
+
<title>1 John 1:9</title>
|
23
|
+
<description>Verse of the day</description>
|
24
|
+
<guid isPermaLink="false">http://www.biblegateway.com/passage/?search=1+John+1%3A9&version=NIV</guid>
|
25
|
+
<content:encoded>
|
26
|
+
<![CDATA[“If we confess our sins, he is faithful and just and will forgive us our sins and purify us from all unrighteousness.”<br/><br/> Brought to you by <a href="http://www.biblegateway.com">BibleGateway.com</a>. Copyright (C) . All Rights Reserved.]]>
|
27
|
+
</content:encoded>
|
28
|
+
<dc:rights>Powered by BibleGateway.com</dc:rights>
|
29
|
+
<dc:date>2012-03-25T12:00:00Z</dc:date>
|
30
|
+
</item>
|
31
|
+
</channel>
|
32
|
+
</rss>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Votd::BibleGateway" do
|
4
|
+
let(:votd) { Votd::BibleGateway.new }
|
5
|
+
|
6
|
+
it "is a type of BibleGateway" do
|
7
|
+
votd.should be_a(Votd::BibleGateway)
|
8
|
+
end
|
9
|
+
|
10
|
+
it "has a .date" do
|
11
|
+
votd.date.should == Date.today
|
12
|
+
end
|
13
|
+
|
14
|
+
it "has a .reference" do
|
15
|
+
votd.reference.should == "1 John 1:9"
|
16
|
+
end
|
17
|
+
|
18
|
+
it "has a .text" do
|
19
|
+
votd.text.should == "“If we confess our sins, he is faithful and just and will forgive us our sins and purify us from all unrighteousness.”<br/><br/> Brought to you by <a href=\"http://www.biblegateway.com\">BibleGateway.com</a>. Copyright (C) . All Rights Reserved."
|
20
|
+
end
|
21
|
+
|
22
|
+
it "has a .version" do
|
23
|
+
votd.version.should == "NIV"
|
24
|
+
end
|
25
|
+
|
26
|
+
it "returns a HTML version" do
|
27
|
+
votd.to_html.should == File.read(fixture("bible_gateway.html"))
|
28
|
+
end
|
29
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -11,6 +11,12 @@ RSpec.configure do |config|
|
|
11
11
|
File.join(File.dirname(__FILE__), 'fixtures', filename)
|
12
12
|
end
|
13
13
|
|
14
|
-
|
15
|
-
|
14
|
+
# Register Bible Gateway URI
|
15
|
+
FakeWeb.register_uri(:get, Votd::BibleGateway::URI,
|
16
|
+
:body => open(fixture("bible_gateway.rss")))
|
17
|
+
|
18
|
+
# Register NETBible URI
|
19
|
+
FakeWeb.register_uri(:get, Votd::NetBible::URI,
|
20
|
+
:body => open(fixture("netbible.json")))
|
21
|
+
|
16
22
|
end
|
data/votd.gemspec
CHANGED
@@ -18,7 +18,8 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.required_ruby_version = ">= 1.9.1"
|
19
19
|
|
20
20
|
gem.add_runtime_dependency "httparty"
|
21
|
-
|
21
|
+
gem.add_runtime_dependency "json" if RUBY_VERSION < "1.9"
|
22
|
+
gem.add_runtime_dependency "feedzirra"
|
22
23
|
gem.add_development_dependency "rake"
|
23
24
|
gem.add_development_dependency "fakeweb"
|
24
25
|
gem.add_development_dependency "rspec"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: votd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -28,6 +28,22 @@ dependencies:
|
|
28
28
|
- - ! '>='
|
29
29
|
- !ruby/object:Gem::Version
|
30
30
|
version: '0'
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: feedzirra
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
type: :runtime
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
31
47
|
- !ruby/object:Gem::Dependency
|
32
48
|
name: rake
|
33
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -146,13 +162,17 @@ files:
|
|
146
162
|
- TODO.md
|
147
163
|
- bin/votd
|
148
164
|
- lib/votd.rb
|
165
|
+
- lib/votd/bible_gateway.rb
|
149
166
|
- lib/votd/netbible.rb
|
150
167
|
- lib/votd/version.rb
|
168
|
+
- spec/fixtures/bible_gateway.html
|
169
|
+
- spec/fixtures/bible_gateway.rss
|
151
170
|
- spec/fixtures/netbible.html
|
152
171
|
- spec/fixtures/netbible.json
|
153
|
-
- spec/
|
172
|
+
- spec/lib/votd/bible_gateway_spec.rb
|
173
|
+
- spec/lib/votd/netbible_spec.rb
|
174
|
+
- spec/lib/votd_spec.rb
|
154
175
|
- spec/spec_helper.rb
|
155
|
-
- spec/votd_spec.rb
|
156
176
|
- votd.gemspec
|
157
177
|
homepage: https://github.com/doctorbh/votd
|
158
178
|
licenses:
|
@@ -180,9 +200,12 @@ signing_key:
|
|
180
200
|
specification_version: 3
|
181
201
|
summary: Generate a (Bible) Verse of the Day using various web service wrappers
|
182
202
|
test_files:
|
203
|
+
- spec/fixtures/bible_gateway.html
|
204
|
+
- spec/fixtures/bible_gateway.rss
|
183
205
|
- spec/fixtures/netbible.html
|
184
206
|
- spec/fixtures/netbible.json
|
185
|
-
- spec/
|
207
|
+
- spec/lib/votd/bible_gateway_spec.rb
|
208
|
+
- spec/lib/votd/netbible_spec.rb
|
209
|
+
- spec/lib/votd_spec.rb
|
186
210
|
- spec/spec_helper.rb
|
187
|
-
- spec/votd_spec.rb
|
188
211
|
has_rdoc:
|
File without changes
|
File without changes
|