bibletools 0.2.0 → 0.2.2
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/bibletools.rb +95 -15
- data.tar.gz.sig +0 -0
- metadata +3 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e10c0e0f8c335ebc195c2086d59c3d27a9a4f3d2c19e42ba85bca938365a4c2b
|
4
|
+
data.tar.gz: bf5259405950f58998288d7d17f783a6672600c053617e56e34a5363c44f938f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8e7b6f0a5246ab59b5db9732c8ea29e34e354c687f6a6bdae7971a99f89947a53252acad367d0a006984fbd1bf7c8349f09cf21b2b7f9b4e66d42a25a53e087
|
7
|
+
data.tar.gz: 9fd82593908e3f1a97b0a65f5d7b77bc34b8fc3e343abe1d4b81e66d4f8bb152dab81efcf3a0424a306d8df4621c7bff5a93473e5cf3b9a4e70ae8950ed897b8
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/bibletools.rb
CHANGED
@@ -93,17 +93,21 @@ module BibleTools
|
|
93
93
|
|
94
94
|
class Scraper
|
95
95
|
|
96
|
-
def initialize(book: 'Exodus', url: '')
|
96
|
+
def initialize(book: 'Exodus', url: '', debug: false)
|
97
97
|
|
98
98
|
raise ScraperErr, 'Please specify the URL' if url.empty?
|
99
99
|
|
100
100
|
baseurl = url
|
101
101
|
|
102
102
|
id = if book.is_a? String then
|
103
|
-
|
103
|
+
i = BOOKS.index(book.gsub(/\b./){|x| x.upcase})
|
104
|
+
puts 'book *' + book + '* not found' unless i
|
105
|
+
(i + 1).to_s
|
104
106
|
else
|
105
107
|
book.to_s
|
106
108
|
end
|
109
|
+
|
110
|
+
puts 'id: ' + id.inspect if @debug
|
107
111
|
|
108
112
|
url2 = baseurl + '?id=' + id
|
109
113
|
doc = Nokorexi.new(url2).to_doc
|
@@ -163,8 +167,8 @@ module BibleTools
|
|
163
167
|
@debug = debug
|
164
168
|
|
165
169
|
if bible_obj then
|
170
|
+
|
166
171
|
@doc = bible_obj.to_doc
|
167
|
-
@verses = @doc.root.xpath('chapter/verse')
|
168
172
|
@check = EnglishSpellcheck.new debug: false #verbose: false
|
169
173
|
|
170
174
|
if tts then
|
@@ -180,9 +184,28 @@ module BibleTools
|
|
180
184
|
# Automatically select verses; verses are selected based upon word
|
181
185
|
# frequency
|
182
186
|
#
|
183
|
-
def asr()
|
187
|
+
def asr(chapters: [])
|
188
|
+
|
189
|
+
r = if chapters.any? then
|
190
|
+
|
191
|
+
doc = Rexle.new('<book/>')
|
192
|
+
|
193
|
+
chapters.each do |n|
|
194
|
+
e2 = @doc.root.element("chapter[@no='#{n.to_s}']")
|
195
|
+
doc.root.add e2 if e2
|
196
|
+
end
|
197
|
+
|
198
|
+
return doc
|
199
|
+
|
200
|
+
keyword = wordtally(doc: doc).keys.first
|
201
|
+
#return keyword
|
202
|
+
#get the wordstally for the chapters
|
203
|
+
assoc_r(keyword, doc)
|
204
|
+
|
205
|
+
else
|
206
|
+
assoc_r()
|
207
|
+
end
|
184
208
|
|
185
|
-
r = assoc_r()
|
186
209
|
e = r[1].root.element('chapter/verse')
|
187
210
|
verse_no = e.attributes[:no]
|
188
211
|
chptr_no = e.parent.attributes[:no]
|
@@ -190,16 +213,18 @@ module BibleTools
|
|
190
213
|
# we are backtracking the results to hopefully find a new branch to explore
|
191
214
|
trail = r.first
|
192
215
|
|
216
|
+
#return r
|
193
217
|
a, trail2 = mine_words(r, trail, level: 2)
|
194
218
|
a << [chptr_no, verse_no, e.text, 1]
|
195
|
-
|
219
|
+
puts 'a: ' + a.inspect
|
220
|
+
#return a
|
196
221
|
h = a.group_by(&:first)
|
197
222
|
a2 = h.sort_by {|x, _| x.to_i}
|
198
|
-
|
223
|
+
@verses = a2.map do |chapter, verses|
|
199
224
|
[chapter, verses.sort_by {|_,x| x.to_i}]
|
200
225
|
end
|
201
226
|
|
202
|
-
[
|
227
|
+
[@verses, trail2]
|
203
228
|
end
|
204
229
|
|
205
230
|
# find the words associated with a given keyword
|
@@ -266,9 +291,12 @@ module BibleTools
|
|
266
291
|
def search(keyword, doc=@doc)
|
267
292
|
|
268
293
|
verses = doc.root.xpath('chapter/verse')
|
294
|
+
puts 'verses: ' + verses.inspect
|
269
295
|
a = verses.select {|x| x.text =~ /#{keyword}/i}
|
270
296
|
|
271
297
|
a2 = a.map.with_index do |verse, i|
|
298
|
+
|
299
|
+
#puts 'verse: ' + verse.xml.inspect
|
272
300
|
txt = verse.text
|
273
301
|
|
274
302
|
puts 'txt: ' + txt.inspect if @debug
|
@@ -278,9 +306,11 @@ module BibleTools
|
|
278
306
|
|
279
307
|
until txt.rstrip[/[\.\?!]\W*$/] or n > 2 do
|
280
308
|
n +=1
|
309
|
+
puts 'n: ' + n.inspect
|
281
310
|
nverse = read(chapter, verse.attributes[:no].to_i + n)[0]
|
311
|
+
puts 'nverse: ' + nverse.inspect
|
282
312
|
puts 'nverse: ' + nverse&.text.inspect if @debug
|
283
|
-
txt += nverse.text
|
313
|
+
txt += nverse.text if nverse
|
284
314
|
end
|
285
315
|
|
286
316
|
if @debug then
|
@@ -321,6 +351,52 @@ module BibleTools
|
|
321
351
|
|
322
352
|
end
|
323
353
|
|
354
|
+
def verses(level: nil, html: false, title: nil)
|
355
|
+
|
356
|
+
a = @verses.map {|_, body| body}.flatten(1)
|
357
|
+
a1 = level ? a.select {|c,v,t,l| l <= level} : a.map {|c,v,t,l| [c,v,t]}
|
358
|
+
a2 = a1.map {|c,v,t,l| [c,v,t]}.uniq
|
359
|
+
h = a2.group_by(&:first)
|
360
|
+
|
361
|
+
puts 'html: ' + html.inspect
|
362
|
+
return h unless html == true
|
363
|
+
|
364
|
+
doc = Rexle.new('<html/>')
|
365
|
+
|
366
|
+
|
367
|
+
head = Rexle::Element.new('head')
|
368
|
+
head.add(Rexle::Element.new('h1').add_text(title) ) if title
|
369
|
+
|
370
|
+
style = Rexle::Element.new('style')
|
371
|
+
style.add_text ' ins {font-size: 0.8em;padding: 0.8em;}'
|
372
|
+
head.add style
|
373
|
+
|
374
|
+
doc.root.add head
|
375
|
+
body = Rexle::Element.new('body')
|
376
|
+
|
377
|
+
h.each do |chptr, verses|
|
378
|
+
|
379
|
+
h2 = Rexle::Element.new('h2').add_text chptr
|
380
|
+
body.add h2
|
381
|
+
|
382
|
+
verses.each do |cno, vno, text|
|
383
|
+
|
384
|
+
ins = Rexle::Element.new('ins').add_text vno
|
385
|
+
para = Rexle::Element.new('p')
|
386
|
+
para.add ins
|
387
|
+
para.add_text text
|
388
|
+
body.add para
|
389
|
+
|
390
|
+
end
|
391
|
+
|
392
|
+
end
|
393
|
+
|
394
|
+
doc.root.add body
|
395
|
+
|
396
|
+
doc.root.xml pretty: true
|
397
|
+
|
398
|
+
end
|
399
|
+
|
324
400
|
private
|
325
401
|
|
326
402
|
def mine_words(r, trail, verses=[], level: 0)
|
@@ -329,28 +405,32 @@ module BibleTools
|
|
329
405
|
found = []
|
330
406
|
(i-=1; found = r.last[i][0].keys - trail) until found.any?
|
331
407
|
r2 = r.last[i][0].keys - trail
|
408
|
+
|
332
409
|
a3 = r2.map do |x|
|
410
|
+
|
333
411
|
_, doc_verse = assoc_r x, r.last[i][1]
|
334
412
|
chaptr_no = doc_verse.root.element('chapter').attributes[:no]
|
335
413
|
everse = doc_verse.root.element('chapter/verse')
|
336
414
|
verse_no = everse.attributes[:no]
|
415
|
+
|
337
416
|
[chaptr_no, verse_no, everse.text, level]
|
417
|
+
|
338
418
|
end.uniq
|
339
419
|
|
340
|
-
#a3b = a3.group_by {|x| x[0]}.map(&:last).flatten(1).sort_by {|x| x[0].to_i}
|
341
|
-
#a3b.length
|
342
|
-
|
343
420
|
puts 'verses: ' + verses.inspect if @debug
|
421
|
+
|
344
422
|
verses.concat a3
|
345
423
|
verses.uniq!
|
346
424
|
trail.concat r2
|
425
|
+
|
347
426
|
puts 'trail.length: ' + trail.length.inspect if @debug
|
348
427
|
puts 'verses.length: ' + verses.length.inspect if @debug
|
349
428
|
|
350
|
-
if verses.length
|
351
|
-
mine_words(r, trail, verses, level: level+1)
|
352
|
-
else
|
429
|
+
if verses.length > 30 or trail.length > 100
|
353
430
|
[verses, trail]
|
431
|
+
else
|
432
|
+
|
433
|
+
mine_words(r, trail, verses, level: level+1)
|
354
434
|
end
|
355
435
|
end
|
356
436
|
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bibletools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -36,7 +36,7 @@ cert_chain:
|
|
36
36
|
hIlyeyH9vsaJLam1TYsSqh3KUBmRCIvc3XELg2MAlggTrHuCjBPdYXqjIOFvO6HZ
|
37
37
|
Z1XDnMf4RhcEPF4AU3Q+Fefsw4qKRWH3YUw=
|
38
38
|
-----END CERTIFICATE-----
|
39
|
-
date:
|
39
|
+
date: 2023-01-19 00:00:00.000000000 Z
|
40
40
|
dependencies:
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: nokorexi
|
@@ -144,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: '0'
|
146
146
|
requirements: []
|
147
|
-
rubygems_version: 3.
|
147
|
+
rubygems_version: 3.4.4
|
148
148
|
signing_key:
|
149
149
|
specification_version: 4
|
150
150
|
summary: Performs a word count within a specified book. Returns the verses within
|
metadata.gz.sig
CHANGED
Binary file
|