votd 2.1.2 → 2.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/.travis.yml +0 -1
- data/CHANGELOG.md +12 -2
- data/bin/votd +3 -2
- data/lib/votd/base.rb +2 -28
- data/lib/votd/bible_gateway.rb +5 -4
- data/lib/votd/helper/command_line.rb +38 -0
- data/lib/votd/helper/helper.rb +6 -0
- data/lib/votd/helper/text.rb +38 -0
- data/lib/votd/netbible.rb +4 -1
- data/lib/votd/version.rb +1 -1
- data/lib/votd.rb +1 -1
- data/spec/lib/votd/{helper_spec.rb → helper/command_line_spec.rb} +4 -4
- data/spec/lib/votd/helper/helper_spec.rb +3 -0
- data/spec/lib/votd/helper/text_spec.rb +32 -0
- metadata +11 -5
- data/lib/votd/helper.rb +0 -36
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,9 +1,19 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
3
|
|
4
|
-
|
4
|
+
2.1.3
|
5
5
|
-----------------
|
6
6
|
|
7
|
+
*April 5, 2012*
|
8
|
+
|
9
|
+
* Reorganized Helper modules (used internally only)
|
10
|
+
* Minor bug fixes
|
11
|
+
|
12
|
+
2.1.2
|
13
|
+
-----------------
|
14
|
+
|
15
|
+
*April 4, 2012*
|
16
|
+
|
7
17
|
* Added custom exception type `Votd::VotdError`
|
8
18
|
* Added `Votd::Helper` module to provide common helper methods to all modules
|
9
19
|
* Cleaned up command-line version to wrap text properly
|
@@ -16,7 +26,7 @@ Current Iteration
|
|
16
26
|
2.1.1
|
17
27
|
-----
|
18
28
|
|
19
|
-
*March 31,
|
29
|
+
*March 31, 2012*
|
20
30
|
|
21
31
|
* VotD will now return a default scripture of John 3:16 in KJV if there's
|
22
32
|
any error enountered when accessing the VotD from the source server.
|
data/bin/votd
CHANGED
@@ -4,8 +4,9 @@
|
|
4
4
|
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
5
5
|
|
6
6
|
require 'votd'
|
7
|
+
require 'votd/helper/command_line'
|
7
8
|
|
8
|
-
include Votd::Helper
|
9
|
+
include Votd::Helper::CommandLine
|
9
10
|
|
10
11
|
votd = Votd::BibleGateway.new
|
11
12
|
#votd = Votd::NetBible.new
|
@@ -20,4 +21,4 @@ puts word_wrap(votd.to_text, LINE_WIDTH)
|
|
20
21
|
if votd.copyright
|
21
22
|
puts "\n"
|
22
23
|
puts banner(LINE_WIDTH) { word_wrap(votd.copyright, LINE_WIDTH) }
|
23
|
-
end
|
24
|
+
end
|
data/lib/votd/base.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'votd/helper/text'
|
2
|
+
|
1
3
|
module Votd
|
2
4
|
# This is the base class that all Votd lookup modules inherit from.
|
3
5
|
# It provides default values for the Votd in the event of lookup failure.
|
@@ -146,33 +148,5 @@ module Votd
|
|
146
148
|
@copyright = nil
|
147
149
|
end
|
148
150
|
|
149
|
-
# Removes HTML tags from the given text
|
150
|
-
# @param [String] text the text you want to strip HTML tags from
|
151
|
-
# @return [String]
|
152
|
-
def strip_html_tags(text)
|
153
|
-
text.gsub(/<\/?[^>]*>/, '')
|
154
|
-
end
|
155
|
-
|
156
|
-
# Prepends '...' if first letter is not a capital letter
|
157
|
-
# @param [String] the text to process
|
158
|
-
# @return [String]
|
159
|
-
def clean_verse_start(text)
|
160
|
-
text.sub(/^([a-z])/, '...\1')
|
161
|
-
end
|
162
|
-
|
163
|
-
# Appends '...' if verse ends abruptly
|
164
|
-
# @param [String] the text to process
|
165
|
-
# @return [String]
|
166
|
-
def clean_verse_end(text)
|
167
|
-
case text
|
168
|
-
when /[a-zA=Z]$/ # no ending "."
|
169
|
-
text << '...'
|
170
|
-
when /[,;]$/
|
171
|
-
text.sub!(/,$/, '...') # ends with "," or ";"
|
172
|
-
else
|
173
|
-
text
|
174
|
-
end
|
175
|
-
text
|
176
|
-
end
|
177
151
|
end
|
178
152
|
end
|
data/lib/votd/bible_gateway.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'feedzirra'
|
2
|
+
require 'votd/helper/text'
|
2
3
|
|
3
4
|
module Votd
|
4
5
|
# Retrieves a Verse of the Day from biblegateway.com using a variety
|
@@ -53,18 +54,18 @@ module Votd
|
|
53
54
|
# @return [String]
|
54
55
|
def clean_text(text)
|
55
56
|
text = strip_html_quote_entities(text)
|
56
|
-
text = strip_html_tags(text)
|
57
|
+
text = Helper::Text.strip_html_tags(text)
|
57
58
|
text = strip_copyright_text(text)
|
58
59
|
text.strip!
|
59
|
-
text = clean_verse_start(text)
|
60
|
-
text = clean_verse_end(text)
|
60
|
+
text = Helper::Text.clean_verse_start(text)
|
61
|
+
text = Helper::Text.clean_verse_end(text)
|
61
62
|
end
|
62
63
|
|
63
64
|
# Extracts copyright tag from the Bible text
|
64
65
|
# @return [String]
|
65
66
|
def get_copyright(text)
|
66
67
|
text = strip_html_quote_entities(text)
|
67
|
-
text = strip_html_tags(text)
|
68
|
+
text = Helper::Text.strip_html_tags(text)
|
68
69
|
text.match(@regex_copyright_text)[1]
|
69
70
|
end
|
70
71
|
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Votd
|
2
|
+
module Helper
|
3
|
+
# This module contains helper methods that support the
|
4
|
+
# command-line application
|
5
|
+
module CommandLine
|
6
|
+
extend self
|
7
|
+
# Generates a text banner suitable for displaying from a command-line
|
8
|
+
# utility, for example. Use with a block.
|
9
|
+
# @example
|
10
|
+
# banner(20) { "My Banner" }
|
11
|
+
#
|
12
|
+
# ->
|
13
|
+
# ====================
|
14
|
+
# My Banner
|
15
|
+
# ====================
|
16
|
+
# @param [Integer] line_width number of columns for width
|
17
|
+
# @return [String] the banner text
|
18
|
+
def banner(line_width=40)
|
19
|
+
banner_text = "=" * line_width
|
20
|
+
banner_text << "\n"
|
21
|
+
banner_text << yield.center(line_width)
|
22
|
+
banner_text << "\n"
|
23
|
+
banner_text << "=" * line_width
|
24
|
+
banner_text
|
25
|
+
end
|
26
|
+
|
27
|
+
# Word-wraps text to the specified column width.
|
28
|
+
# @param [String] text the text to be wrapped
|
29
|
+
# @param [Integer] line_width column width
|
30
|
+
# @return [String] wrapped text
|
31
|
+
def word_wrap(text, line_width=40)
|
32
|
+
text.split("\n").collect do |line|
|
33
|
+
line.length > line_width ? line.gsub(/(.{1,#{line_width}})(\s+|$)/, "\\1\n").strip : line
|
34
|
+
end * "\n"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Votd
|
2
|
+
module Helper
|
3
|
+
# This module contains helper methods that support the
|
4
|
+
# VotD text parsing.
|
5
|
+
module Text
|
6
|
+
extend self
|
7
|
+
# Removes HTML tags from the given text
|
8
|
+
# @param [String] text the text you want to strip HTML tags from
|
9
|
+
# @return [String]
|
10
|
+
def strip_html_tags(text)
|
11
|
+
text.gsub(/<\/?[^>]*>/, '')
|
12
|
+
end
|
13
|
+
|
14
|
+
# Prepends '...' if first letter is not a capital letter
|
15
|
+
# @param [String] the text to process
|
16
|
+
# @return [String]
|
17
|
+
def clean_verse_start(text)
|
18
|
+
text.sub(/^([a-z])/, '...\1')
|
19
|
+
end
|
20
|
+
|
21
|
+
# Appends '...' if verse ends abruptly
|
22
|
+
# @param [String] the text to process
|
23
|
+
# @return [String]
|
24
|
+
def clean_verse_end(text)
|
25
|
+
case text
|
26
|
+
when /[a-zA-Z]$/ # no ending "."
|
27
|
+
text << '...'
|
28
|
+
when /[,;]$/
|
29
|
+
text.sub!(/[,;]$/, '...') # ends with "," or ";"
|
30
|
+
else
|
31
|
+
text
|
32
|
+
end
|
33
|
+
text
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/votd/netbible.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'votd/helper/text'
|
2
|
+
|
1
3
|
module Votd
|
2
4
|
# Retrieves a Verse of the Day from http://bible.org using the NETBible
|
3
5
|
# translation.
|
@@ -37,7 +39,8 @@ module Votd
|
|
37
39
|
@reference = "#{bookname} #{chapter}:#{verse_numbers.join("-")}"
|
38
40
|
|
39
41
|
# build the text
|
40
|
-
text = strip_html_tags(verses.join(" "))
|
42
|
+
#text = strip_html_tags(verses.join(" "))
|
43
|
+
text = Helper::Text.strip_html_tags(verses.join(" "))
|
41
44
|
text = clean_verse_start(text)
|
42
45
|
text = clean_verse_end(text)
|
43
46
|
|
data/lib/votd/version.rb
CHANGED
data/lib/votd.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'votd/helper/command_line'
|
2
3
|
|
3
|
-
include Votd::Helper
|
4
|
+
include Votd::Helper::CommandLine
|
4
5
|
|
5
|
-
describe Votd::Helper do
|
6
|
+
describe Votd::Helper::CommandLine do
|
6
7
|
describe "#banner" do
|
7
8
|
it "prints a banner wrapped at the correct location" do
|
8
9
|
banner(6){ "foo" }.should == "======\n foo \n======"
|
@@ -14,6 +15,5 @@ describe Votd::Helper do
|
|
14
15
|
text = "The quick brown fox jumps over the lazy dog."
|
15
16
|
word_wrap(text, 20).should == "The quick brown fox\njumps over the lazy\ndog."
|
16
17
|
end
|
17
|
-
|
18
18
|
end
|
19
|
-
end
|
19
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
include Votd::Helper::Text
|
4
|
+
|
5
|
+
describe Votd::Helper::Text do
|
6
|
+
describe ".strip_html_tags" do
|
7
|
+
it "removes HTML tags from a given string" do
|
8
|
+
text = %q[<p>The <span name="foo">quick</span> brown fox.</p><br />]
|
9
|
+
strip_html_tags(text).should == "The quick brown fox."
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe ".clean_verse_start" do
|
14
|
+
it "prepends '...' if the first letter is not a capital letter" do
|
15
|
+
text = "for God so loved"
|
16
|
+
clean_verse_start(text).should == "...for God so loved"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe ".clean_verse_end" do
|
21
|
+
it "appends '...' if the verse ends without a period" do
|
22
|
+
text = "For God so loved"
|
23
|
+
clean_verse_end(text).should == "For God so loved..."
|
24
|
+
end
|
25
|
+
|
26
|
+
it "appends '...' if the verse ends in a ',' or ';'" do
|
27
|
+
["loved,", "loved;"].each do |text|
|
28
|
+
clean_verse_end(text).should == "loved..."
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
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: 2.1.
|
4
|
+
version: 2.1.3
|
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-04-
|
13
|
+
date: 2012-04-06 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: httparty
|
@@ -181,7 +181,9 @@ files:
|
|
181
181
|
- lib/votd.rb
|
182
182
|
- lib/votd/base.rb
|
183
183
|
- lib/votd/bible_gateway.rb
|
184
|
-
- lib/votd/helper.rb
|
184
|
+
- lib/votd/helper/command_line.rb
|
185
|
+
- lib/votd/helper/helper.rb
|
186
|
+
- lib/votd/helper/text.rb
|
185
187
|
- lib/votd/netbible.rb
|
186
188
|
- lib/votd/version.rb
|
187
189
|
- lib/votd/votd_error.rb
|
@@ -204,7 +206,9 @@ files:
|
|
204
206
|
- spec/fixtures/netbible/netbible_with_partial.json
|
205
207
|
- spec/lib/votd/base_spec.rb
|
206
208
|
- spec/lib/votd/bible_gateway_spec.rb
|
207
|
-
- spec/lib/votd/
|
209
|
+
- spec/lib/votd/helper/command_line_spec.rb
|
210
|
+
- spec/lib/votd/helper/helper_spec.rb
|
211
|
+
- spec/lib/votd/helper/text_spec.rb
|
208
212
|
- spec/lib/votd/netbible_spec.rb
|
209
213
|
- spec/lib/votd/version_spec.rb
|
210
214
|
- spec/lib/votd/votd_error_spec.rb
|
@@ -256,7 +260,9 @@ test_files:
|
|
256
260
|
- spec/fixtures/netbible/netbible_with_partial.json
|
257
261
|
- spec/lib/votd/base_spec.rb
|
258
262
|
- spec/lib/votd/bible_gateway_spec.rb
|
259
|
-
- spec/lib/votd/
|
263
|
+
- spec/lib/votd/helper/command_line_spec.rb
|
264
|
+
- spec/lib/votd/helper/helper_spec.rb
|
265
|
+
- spec/lib/votd/helper/text_spec.rb
|
260
266
|
- spec/lib/votd/netbible_spec.rb
|
261
267
|
- spec/lib/votd/version_spec.rb
|
262
268
|
- spec/lib/votd/votd_error_spec.rb
|
data/lib/votd/helper.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
module Votd
|
2
|
-
# This module provides various helper methods used throughout the
|
3
|
-
# codebase.
|
4
|
-
module Helper
|
5
|
-
# Generates a text banner suitable for displaying from a command-line
|
6
|
-
# utility, for example. Use with a block.
|
7
|
-
# @example
|
8
|
-
# banner(20) { "My Banner" }
|
9
|
-
#
|
10
|
-
# ->
|
11
|
-
# ====================
|
12
|
-
# My Banner
|
13
|
-
# ====================
|
14
|
-
# @param [Integer] line_width number of columns for width
|
15
|
-
# @return [String] the banner text
|
16
|
-
def banner(line_width=40)
|
17
|
-
banner_text = "=" * line_width
|
18
|
-
banner_text << "\n"
|
19
|
-
banner_text << yield.center(line_width)
|
20
|
-
banner_text << "\n"
|
21
|
-
banner_text << "=" * line_width
|
22
|
-
banner_text
|
23
|
-
end
|
24
|
-
|
25
|
-
# Word-wraps text to the specified column width.
|
26
|
-
# @param [String] text the text to be wrapped
|
27
|
-
# @param [Integer] line_width column width
|
28
|
-
# @return [String] wrapped text
|
29
|
-
def word_wrap(text, line_width=40)
|
30
|
-
text.split("\n").collect do |line|
|
31
|
-
line.length > line_width ? line.gsub(/(.{1,#{line_width}})(\s+|$)/, "\\1\n").strip : line
|
32
|
-
end * "\n"
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
end
|