sqlbible 1.7.1 → 1.8.0

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: 72978515d6a27e67112ec446a6445914dc71041dfd9cd0cd4e5f9b62c9fbc80f
4
- data.tar.gz: ef2db40ffe61d3f87520420034094d633dd14569d1d11e827b3e0ef2e4896a35
3
+ metadata.gz: d56c3d8c24b77ebd196845f6337befa2be5ba09af57609ae81c970485882162a
4
+ data.tar.gz: 03f098e9b3df74b206b1a8a7ffd424b25c6cedca2440f63b21569f7983c0ba2c
5
5
  SHA512:
6
- metadata.gz: 930dc1198d988f112623304f6651601e415860b0e24f3ef7cd4dc26be270605f7e8917a1f103fa14f76570e455863469bca4a49d44e9201f21fbc7eb8e0be38c
7
- data.tar.gz: 32b6f1b61a08bb377104e24099a87a4ea69a2df30d3f2216460cc0b8760076ddb768c512b355b08d983774b253d005fab7d0f75c12fb0418347ebb2ac562e761
6
+ metadata.gz: eb289248fbf37ef0b2220939d20757d590186b8c0338beb76e5630f5d8cbd230ff4d37e472b2732d1082c13b11e0458fcdfd18bf14b63c0ed2a1c2652b8412be
7
+ data.tar.gz: 7bdc2c73f78526fadd9b568a3f22d421c64bfbacdae5e17e261dea9fdcf0045d48d4d33969d40c768f92afe7a26693daf0a416878ca3c3ce64f718ada47b2f11
data/README.md CHANGED
@@ -42,6 +42,7 @@ See help of the command-line application:
42
42
 
43
43
  ```shell
44
44
  sqlbible -h
45
+ sqlbible-convert -h
45
46
  ```
46
47
 
47
48
  ## Requirements
data/bin/sqlbible CHANGED
@@ -2,7 +2,7 @@
2
2
  # encoding: utf-8
3
3
  # frozen_string_literal: false
4
4
 
5
- require 'optimist_xl'
5
+ require 'optimist'
6
6
  require 'scripref'
7
7
  require 'sqlbible'
8
8
  require 'sqlbible/ansicolor'
@@ -16,37 +16,20 @@ unless $stdout.tty?
16
16
  Sqlbible.colorize = false
17
17
  end
18
18
 
19
- result = OptimistXL.options do
20
- synopsis 'Usage: sqlbible <command> [options] [filename]?'
21
- subcmd :convert, 'Convert a bible from OSIS-XML to Sqlbible format' do
22
- opt :bible, 'Name of the converted bible module or output filename of the generated .sqlbible file', type: String, required: true
23
- opt :overwrite, 'Overwrite existing module or output file if exist', type: :Boolean, default: false
24
- end
25
- subcmd :list, 'Show a list of the names of the bibles in central directory'
26
- subcmd :search, 'Search with regular expressions' do
27
- opt :bible, 'Name of the bible module filename of an .sqlbible file', type: String, **default_bible_param
28
- opt :colorize, 'Colorize output' do |v|
29
- Sqlbible.colorize = v
30
- end
31
- opt :search, 'Regular expression to search (multiple allowed)', type: String, multi: true, required: true
32
- opt :lang, 'Language for parsing and formatting scripture references', type: String, permitted: %w(de en), default: Sqlbible.lang.to_s
33
- opt :output, 'Output filename', type: String
34
- opt :range, 'Search range, example: "John 1-10"', type: String
35
- end
36
- subcmd :text, 'Show text of references' do
37
- opt :bible, 'Name of the bible module filename of an .sqlbible file', type: String, **default_bible_param
38
- opt :colorize, 'Colorize output' do |v|
39
- Sqlbible.colorize = v
40
- end
41
- opt :lang, 'Language for parsing and formatting scripture references', type: String, permitted: %w(de en), default: Sqlbible.lang.to_s
42
- opt :output, 'Output filename', type: String
43
- opt :reference, 'Reference to show, example: "John 3:16; 10:27-30"', type: String, required: true
44
- end
19
+ opts = Optimist.options do
20
+ synopsis 'Usage: sqlbible [options] [search regexes]*'
21
+ opt :bible, 'Name of the bible module filename of an .sqlbible file', type: String, **default_bible_param
22
+ opt :colorize, 'Colorize output', default: Sqlbible.colorize
23
+ opt :info, 'Show infos for installed bibles'
24
+ opt :lang, 'Language for parsing and formatting scripture references', type: String, permitted: %w(de en), default: Sqlbible.lang.to_s
25
+ opt :output, 'Output filename', type: String
26
+ opt :pager, 'Use pager for terminal output', default: Sqlbible.pager
27
+ opt :reference, 'Reference to show or search, example: "John 3:16; 10:27-30"', type: String
45
28
  version format("sqlbible %s\nschema version %s", Sqlbible::VERSION, Sqlbible.schema_version)
