bibletools 0.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: b39f3947e9bf8e827ce070ad544f2f03a5b28e43554588ec99e6511aaf7c7109
4
+ data.tar.gz: 6d88f41a49b461adc25993c65e2abbeffc6616b9d727bab0bcc93c3570bcc824
5
+ SHA512:
6
+ metadata.gz: '09532d8e8b4d88ae66ffdcb7f62aec4c7887cb9b87497deb5b04206f6b3c5cbcbcffa618e2ded85a683a57f43907e8f5e30dcb0d62885481fc0a95540240cad6'
7
+ data.tar.gz: ec3bc05ded3b431231eaea8f2e00cde75a4da60bc8cc4fbb6fda1cd3d8312fabd1d50aa7e096742f7beb05b36e306b853b4cd92d446a9bb060333ce544614645
checksums.yaml.gz.sig ADDED
Binary file
data/lib/bibletools.rb ADDED
@@ -0,0 +1,209 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: bibletools.rb
4
+
5
+ require 'rexle'
6
+ require 'yawc'
7
+ require 'nokorexi'
8
+
9
+
10
+ module BibleTools
11
+
12
+ class ScraperErr < Exception
13
+ end
14
+
15
+ class Scraper
16
+
17
+ def initialize(book: 'Exodus', url: '')
18
+
19
+ raise ScraperErr, 'Please specify the URL' if url.empty?
20
+
21
+ baseurl = url
22
+
23
+ books = ["Genesis",
24
+ "Exodus",
25
+ "Leviticus",
26
+ "Numbers",
27
+ "Deuteronomy",
28
+ "Joshua",
29
+ "Judges",
30
+ "Ruth",
31
+ "1 Samuel",
32
+ "2 Samuel",
33
+ "1 Kings",
34
+ "2 Kings",
35
+ "1 Chronicles",
36
+ "2 Chronicles",
37
+ "Ezra",
38
+ "Nehemiah",
39
+ "Tobit",
40
+ "Judith",
41
+ "Esther",
42
+ "1 Maccabees",
43
+ "2 Maccabees",
44
+ "Job",
45
+ "Psalms",
46
+ "The Proverbs",
47
+ "Ecclesiastes",
48
+ "The Song of Songs",
49
+ "Wisdom",
50
+ "Ecclesiasticus / Sirach",
51
+ "Isaiah",
52
+ "Jeremiah",
53
+ "Lamentations",
54
+ "Baruch",
55
+ "Ezekiel",
56
+ "Daniel",
57
+ "Hosea",
58
+ "Joel",
59
+ "Amos",
60
+ "Obadiah",
61
+ "Jonah",
62
+ "Micah",
63
+ "Nahum",
64
+ "Habakkuk",
65
+ "Zephaniah",
66
+ "Haggai",
67
+ "Zechariah",
68
+ "Malachi",
69
+ "Matthew",
70
+ "Mark",
71
+ "Luke",
72
+ "John",
73
+ "Acts of Apostles",
74
+ "Romans",
75
+ "1 Corinthians",
76
+ "2 Corinthians",
77
+ "Galatians",
78
+ "Ephesians",
79
+ "Philippians",
80
+ "Colossians",
81
+ "1 Thessalonians",
82
+ "2 Thessalonians",
83
+ "1 Timothy",
84
+ "2 Timothy",
85
+ "Titus",
86
+ "Philemon",
87
+ "Hebrews",
88
+ "James",
89
+ "1 Peter",
90
+ "2 Peter",
91
+ "1 John",
92
+ "2 John",
93
+ "3 John",
94
+ "Jude",
95
+ "Revelation"]
96
+
97
+ id = if book.is_a? String then
98
+ (books.index(book) + 1).to_s
99
+ else
100
+ book.to_s
101
+ end
102
+
103
+
104
+
105
+ url2 = baseurl + '?id=' + id
106
+ doc = Nokorexi.new(url2).to_doc
107
+ e = doc.root.at_css('.pagination')
108
+ endchapter = e.xpath('li')[-2].text('a')
109
+
110
+
111
+ book = Rexle.new('<book/>')
112
+
113
+ (1..endchapter.to_i).each do |chp|
114
+
115
+ c = chp.to_s
116
+ puts 'reading chapter ' + c
117
+
118
+ sleep 1
119
+ url2 = baseurl + ("?id=%s&bible_chapter=%s" % [id, c])
120
+ doc = Nokorexi.new(url2).to_doc
121
+ a = doc.root.xpath('//div/p')
122
+ a2 = a.select {|e| e2 = e.element('a'); e2.attributes[:name] if e2}
123
+
124
+ chapter = Rexle::Element.new('chapter', attributes: {no: c})
125
+
126
+ a2.each.with_index do |e, i|
127
+
128
+ puts 'processing verse ' + i.to_s
129
+ txt = e.plaintext
130
+ n = txt.slice!(0,2).to_i.to_s
131
+ chapter.add Rexle::Element.new('verse', attributes: {no: n}).add_text(txt)
132
+
133
+ end
134
+
135
+ book.root.add chapter
136
+
137
+ end
138
+
139
+ @doc = book
140
+
141
+ end
142
+
143
+ def to_doc
144
+ @doc
145
+ end
146
+
147
+ end
148
+
149
+ class Analyse
150
+
151
+ def initialize(bible_obj, debug: false)
152
+
153
+ @debug = debug
154
+
155
+ if bible_obj then
156
+ @doc = bible_obj.to_doc
157
+ @verses = @doc.root.xpath('chapter/verse')
158
+ end
159
+
160
+ end
161
+
162
+ def wordtally()
163
+
164
+ return unless @doc
165
+ Yawc.new(@doc.root.plaintext).to_h
166
+
167
+ end
168
+
169
+ alias words wordtally
170
+
171
+ def read(chapter, verse)
172
+ @doc.root.element("chapter[@no='#{chapter}']/verse[@no='#{verse}']")
173
+ end
174
+
175
+
176
+ def search(keyword)
177
+
178
+ a = @verses.select {|x| x.text =~ /#{keyword}/}
179
+
180
+ a2 = a.map.with_index do |verse, i|
181
+ txt = verse.text
182
+
183
+ puts 'txt: ' + txt.inspect if @debug
184
+
185
+ n = 0
186
+ chapter = verse.parent.attributes[:no]
187
+
188
+ until txt.rstrip[-1] == '.' or n > 2 do
189
+ n +=1
190
+ nverse = read(chapter, verse.attributes[:no].to_i + n)
191
+ txt += nverse.text
192
+ end
193
+
194
+ if @debug then
195
+ puts 'n: ' + n.inspect
196
+ puts '_txt: ' + txt.inspect
197
+ end
198
+
199
+ [verse.parent.attributes[:no], verse.attributes[:no], txt]
200
+ end
201
+
202
+ h1 = a2.group_by(&:first)
203
+ end
204
+
205
+
206
+ end
207
+
208
+ end
209
+
data.tar.gz.sig ADDED
Binary file
metadata ADDED
@@ -0,0 +1,112 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bibletools
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - James Robertson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIEljCCAv6gAwIBAgIBATANBgkqhkiG9w0BAQsFADBIMRIwEAYDVQQDDAlnZW1t
14
+ YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
15
+ 8ixkARkWAmV1MB4XDTIyMTEwMTE5NDkwMVoXDTIzMTEwMTE5NDkwMVowSDESMBAG
16
+ A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
+ EjAQBgoJkiaJk/IsZAEZFgJldTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoC
18
+ ggGBAO4EkWGPQjC353RghcFVaChTU9wtElySDuaMxIHRfY78xcZKjS/nDC5wGyRa
19
+ gi/dqoSdSkOrH+X+Gc8DUVzhGDW/VBjdRGcImta4MBWioZwN2pM/MPclix0Krzm5
20
+ Ai3eIah8DNa3q6GjETYITmWh4CAdOhxBAUdS9RLXrg0NkseG+5EQslVK33zKLyh8
21
+ trL5BobHN/H42Bs+aJXaEJbUGE6uSYmU48FiuQ7GRsHIzalTINfpkrhiaxY2rDY7
22
+ nF1hgXniZPeQ0LOdhWWDr1NhgLMZkcQkTQCHsNCYsGhn7ey/kiCNSHe7VL1ZP8fI
23
+ 5VU2cMjbDqhTPmDJOHIFI7Odq1fANMODWYmu4b0DG6GucKDqyWiMSOlSOHpVVYhf
24
+ +TTddq5MzpiaUMZ5axUgUYjnXwMZxLdWj8tmLDTpf8OG/uVsVVlf1ZksDqQbEaiP
25
+ hKXSuzUL5hc4qbR5+vuG8YS/OXlhRJlgJzLAip4mADyXHcQn9gAq6kUHPT+s8ANA
26
+ 7ND/tQIDAQABo4GKMIGHMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
27
+ BBSJNr8LDr9bFKicE6Fy0esYh7VOkDAmBgNVHREEHzAdgRtnZW1tYXN0ZXJAamFt
28
+ ZXNyb2JlcnRzb24uZXUwJgYDVR0SBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
29
+ c29uLmV1MA0GCSqGSIb3DQEBCwUAA4IBgQC4rcqtsT3VmXV5P8azIQB6Ek/msm2u
30
+ CstleVVm/EwF7jh0gGJJiDJQN5AVgx8KuTUgMG7ZV/545tyvMehterxdOnGu/BVK
31
+ Vj4x122PiswtVHH0mEGaLAhPN7ZFwuFrcqOnBvvQu2KzHL/pq4G0H7nH2DarIRVk
32
+ Taw5ZF8P5xQvJlhZgi+5nRRiZoTwKwWqp+qqh6O4yTOWfBFRf3Jbnc5Zl+MqhOpX
33
+ uhkwF7pXCOW657/b0ZHpc4VOMtTZc7zexqAvrYluKT9RNMT8UWpS3b2jWjHSujww
34
+ T017aRDqdDpFR4Nr83t0ZE5JZlGbtMBK1vPw//PKr/r720mqWEShWNqoedmKWAj7
35
+ bJS0iHnCBeWKWn0HK15PbywyBS9X8SB8WSEabEcxFRUY6NKK3JtC6breJGNWFZih
36
+ hIlyeyH9vsaJLam1TYsSqh3KUBmRCIvc3XELg2MAlggTrHuCjBPdYXqjIOFvO6HZ
37
+ Z1XDnMf4RhcEPF4AU3Q+Fefsw4qKRWH3YUw=
38
+ -----END CERTIFICATE-----
39
+ date: 2022-11-01 00:00:00.000000000 Z
40
+ dependencies:
41
+ - !ruby/object:Gem::Dependency
42
+ name: nokorexi
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.7'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 0.7.0
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '0.7'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 0.7.0
61
+ - !ruby/object:Gem::Dependency
62
+ name: yawc
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '0.3'
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 0.3.0
71
+ type: :runtime
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '0.3'
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 0.3.0
81
+ description:
82
+ email: digital.robertson@gmail.com
83
+ executables: []
84
+ extensions: []
85
+ extra_rdoc_files: []
86
+ files:
87
+ - lib/bibletools.rb
88
+ homepage: https://github.com/jrobertson/bibletools
89
+ licenses:
90
+ - MIT
91
+ metadata: {}
92
+ post_install_message:
93
+ rdoc_options: []
94
+ require_paths:
95
+ - lib
96
+ required_ruby_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ required_rubygems_version: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ requirements: []
107
+ rubygems_version: 3.3.7
108
+ signing_key:
109
+ specification_version: 4
110
+ summary: Performs a word count within a specified book. Returns the verses within
111
+ a specified book for a given keyword.
112
+ test_files: []
metadata.gz.sig ADDED
Binary file