sqlbible 1.3.1 → 1.3.3

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: 683a8988da2881cbfa8ab92eaad608d55f0c616c6ea77969fa018f41efb1adb7
4
- data.tar.gz: 3b1db7c4d26616d9a1096f9086cc17379e489fa21fa96ad5c2f7c9e8d1c170c7
3
+ metadata.gz: 9766fb43d793d07864c2de0ddbc6df73883f6d606498776e0f4c323e75440618
4
+ data.tar.gz: 906e690a19110464e8e2a42511eadc1e29eefc7b0fcd216e8fc7d999f2fa1706
5
5
  SHA512:
6
- metadata.gz: e58320e7522c21546bdc46fc11dd1313aafab31b88bcf3a82d23dcfec73e8c77ddc7863963795737769813f4bfad94c388c574c1db69c16645d77c5c76b4d6d6
7
- data.tar.gz: 021e848f7a346d6c06ba2abe14409479ca2ed6006c846ada3b7dc34d3e82d78c60d3feff73a5edaaf403165a8f328b2770f94e6248fd4060c244e6224c2e5e22
6
+ metadata.gz: ace4dd9751b380f6b61f95ad16b9929f6a0f88e141ebd6c3c19e35a2b8e0b4d8720383a79048c70c2de6b4a8f2fe9c109e090ba5d9c4fccaebe3afc101d3c9e4
7
+ data.tar.gz: 4fed2ba4ad46cd2bc47a017c2a1b8c6c13b086cf77c8467f16cbcbd0551a652f21b0e68252913d647a6a1e943de34d6cef0c96df47b0e6f268b950d3839bd19e
data/bin/sqlbible CHANGED
@@ -7,7 +7,7 @@ require 'scripref'
7
7
  require 'sqlbible'
8
8
 
9
9
  result = OptimistXL.options do
10
- synopsis 'Usage: sqlbible [options] [<command> [suboptions] <filename>]'
10
+ synopsis 'Usage: sqlbible <command> [options] [filename]?'
11
11
  subcmd :convert, 'Convert a bible from OSIS-XML to Sqlbible format' do
12
12
  opt :bible, 'Name of the converted bible module or output filename of the generated .sqlbible file', type: String, required: true
13
13
  opt :overwrite, 'Overwrite existing module or output file if exist', type: :Boolean, default: false
@@ -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.1'
5
+ VERSION = '1.3.3'
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
 
@@ -85,9 +86,7 @@ class Sqlbible
85
86
 
86
87
  # Get a list of the names of the bibles in bibles_dir
87
88
  def bible_names
88
- Dir.chdir bibles_dir do
89
- Dir['*.sqlbible'].map {|fn| fn.sub(/\.sqlbible$/, '')}.sort
90
- end
89
+ Dir[File.join(bibles_dir, '*.sqlbible')].map {|fn| File.basename(fn, '.sqlbible')}.sort
91
90
  end
92
91
 
93
92
  # Get an array of the major and minor version of the database schema of the
@@ -114,11 +113,21 @@ class Sqlbible
114
113
  end
115
114
 
116
115
  def resolve_db_filename db_name
117
- fn = db_name.to_s
118
- if File.basename(fn) == fn
119
- File.join(bibles_dir, format('%s.sqlbible', fn.sub(/\.sqlbible$/, '')))
120
- else
116
+ db_name = db_name.to_s
117
+ if File.basename(db_name, '.sqlbible') == db_name
118
+ fn = File.join(bibles_dir, format('%s.sqlbible', db_name))
119
+ unless bible_names.include?(db_name)
120
+ msg = format('database %s not found, file %s does not exist', db_name, fn)
121
+ sc = DidYouMean::SpellChecker.new(dictionary: bible_names)
122
+ res = sc.correct(db_name)
123
+ unless res.empty?
124
+ msg = format("%s\ndid you mean %s", msg, res.join(', '))
125
+ end
126
+ fail ArgumentError, msg
127
+ end
121
128
  fn
129
+ else
130
+ db_name
122
131
  end
123
132
  end
124
133
 
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.1
4
+ version: 1.3.3
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-17 00:00:00.000000000 Z
10
+ date: 2024-12-20 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.6.1
115
128
  specification_version: 4
116
129
  summary: Library for bibles as SQLite databases
117
130
  test_files: []