46
29
  end
47
30
 
48
- def determine_lang_mod subopts
49
- case l = subopts[:lang]
31
+ def determine_lang_mod opts
32
+ case l = opts[:lang]
50
33
  when 'en', nil
51
34
  Scripref::English
52
35
  when 'de'
@@ -56,26 +39,32 @@ def determine_lang_mod subopts
56
39
  end
57
40
  end
58
41
 
59
- def determine_out subopts
60
- if fn = subopts[:output]
61
- out = File.open(fn, 'w')
42
+ def open_out opts
43
+ if fn = opts[:output]
44
+ File.open(fn, 'w') do |f|
45
+ yield f
46
+ end
47
+ elsif opts[:pager]
48
+ IO.popen(Sqlbible.pager_command, 'w') do |p|
49
+ yield p
50
+ end
62
51
  else
63
- out = $stdout
52
+ yield $stdout
64
53
  end
65
54
  end
66
55
 
67
- def format_verse_ref f, v
56
+ def format_verse_ref opts, f, v
68
57
  ref = f.format(v.scripref_passage)
69
- if Sqlbible.colorize
58
+ if opts[:colorize]
70
59
  Ansicolor.apply(ref, Sqlbible.color_reference)
71
60
  else
72
61
  ref
73
62
  end
74
63
  end
75
64
 
76
- def format_text v, regexes
65
+ def format_text opts, v, regexes
77
66
  text = v.plaintext.gsub("\n", ' ¶')
78
- if Sqlbible.colorize
67
+ if opts[:colorize]
79
68
  regexes.each do |re|
80
69
  text = text.gsub(re, Ansicolor.apply('\0', Sqlbible.color_emphasize))
81
70
  end
@@ -83,60 +72,40 @@ def format_text v, regexes
83
72
  text
84
73
  end
85
74
 
86
- def format_verse_line f, v, regexes=[]
87
- format('%s: %s', format_verse_ref(f, v), format_text(v, regexes))
75
+ def format_verse_line opts, f, v, regexes=[]
76
+ format('%s: %s', format_verse_ref(opts, f, v), format_text(opts, v, regexes))
88
77
  end
89
78
 
90
- subopts = result.subcommand_options
91
-
92
79
  begin
93
- case result.subcommand
94
- when 'convert'
95
- require 'fileutils'
96
- require 'sqlbible/convert'
97
- unless osis_fn = result.leftovers.first
98
- fail 'no filename given'
80
+ if opts[:info]
81
+ names = Sqlbible.bible_names
82
+ max_size = names.map(&:size).max
83
+ names.each do |n|
84
+ puts format("%-#{max_size}s (schema version: %s)", n, Sqlbible.new(n).schema_version)
99
85
  end
100
- sqlbible_fn = Sqlbible.resolve_db_filename(subopts[:bible])
101
- if !subopts[:overwrite] && File.exist?(sqlbible_fn)
102
- fail format('file %s exist, conversion aborted', sqlbible_fn)
103
- end
104
- unless File.exist?(dir = Sqlbible.bibles_dir)
105
- puts format('create directory %s', dir)
106
- FileUtils.mkdir_p dir
107
- end
108
- if $stdout.tty?
109
- puts "convert #{osis_fn} to #{sqlbible_fn} ..."
110
- end
111
- Sqlbible.convert osis_fn, sqlbible_fn
112
- when 'list'
113
- puts 'Available bible names:'
114
- puts Sqlbible.bible_names.join("\n")
115
- when 'search'
116
- searches = subopts[:search]
117
- lang_mod = determine_lang_mod(subopts)
118
- if r = subopts[:range]
119
- p = Scripref::Parser.new(lang_mod)
120
- range = p.parse(r)
121
- else
122
- range = nil
123
- end
124
- out = determine_out(subopts)
125
- bible = Sqlbible.new(subopts[:bible])
126
- regexes = searches.map {|s| Regexp.new(s)}
127
- f = Scripref::Formatter.new(lang_mod, abbrev_level: 1)
128
- bible.search(regexes, range: range).each do |v|
129
- out.puts format_verse_line(f, v, regexes)
86
+ return
87
+ end
88
+ lang_mod = determine_lang_mod(opts)
89
+ p = Scripref::Parser.new(lang_mod)
90
+ f = Scripref::Formatter.new(lang_mod, abbrev_level: 1)
91
+ if r = opts[:reference]
92
+ ref = p.parse(r)
93
+ else
94
+ ref = nil
95
+ end
96
+ bible = Sqlbible.new(opts[:bible])
97
+ if ARGV.size > 0
98
+ regexes = ARGV.map {|s| Regexp.new(s)}
99
+ open_out opts do |out|
100
+ bible.search(regexes, range: ref).each do |v|
101
+ out.puts format_verse_line(opts, f, v, regexes)
102
+ end
130
103
  end
