bibletools 0.2.0 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|