votd 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,16 @@
1
+ language: ruby
2
+ rvm:
3
+ # - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
6
+ # - jruby-18mode # JRuby in 1.8 mode
7
+ # - jruby-19mode # JRuby in 1.9 mode
8
+ # - rbx-18mode
9
+ # - rbx-19mode
10
+ notifications:
11
+ email:
12
+ recipients:
13
+ - beakr@ninjanizr.com
14
+ - doctorbh@ninjanizr.com
15
+ on_success: always
16
+ on_failure: always
data/.yardopts CHANGED
@@ -1,4 +1,5 @@
1
1
  --title "VotD - (Bible) Verse of the Day"
2
+ --protected
2
3
  lib/**/*
3
4
  -
4
5
  CONTRIBUTING.md
data/CHANGELOG.md CHANGED
@@ -1,11 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ * March 26, 2012 1.2.0 release
4
+ * Refactored shared code from BibleGateway and NetBible into a Base class
5
+ and inherited from this. This makes the code base easier to manage and
6
+ extend. See the [CONTRIBUTING](https://github.com/doctorbh/votd/blob/master/CONTRIBUTING.md) page for more info on how to make use of the Base class.
7
+ * Updated docs
8
+
3
9
  * March 25, 2012 1.1.0 release
4
- * Add support for [Bible Gateway](www.biblegateway.com)
10
+ * Added support for [Bible Gateway](www.biblegateway.com)
5
11
  * only supporting the default NIV translation for now, but
6
12
  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
13
+ * Updated votd command line tool to load from Bible Gateway
14
+ * Moved more code toward compatibility with Ruby 1.8
9
15
 
10
16
  * March 25, 2012 1.0.1 release
11
17
  * Updated documentation links
data/CONTRIBUTING.md CHANGED
@@ -9,8 +9,23 @@ GitHub. This will hand over a copy of the code to you so that you can
9
9
  really do whatever you want.
10
10
 
11
11
  To create a plugin, you must find an API and wrap it in a module
12
- located in `lib/votd`. Once this is complete, you can start by
13
- creating a new file in `spec` to test your plugin before your pull
12
+ located in `lib/votd`.
13
+
14
+ * Your class must inherit from {Votd::Base} and
15
+ needs to override the {Votd::Base#get_votd} method.
16
+
17
+ * Your class must supply the `BIBLE_VERSION` constant, or set `@version` inside the class somewhere.
18
+
19
+ * Your initializer must consist of at least the following:
20
+
21
+ ```ruby
22
+ # Initializes the MyBible class
23
+ def initialize
24
+ super
25
+ end
26
+ ```
27
+
28
+ Creating a new file in `spec` to test your plugin before your pull
14
29
  request. VotD uses the testing framework [Rspec](http://rspec.info/)
15
30
  to manage testing, so use the Rspec syntax enhancements rather than
16
31
  another framework.
data/README.md CHANGED
@@ -1,8 +1,11 @@
1
1
  # VotD - (Bible) Verse of the Day
2
2
 
3
+ [![Build Status](https://secure.travis-ci.org/doctorbh/votd.png?branch=master)](http://travis-ci.org/doctorbh/votd)
4
+
3
5
  VotD (Verse of the Day) is a Ruby Gem that wraps various web services that generate
4
6
  daily Bible Verses.
5
7
 
8
+
6
9
  Currently the gem supports two VotD web services:
7
10
 
8
11
  * [Bible.org](http://labs.bible.org) - NETBible Translation
@@ -14,7 +17,7 @@ Other services are are planned:
14
17
 
15
18
  * [ESV Bible Web Service](http://www.esvapi.org/) - ESV Translation
16
19
 
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.
20
+ If you are able to contribute modules for any of these, please see our [CONTRIBUTING](https://github.com/doctorbh/votd/blob/master/CONTRIBUTING.md) file. Let us know before you begin work in case someone else has a module in-progress.
18
21
 
19
22
  ## Installation
20
23
 
@@ -32,7 +35,7 @@ Or install it yourself as:
32
35
 
33
36
  ## Usage
34
37
 
35
- To use VotD in our code:
38
+ To use VotD in your code:
36
39
 
37
40
  require 'votd'
38
41
 
@@ -80,15 +83,15 @@ To submit bug, feature requests, patches see our [Issues List](https://github.co
80
83
  5. Push to the branch (`git push origin my-new-feature`)
81
84
  6. Create new Pull Request
82
85
 
83
- See more on [CONTRIBUTING](http://rubydoc.info/gems/votd/file/CONTRIBUTING.md).
86
+ See more on [CONTRIBUTING](https://github.com/doctorbh/votd/blob/master/CONTRIBUTING.md).
84
87
 
85
88
  ## Changelog
86
89
 
87
- See our [CHANGELOG](http://rubydoc.info/gems/votd/file/CHANGELOG.md) file.
90
+ See our [CHANGELOG](https://github.com/doctorbh/votd/blob/master/CHANGELOG.md) file.
88
91
 
89
92
  ## TODO
90
93
 
91
- See our [TODO](http://rubydoc.info/gems/votd/file/TODO.md) file.
94
+ See our [TODO](https://github.com/doctorbh/votd/blob/master/TODO.md) file.
92
95
 
93
96
  ## Authors
94
97
 
@@ -100,4 +103,4 @@ Stephen Clarke <doctorbh@ninjanizr.com>
100
103
 
101
104
  (The MIT License)
102
105
 
103
- &copy; 2012 Christopher Clarke, Stephen Clarke. See [LICENSE](http://rubydoc.info/gems/votd/1.0.0/file/LICENSE) for details.
106
+ &copy; 2012 Christopher Clarke, Stephen Clarke. See [LICENSE](https://github.com/doctorbh/votd/blob/master/LICENSE) for details.
data/TODO.md CHANGED
@@ -8,6 +8,6 @@
8
8
 
9
9
  * Enable support for more translations from [Bible Gateway](http://www.biblegateway.com/usage/votd/docs/)
10
10
 
11
- * Ensure Ruby < 1.9 compatibility.
11
+ * Ensure Ruby 1.8.7 compatibility.
12
12
 
13
- * Clean up architecture to use one base class for all modules
13
+ * Add some kind of simple caching
data/lib/votd/base.rb ADDED
@@ -0,0 +1,72 @@
1
+ module Votd
2
+ # This is the base class that all Votd lookup modules inherit from.
3
+ # It provides default values for the Votd in the event of lookup failure.
4
+ # Child classes should override the {#get_votd} method to implement their
5
+ # specific lookup function.
6
+ class Base
7
+ # @example
8
+ # votd.text # "For by grace you are saved through faith..."
9
+ # @return [String] the full bible passage
10
+ attr_reader :text
11
+
12
+ # @example
13
+ # votd.reference # "Ephesians 2:8-9"
14
+ #
15
+ # @return [String] the scripture reference.
16
+ attr_reader :reference
17
+
18
+ # @example
19
+ # votd.date # "2012-03-24"
20
+ #
21
+ # @return [String] the date the Verse was retrieved
22
+ attr_reader :date
23
+
24
+ # @example
25
+ # votd.version # "NIV"
26
+ # @return [String] the bible translation used for this VotD
27
+ attr_reader :version
28
+
29
+ # The default Bible version to use if none is given and no other default
30
+ # is provided
31
+ DEFAULT_BIBLE_VERSION = "KJV"
32
+
33
+ # Initializes the class and retrieves the verse of the day.
34
+ def initialize
35
+ @text = ""
36
+ @reference = ""
37
+ @date = Date.today
38
+ get_votd
39
+ end
40
+
41
+ # Returns the Verse of the Day formatted as HTML. e.g.
42
+ # <p class="votd-text">For by grace you are saved through faith...</p>
43
+ # <p>
44
+ # <span class="votd-reference"><strong>Ephesians 2:8-9</strong></span>
45
+ # <span class="votd-version"><em>(NETBible)</em></span>
46
+ # </p>
47
+ #
48
+ # This should provide sufficient hooks to style the CSS. If this is not
49
+ # sufficient, you can build the HTML by hand using the individual data.
50
+ #
51
+ # @return [String] the VotD formatted as HTML
52
+ def to_html
53
+ html = "<p class=\"votd-text\">#{@text}</p>\n"
54
+ html << "<p>\n"
55
+ html << "<span class=\"votd-reference\"><strong>#{@reference}</strong></span>\n"
56
+ html << "<span class=\"votd-version\"><em>(#{@version})</em></span>\n"
57
+ html << "</p>\n"
58
+ html
59
+ end
60
+
61
+ protected
62
+ # Gets the VotD. For {Votd::Base} this will return default values and can be
63
+ # used in the event of an exception thrown when getting data from live web
64
+ # services in subclasses of {Votd::Base}
65
+ def get_votd
66
+ @text = "For God so loved the world, that he gave his only begotten Son, that whosoever believeth in him should not perish, but have everlasting life."
67
+ @reference = "John 3:16"
68
+ @version = DEFAULT_BIBLE_VERSION
69
+ end
70
+
71
+ end
72
+ end
@@ -10,7 +10,7 @@ module Votd
10
10
  # @todo Extend this to allow requesting any of the supported Bible translations that
11
11
  # Bible Gateway supports for VotD
12
12
  #
13
- class BibleGateway
13
+ class BibleGateway < Votd::Base
14
14
  # The name of the Bible Translation that this module generates
15
15
  BIBLE_VERSION = "NIV"
16
16
 
@@ -19,49 +19,18 @@ module Votd
19
19
 
20
20
  # Initializes the BibleGateway class
21
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
22
+ super
55
23
  end
56
24
 
57
25
  private
26
+ # @todo Generate default VotD from Votd::Base if there's a problem getting feed
58
27
  # 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
28
+ def get_votd
29
+ feed = Feedzirra::Feed.parse(HTTParty.get(URI).body)
30
+ entry = feed.entries.first
62
31
  @reference = entry.title
63
32
  @text = entry.content.strip
33
+ @version = BIBLE_VERSION
64
34
  end
65
-
66
35
  end
67
36
  end
data/lib/votd/netbible.rb CHANGED
@@ -1,7 +1,9 @@
1
1
  module Votd
2
- # Retrieves a Verse of the Day from bible.org using the NETBible
2
+ # @todo Clean up generated verse when it has trailing punctuation
3
+ # and/or begins with lower-case. Substitute "..."
4
+ # Retrieves a Verse of the Day from http://bible.org using the NETBible
3
5
  # translation.
4
- class NetBible
6
+ class NetBible < Votd::Base
5
7
  # The name of the Bible Translation that this module generates
6
8
  BIBLE_VERSION = "NETBible"
7
9
 
@@ -10,68 +12,13 @@ module Votd
10
12
 
11
13
  # Initializes the NetBible class
12
14
  def initialize
13
- @reference, @text = ""
14
- get_verse
15
- end
16
-
17
- # @macro [new] votd.reference
18
- # @example
19
- # votd.reference # "Ephesians 2:8-9"
20
- #
21
- # @return [String] the scripture reference.
22
- def reference
23
- @reference
24
- end
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
30
- def text
31
- @text
32
- end
33
-
34
- # @macro [new] votd.date
35
- # @example
36
- # votd.date # "2012-03-24"
37
- #
38
- # @return [String] the date the Verse was retrieved
39
- def date
40
- Date.today
41
- end
42
-
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
47
- def version
48
- BIBLE_VERSION
49
- end
50
-
51
- # @macro [new] votd.to_html
52
- # Returns the Verse of the Day formatted as HTML. e.g.
53
- # <p class="votd-text">For by grace you are saved through faith...</p>
54
- # <p>
55
- # <span class="votd-reference"><strong>Ephesians 2:8-9</strong></span>
56
- # <span class="votd-version"><em>(NETBible)</em></span>
57
- # </p>
58
- #
59
- # This should provide sufficient hooks to style the CSS. If this is not
60
- # sufficient, you can build the HTML by hand using the individual data.
61
- #
62
- # @return [String] the VotD formatted as HTML
63
- def to_html
64
- html = "<p class=\"votd-text\">#{self.text}</p>\n"
65
- html << "<p>\n"
66
- html << "<span class=\"votd-reference\"><strong>#{self.reference}</strong></span>\n"
67
- html << "<span class=\"votd-version\"><em>(#{self.version})</em></span>\n"
68
- html << "</p>\n"
69
- html
15
+ super
70
16
  end
71
17
 
72
18
  private
19
+ # @todo Generate default VotD from Votd::Base if there's a problem getting feed
73
20
  # Gets the verse in JSON format from bible.org
74
- def get_verse
21
+ def get_votd
75
22
  netbible_data = JSON.parse(HTTParty.get(URI))
76
23
 
77
24
  # use bookname from first verse -- assume votd won't span books
@@ -93,6 +40,8 @@ module Votd
93
40
 
94
41
  # build the text
95
42
  @text = verses.join(" ")
43
+
44
+ @version = BIBLE_VERSION
96
45
  end
97
46
  end
98
47
  end
data/lib/votd/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Votd
2
2
  # Gem version number
3
- VERSION = "1.1.0"
3
+ VERSION = "1.2.0"
4
4
  end
data/lib/votd.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require "votd/base"
1
2
  require "votd/bible_gateway"
2
3
  require "votd/netbible"
3
4
  require "votd/version"
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Votd::Base" do
4
+ let(:votd) { Votd::Base.new }
5
+
6
+ describe ".text" do
7
+ it "returns the default scripture verse" do
8
+ votd.text.should == "For God so loved the world, that he gave his only begotten Son, that whosoever believeth in him should not perish, but have everlasting life."
9
+ end
10
+ end
11
+
12
+ describe ".reference" do
13
+ it "returns the default scripture reference" do
14
+ votd.reference.should == "John 3:16"
15
+ end
16
+ end
17
+
18
+ describe ".version" do
19
+ it "returns the default bible version" do
20
+ votd.version.should == "KJV"
21
+ end
22
+ end
23
+
24
+ describe ".date" do
25
+ it "returns the default date" do
26
+ votd.date.should == Date.today
27
+ end
28
+ end
29
+ end
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.1.0
4
+ version: 1.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-03-25 00:00:00.000000000 Z
13
+ date: 2012-03-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: httparty
@@ -151,6 +151,7 @@ extra_rdoc_files: []
151
151
  files:
152
152
  - .gitignore
153
153
  - .rspec
154
+ - .travis.yml
154
155
  - .yardopts
155
156
  - CHANGELOG.md
156
157
  - CONTRIBUTING.md
@@ -162,6 +163,7 @@ files:
162
163
  - TODO.md
163
164
  - bin/votd
164
165
  - lib/votd.rb
166
+ - lib/votd/base.rb
165
167
  - lib/votd/bible_gateway.rb
166
168
  - lib/votd/netbible.rb
167
169
  - lib/votd/version.rb
@@ -169,6 +171,7 @@ files:
169
171
  - spec/fixtures/bible_gateway.rss
170
172
  - spec/fixtures/netbible.html
171
173
  - spec/fixtures/netbible.json
174
+ - spec/lib/votd/base_spec.rb
172
175
  - spec/lib/votd/bible_gateway_spec.rb
173
176
  - spec/lib/votd/netbible_spec.rb
174
177
  - spec/lib/votd_spec.rb
@@ -204,6 +207,7 @@ test_files:
204
207
  - spec/fixtures/bible_gateway.rss
205
208
  - spec/fixtures/netbible.html
206
209
  - spec/fixtures/netbible.json
210
+ - spec/lib/votd/base_spec.rb
207
211
  - spec/lib/votd/bible_gateway_spec.rb
208
212
  - spec/lib/votd/netbible_spec.rb
209
213
  - spec/lib/votd_spec.rb