131
- when 'text'
132
- lang_mod = determine_lang_mod(subopts)
133
- p = Scripref::Parser.new(lang_mod)
134
- f = Scripref::Formatter.new(lang_mod, abbrev_level: 1)
135
- ref = p.parse(subopts[:reference])
136
- bible = Sqlbible.new(subopts[:bible])
137
- out = determine_out subopts
138
- bible.reference(ref).flatten.each do |v|
139
- out.puts format_verse_line(f, v)
104
+ else
105
+ open_out opts do |out|
106
+ bible.reference(Array(ref)).flatten.each do |v|
107
+ out.puts format_verse_line(opts, f, v)
108
+ end
140
109
  end
141
110
  end
142
111
  rescue Exception => e
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+ # frozen_string_literal: false
4
+
5
+ require 'optimist'
6
+ require 'sqlbible'
7
+ require 'fileutils'
8
+ require 'sqlbible/convert'
9
+
10
+ opts = Optimist.options do
11
+ synopsis 'Usage: sqlbible [options] [filename]'
12
+ opt :bible, 'Name of the converted bible module or output filename of the generated .sqlbible file', type: String, required: true
13
+ opt :overwrite, 'Overwrite existing module or output file if exist', type: :Boolean, default: false
14
+ version format("sqlbible %s\nschema version %s", Sqlbible::VERSION, Sqlbible.schema_version)
15
+ end
16
+
17
+ begin
18
+ unless osis_fn = ARGV.first
19
+ fail 'no filename given'
20
+ end
21
+ sqlbible_fn = Sqlbible.resolve_db_filename(opts[:bible])
22
+ if !opts[:overwrite] && File.exist?(sqlbible_fn)
23
+ fail format('file %s exist, conversion aborted', sqlbible_fn)
24
+ end
25
+ unless File.exist?(dir = Sqlbible.bibles_dir)
26
+ puts format('create directory %s', dir)
27
+ FileUtils.mkdir_p dir
28
+ end
29
+ if $stdout.tty?
30
+ puts "convert #{osis_fn} to #{sqlbible_fn} ..."
31
+ end
32
+ Sqlbible.convert osis_fn, sqlbible_fn
33
+ rescue Exception => e
34
+ $stderr.puts e.message
35
+ exit 1
36
+ end
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  class Sqlbible
5
- VERSION = '1.7.1'
5
+ VERSION = '1.8.0'
6
6
  end
data/lib/sqlbible.rb CHANGED
@@ -85,11 +85,12 @@ class Sqlbible
85
85
  @color_reference = :blue
86
86
  @color_emphasize = :underline
87
87
  @lang = :en
88
+ @pager_command = 'less -FRSX'
88
89
 
89
90
  class << self
90
91
 
91
92
  attr_reader :bibles_dir
92
- attr_accessor :colorize, :color_reference, :color_emphasize, :bible, :lang
93
+ attr_accessor :colorize, :color_reference, :color_emphasize, :bible, :lang, :pager, :pager_command
93
94
 
94
95
  # Get the database schema as string
95
96
  def db_schema
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqlbible
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.1
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Friedrich
@@ -38,19 +38,19 @@ dependencies:
38
38
  - !ruby/object:Gem::Version
39
39
  version: '1.16'
40
40
  - !ruby/object:Gem::Dependency
41
- name: optimist_xl
41
+ name: optimist
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '3.3'
46
+ version: '3.2'
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '3.3'
53
+ version: '3.2'
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: scripref
56
56
  requirement: !ruby/object:Gem::Requirement
@@ -124,12 +124,14 @@ dependencies:
124
124
  email: janfri26@gmail.com
125
125
  executables:
126
126
  - sqlbible
127
+ - sqlbible-convert
127
128
  extensions: []
128
129
  extra_rdoc_files: []
129
130
  files:
130
131
  - LICENSE
131
132
  - README.md
132
133
  - bin/sqlbible
134
+ - bin/sqlbible-convert
133
135
  - lib/sqlbible.rb
134
136
  - lib/sqlbible/ansicolor.rb
135
137
  - lib/sqlbible/convert.rb