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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b8eddf93d395b8029d0de33f4f87e68c719612675e808aa135d583e7d5448f95
4
- data.tar.gz: 5ecefd2dff29958e4dd5714a1f07385508478c05381bbed70d12317d3392cae5
3
+ metadata.gz: 21260f096b6235ac423d8406a10afe1b83f39765585bb3788489877da458c7d5
4
+ data.tar.gz: 747c638f0ed836cf25995b7b58659c79501bacb0b5d1e8198e5ef29d6b1aeab1
5
5
  SHA512:
6
- metadata.gz: 9ad3995f53208bab47b42b75007661f849664855665e066a154cc271891dc195b6aca2057d529839e86309e8da9df39300e3519eecbebe2cad50fb374d1772d6
7
- data.tar.gz: e5b669d1610f13f753106e2dba8f530e8b715f4456eafcca974475109fe99ce80a696d6fe0fd948064dcf5e70399f04bd5b6d9ea0a85aae752635cad9b2ddc74
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
- case result.subcommand
58
- when 'convert'
59
- require 'fileutils'
60
- require 'sqlbible/convert'
61
- unless osis_fn = result.leftovers.first
62
- $stderr.puts 'no filename given'
63
- exit 1
64
- end
65
- sqlbible_fn = Sqlbible.resolve_db_filename(subopts[:bible])
66
- if !subopts[:overwrite] && File.exist?(sqlbible_fn)
67
- $stderr.puts format('file %s exist, conversion aborted', sqlbible_fn)
68
- exit 1
69
- end
70
- unless File.exist?(dir = Sqlbible.bibles_dir)
71
- puts format('create directory %s', dir)
72
- FileUtils.mkdir_p dir
73
- end
74
- if $stdout.tty?
75
- puts "convert #{osis_fn} to #{sqlbible_fn} ..."
76
- end
77
- Sqlbible.convert osis_fn, sqlbible_fn
78
- exit
79
- when 'list'
80
- puts 'Available bible names:'
81
- puts Sqlbible.bible_names.join("\n")
82
- when 'search'
83
- searches = subopts[:search]
84
- lang_mod = determine_lang_mod(subopts)
85
- if r = subopts[:range]
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
- range = p.parse(r)
88
- else
89
- range = nil
90
- end
91
- out = determine_out(subopts)
92
- bible = Sqlbible.new(subopts[:bible])
93
- regexes = searches.map {|s| Regexp.new(s)}
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
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  class Sqlbible
5
- VERSION = '1.3.2'
5
+ VERSION = '1.3.4'
6
6
  end
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
- fn = db_name.to_s
116
- if File.basename(fn) == fn
117
- File.join(bibles_dir, format('%s.sqlbible', fn.sub(/\.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.2
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-18 00:00:00.000000000 Z
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.6.0.dev
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: []