rcv_bible 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/rcv_bible.rb +123 -0
  3. metadata +131 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 211bf92011ea1b9666723fe007f4a3116bcb7f3b
4
+ data.tar.gz: e6adfc95f5ed91498959cc6eea1ff6d2753063fd
5
+ SHA512:
6
+ metadata.gz: 192cd8897905ae9b21c2cb19157594259eb1a990966367f09e07d5a7e2247dbc67ee16a49c6a2df6f3987c80080133db66433d55593519d17482936739be7d6e
7
+ data.tar.gz: b5a24d51874bfea1f1fdd110c9e0e9005e75e67d0009977bf75449ba7a92ee9a942654e15899a1d04e4dfe32327354246c97bc80577b478b1980e10c87d279cb
data/lib/rcv_bible.rb ADDED
@@ -0,0 +1,123 @@
1
+ require "acts_as_scriptural"
2
+ require "httparty"
3
+
4
+ class RcvBible
5
+
6
+ VERSION = "0.0.1"
7
+
8
+ class RcvBible::Reference
9
+
10
+ def initialize(reference)
11
+ @reference = reference
12
+ @parsed_request = RcvBible::OneChapterBookConverter.adjust_reference(reference)
13
+ @response = HTTParty.get("https://api.lsm.org/recver.php?String=#{@parsed_request}").to_h
14
+ @message = @response["request"]["message"]
15
+ end
16
+
17
+ def self.text_of(reference)
18
+ self.new(reference).text_of
19
+ end
20
+
21
+ def reference_chapter
22
+
23
+ end
24
+
25
+ def message
26
+ @response["request"]["message"]
27
+ end
28
+
29
+ def short_chapter_verses_array
30
+ @short_chapter_verses_array ||= @response["request"]["verses"]["verse"]
31
+ end
32
+
33
+ def completed_response?
34
+ @message == "\t"
35
+ end
36
+
37
+ def invalid_reference?
38
+ @message["Bad Reference"]
39
+ end
40
+
41
+ def chapter_verse_count
42
+ @message.sub(/.*?requested /, '').split.first.to_i
43
+ end
44
+
45
+ def text_of
46
+ if completed_response?
47
+ return { @reference => short_chapter_verses_array }
48
+ elsif invalid_reference?
49
+ return { @reference => @message["Bad Reference"] }
50
+ else
51
+ long_chapter_verses_array = []
52
+ RcvBible::ChapterRangeMaker.new(chapter_verse_count).verse_ranges.each do |vr|
53
+ verses_chunk = HTTParty.get(
54
+ "https://api.lsm.org/recver.php?String=#{@reference}: #{vr.first}-#{vr.last}").
55
+ to_h["request"]["verses"]["verse"]
56
+ long_chapter_verses_array << verses_chunk
57
+ end
58
+ return { @reference => long_chapter_verses_array.flatten }
59
+ end
60
+ end
61
+ end
62
+
63
+ class ChapterRangeMaker
64
+
65
+ VERSELIMIT = 30
66
+
67
+ def initialize(num_verses)
68
+ @num_verses = num_verses
69
+ end
70
+
71
+ def verse_ranges
72
+ result = []
73
+ 1.step(@num_verses,VERSELIMIT) do |i|
74
+ result << [i, last_verse_in_range(i)]
75
+ end
76
+ result
77
+ end
78
+
79
+ def last_verse_in_range(first_verse_in_range)
80
+ last_verse_number = first_verse_in_range + VERSELIMIT - 1
81
+ if last_verse_number > @num_verses
82
+ @num_verses
83
+ else
84
+ last_verse_number
85
+ end
86
+ end
87
+ end
88
+
89
+ class RcvBible::OneChapterBookConverter
90
+ OCB_REFERENCES = { "obadiah" => "Oba 1-21",
91
+ "obadiah 1" => "Oba 1-21",
92
+ "obadiah 1:1-21" => "Oba 1-21",
93
+ "philemon" => "Philem 1-25",
94
+ "philemon 1" => "Philem 1-25",
95
+ "philemon 1:1-25" => "Philem 1-25",
96
+ "2 john" => '2 John 1-13',
97
+ "2 john 1" => '2 John 1-13',
98
+ "2 john 1:1-13" => '2 John 1-13',
99
+ "3 john" => '3 John 1-13',
100
+ "3 john 1" => '3 John 1-13',
101
+ "3 john 1:1-13" => '3 John 1-13',
102
+ "jude" => "Jude 1-24",
103
+ "jude 1" => "Jude 1-24",
104
+ "jude 1:1-24" => "Jude 1-24"
105
+ }
106
+
107
+ def self.adjust_reference(reference)
108
+ self.new(reference).adjust_reference
109
+ end
110
+
111
+ def initialize(reference)
112
+ @reference = reference
113
+ end
114
+
115
+ def adjust_reference
116
+ if OCB_REFERENCES[@reference.downcase]
117
+ OCB_REFERENCES[@reference.downcase]
118
+ else
119
+ @reference
120
+ end
121
+ end
122
+ end
123
+ end
metadata ADDED
@@ -0,0 +1,131 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rcv_bible
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Evan Koch
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-02-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: acts_as_scriptural
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.0.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.0.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: httparty
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.13.7
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.13.7
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.11'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.11'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: Gateway to API--returns text from the Recovery Version of the New Testament,
98
+ accessed from the Holy Bible Recovery Version (text-only edition) Copyright 2012
99
+ Living Stream Ministry.
100
+ email:
101
+ - evankoch@gmail.com
102
+ executables: []
103
+ extensions: []
104
+ extra_rdoc_files: []
105
+ files:
106
+ - lib/rcv_bible.rb
107
+ homepage: https://github.com/evo21/rcv_bible
108
+ licenses:
109
+ - MIT
110
+ metadata: {}
111
+ post_install_message:
112
+ rdoc_options: []
113
+ require_paths:
114
+ - lib
115
+ required_ruby_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ requirements: []
126
+ rubyforge_project:
127
+ rubygems_version: 2.4.5
128
+ signing_key:
129
+ specification_version: 4
130
+ summary: Build text from the Recovery Version from verse/chapter/book submissions.
131
+ test_files: []