sqlbible 1.3.2 → 1.3.4
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
- data/bin/sqlbible +54 -49
- data/lib/sqlbible/version.rb +1 -1
- data/lib/sqlbible.rb +20 -9
- metadata +17 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 21260f096b6235ac423d8406a10afe1b83f39765585bb3788489877da458c7d5
|
4
|
+
data.tar.gz: 747c638f0ed836cf25995b7b58659c79501bacb0b5d1e8198e5ef29d6b1aeab1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6ff9efb6a3d602bfde16a4824ef8b92fa4e19d6f71d7fac7c8e7d06365b66540f23026d4bd945c879563910734eb860b595ffc4e19faa0b9d7ed38f5e0658d7
|
7
|
+
data.tar.gz: f46ccb07c1abad4264d31fdf5189a1e0ec60f95a3649bf7b8234733662a59a45ca6e77b743622b89a217af54e5230e95bfba32b9984ce9c2a832df2b1326c52d
|
data/bin/sqlbible
CHANGED
@@ -54,55 +54,60 @@ end
|
|
54
54
|
|
55
55
|
subopts = result.subcommand_options
|
56
56
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
57
|
+
begin
|
58
|
+
case result.subcommand
|
59
|
+
when 'convert'
|
60
|
+
require 'fileutils'
|
61
|
+
require 'sqlbible/convert'
|
62
|
+
unless osis_fn = result.leftovers.first
|
63
|
+
$stderr.puts 'no filename given'
|
64
|
+
exit 1
|
65
|
+
end
|
66
|
+
sqlbible_fn = Sqlbible.resolve_db_filename(subopts[:bible])
|
67
|
+
if !subopts[:overwrite] && File.exist?(sqlbible_fn)
|
68
|
+
$stderr.puts format('file %s exist, conversion aborted', sqlbible_fn)
|
69
|
+
exit 1
|
70
|
+
end
|
71
|
+
unless File.exist?(dir = Sqlbible.bibles_dir)
|
72
|
+
puts format('create directory %s', dir)
|
73
|
+
FileUtils.mkdir_p dir
|
74
|
+
end
|
75
|
+
if $stdout.tty?
|
76
|
+
puts "convert #{osis_fn} to #{sqlbible_fn} ..."
|
77
|
+
end
|
78
|
+
Sqlbible.convert osis_fn, sqlbible_fn
|
79
|
+
exit
|
80
|
+
when 'list'
|
81
|
+
puts 'Available bible names:'
|
82
|
+
puts Sqlbible.bible_names.join("\n")
|
83
|
+
when 'search'
|
84
|
+
searches = subopts[:search]
|
85
|
+
lang_mod = determine_lang_mod(subopts)
|
86
|
+
if r = subopts[:range]
|
87
|
+
p = Scripref::Parser.new(lang_mod)
|
88
|
+
range = p.parse(r)
|
89
|
+
else
|
90
|
+
range = nil
|
91
|
+
end
|
92
|
+
out = determine_out(subopts)
|
93
|
+
bible = Sqlbible.new(subopts[:bible])
|
94
|
+
regexes = searches.map {|s| Regexp.new(s)}
|
95
|
+
f = Scripref::Formatter.new(lang_mod, bookformat: :abbrev)
|
96
|
+
bible.search(regexes, range: range).each do |v|
|
97
|
+
out.puts format_verse(f, v)
|
98
|
+
end
|
99
|
+
when 'text'
|
100
|
+
lang_mod = determine_lang_mod(subopts)
|
86
101
|
p = Scripref::Parser.new(lang_mod)
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
f = Scripref::Formatter.new(lang_mod, bookformat: :abbrev)
|
95
|
-
bible.search(regexes, range: range).each do |v|
|
96
|
-
out.puts format_verse(f, v)
|
97
|
-
end
|
98
|
-
when 'text'
|
99
|
-
lang_mod = determine_lang_mod(subopts)
|
100
|
-
p = Scripref::Parser.new(lang_mod)
|
101
|
-
f = Scripref::Formatter.new(lang_mod, bookformat: :abbrev)
|
102
|
-
ref = p.parse(subopts[:reference])
|
103
|
-
bible = Sqlbible.new(subopts[:bible])
|
104
|
-
out = determine_out subopts
|
105
|
-
bible.reference(ref).flatten.each do |v|
|
106
|
-
out.puts format_verse(f, v)
|
102
|
+
f = Scripref::Formatter.new(lang_mod, bookformat: :abbrev)
|
103
|
+
ref = p.parse(subopts[:reference])
|
104
|
+
bible = Sqlbible.new(subopts[:bible])
|
105
|
+
out = determine_out subopts
|
106
|
+
bible.reference(ref).flatten.each do |v|
|
107
|
+
out.puts format_verse(f, v)
|
108
|
+
end
|
107
109
|
end
|
110
|
+
rescue Exception => e
|
111
|
+
$stderr.puts e.message
|
112
|
+
exit 1
|
108
113
|
end
|
data/lib/sqlbible/version.rb
CHANGED
data/lib/sqlbible.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
+
require 'did_you_mean'
|
4
5
|
require 'scripref'
|
5
6
|
require 'sqlite3'
|
6
7
|
|
@@ -11,10 +12,7 @@ class Sqlbible
|
|
11
12
|
attr_reader :db_filename
|
12
13
|
|
13
14
|
def initialize db_name
|
14
|
-
@db_filename = Sqlbible.resolve_db_filename(db_name)
|
15
|
-
unless File.exist? @db_filename
|
16
|
-
fail ArgumentError, format('database %s not found, file %s does not exist', db_name, @db_filename)
|
17
|
-
end
|
15
|
+
@db_filename = Sqlbible.resolve_db_filename(db_name, check_existence: true)
|
18
16
|
@db = SQLite3::Database.new(@db_filename)
|
19
17
|
@db.enable_load_extension(true)
|
20
18
|
pcre_extension_file = ENV['SQLITE_PCRE_EXTENSION']
|
@@ -111,13 +109,26 @@ class Sqlbible
|
|
111
109
|
select_schema_major_minor(db).join('.')
|
112
110
|
end
|
113
111
|
|
114
|
-
def resolve_db_filename db_name
|
115
|
-
|
116
|
-
if File.basename(
|
117
|
-
File.join(bibles_dir, format('%s.sqlbible',
|
112
|
+
def resolve_db_filename db_name, check_existence: false
|
113
|
+
db_name = db_name.to_s
|
114
|
+
if File.basename(db_name, '.sqlbible') == db_name
|
115
|
+
fn = File.join(bibles_dir, format('%s.sqlbible', db_name))
|
116
|
+
if check_existence && !File.exist?(fn)
|
117
|
+
msg = format('database %s not found, file %s does not exist', db_name, fn)
|
118
|
+
sc = DidYouMean::SpellChecker.new(dictionary: bible_names)
|
119
|
+
res = sc.correct(db_name)
|
120
|
+
unless res.empty?
|
121
|
+
msg = format("%s\ndid you mean %s", msg, res.join(', '))
|
122
|
+
end
|
123
|
+
fail ArgumentError, msg
|
124
|
+
end
|
118
125
|
else
|
119
|
-
fn
|
126
|
+
fn = db_name
|
127
|
+
if check_existence && !File.exist?(fn)
|
128
|
+
fail ArgumentError, format('file %s does not exist', fn)
|
129
|
+
end
|
120
130
|
end
|
131
|
+
fn
|
121
132
|
end
|
122
133
|
|
123
134
|
end
|
metadata
CHANGED
@@ -1,15 +1,28 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sqlbible
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.4
|
5
5
|
platform: ruby
|
6
|
-
original_platform: ''
|
7
6
|
authors:
|
8
7
|
- Jan Friedrich
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date: 2024-12-
|
10
|
+
date: 2024-12-28 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
12
|
+
- !ruby/object:Gem::Dependency
|
13
|
+
name: did_you_mean
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - "~>"
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: '2.0'
|
19
|
+
type: :runtime
|
20
|
+
prerelease: false
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - "~>"
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '2.0'
|
13
26
|
- !ruby/object:Gem::Dependency
|
14
27
|
name: nokogiri
|
15
28
|
requirement: !ruby/object:Gem::Requirement
|
@@ -111,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
124
|
- !ruby/object:Gem::Version
|
112
125
|
version: '0'
|
113
126
|
requirements: []
|
114
|
-
rubygems_version: 3.
|
127
|
+
rubygems_version: 3.7.0.dev
|
115
128
|
specification_version: 4
|
116
129
|
summary: Library for bibles as SQLite databases
|
117
130
|
test_files: []
|