bomdb 0.0.1
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 +7 -0
- data/.bomdb +2 -0
- data/.gitignore +13 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +45 -0
- data/LICENSE.txt +22 -0
- data/README.md +66 -0
- data/Rakefile +2 -0
- data/bin/bomdb +5 -0
- data/bomdb.gemspec +31 -0
- data/data/book_of_mormon.db +0 -0
- data/data/books.json +17 -0
- data/data/verses.json +145590 -0
- data/lib/bomdb.rb +27 -0
- data/lib/bomdb/cli/application.rb +131 -0
- data/lib/bomdb/config.rb +32 -0
- data/lib/bomdb/import/base.rb +23 -0
- data/lib/bomdb/import/biblical_refs.rb +359 -0
- data/lib/bomdb/import/books.rb +36 -0
- data/lib/bomdb/import/result.rb +24 -0
- data/lib/bomdb/import/verses.rb +62 -0
- data/lib/bomdb/query.rb +40 -0
- data/lib/bomdb/range.rb +12 -0
- data/lib/bomdb/schema.rb +92 -0
- data/lib/bomdb/version.rb +3 -0
- data/spec/bomdb/config_spec.rb +27 -0
- data/spec/bomdb_spec.rb +30 -0
- data/spec/spec_helper.rb +4 -0
- metadata +174 -0
data/lib/bomdb.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'sequel'
|
2
|
+
|
3
|
+
dbfile = ARGV.first || "book_of_mormon.db"
|
4
|
+
|
5
|
+
module BomDB
|
6
|
+
|
7
|
+
extend self
|
8
|
+
|
9
|
+
def db(dbfile = config.db_path)
|
10
|
+
Sequel.sqlite(dbfile)
|
11
|
+
end
|
12
|
+
|
13
|
+
def config
|
14
|
+
@config ||= BomDB::Config.new
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
require 'bomdb/version'
|
19
|
+
require 'bomdb/config'
|
20
|
+
require 'bomdb/schema'
|
21
|
+
require 'bomdb/query'
|
22
|
+
|
23
|
+
require 'bomdb/import/base'
|
24
|
+
require 'bomdb/import/result'
|
25
|
+
require 'bomdb/import/books'
|
26
|
+
require 'bomdb/import/verses'
|
27
|
+
require 'bomdb/import/biblical_refs'
|
@@ -0,0 +1,131 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'bomdb'
|
3
|
+
|
4
|
+
module BomDB
|
5
|
+
module Cli
|
6
|
+
class Application < Thor
|
7
|
+
desc "import TYPE", "import data of TYPE into database, e.g. books"
|
8
|
+
option :reset, :type => :boolean, :default => false
|
9
|
+
def import(type, file=nil)
|
10
|
+
case type.downcase
|
11
|
+
when 'books'
|
12
|
+
result = import_books(file, options[:reset])
|
13
|
+
show_result_and_maybe_exit(result)
|
14
|
+
when 'verses'
|
15
|
+
result = import_verses(file, options[:reset])
|
16
|
+
show_result_and_maybe_exit(result)
|
17
|
+
when 'biblical-refs'
|
18
|
+
result = import_biblical_refs(true)
|
19
|
+
show_result_and_maybe_exit(result)
|
20
|
+
else
|
21
|
+
puts "Unknown import type #{type}"
|
22
|
+
exit -1
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
desc "build", "[delete and re-]build the database"
|
27
|
+
option :delete, :type => :boolean, :default => false, :aliases => [:y]
|
28
|
+
def build
|
29
|
+
dbp = BomDB.config.db_path
|
30
|
+
if File.exist?(dbp) and !options[:delete]
|
31
|
+
puts "Database file '#{dbp}' exists. Delete? (y/N) "
|
32
|
+
if $stdin.gets.chomp.downcase != "y"
|
33
|
+
puts "Exiting..."
|
34
|
+
exit -1
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# Delete the database
|
39
|
+
FileUtils.rm(dbp)
|
40
|
+
|
41
|
+
puts "Importing books..."
|
42
|
+
show_result_and_maybe_exit(import_books(nil, true))
|
43
|
+
|
44
|
+
puts "Importing verses..."
|
45
|
+
show_result_and_maybe_exit(import_verses(nil, true))
|
46
|
+
|
47
|
+
puts "Importing biblical refs..."
|
48
|
+
show_result_and_maybe_exit(import_biblical_refs(true))
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
desc "show EDITION RANGE", "show an edition of the Book of Mormon, or a RANGE of verses"
|
53
|
+
option :book, :type => :boolean, :default => true, :aliases => [:b]
|
54
|
+
option :chapter, :type => :boolean, :default => true, :aliases => [:c]
|
55
|
+
option :verse, :type => :boolean, :default => true, :aliases => [:v]
|
56
|
+
option :exclude, :type => :string, :aliases => [:x]
|
57
|
+
option :sep, :type => :string, :default => ' '
|
58
|
+
def show(edition = '1829', range = nil)
|
59
|
+
query = BomDB::Query.new(
|
60
|
+
edition: edition,
|
61
|
+
exclude: options[:exclude]
|
62
|
+
# range: range
|
63
|
+
)
|
64
|
+
query.print(
|
65
|
+
book: options[:book],
|
66
|
+
chapter: options[:chapter],
|
67
|
+
verse: options[:verse],
|
68
|
+
sep: options[:sep]
|
69
|
+
)
|
70
|
+
end
|
71
|
+
|
72
|
+
desc "editions", "list available editions of the Book of Mormon"
|
73
|
+
# option :available, :type => :boolean, :default => true
|
74
|
+
def editions
|
75
|
+
eds = BomDB.db[:versions].map do |r|
|
76
|
+
[r[:version_year], r[:version_name]].join(' -- ')
|
77
|
+
end
|
78
|
+
puts eds.join('\n')
|
79
|
+
end
|
80
|
+
|
81
|
+
desc "reference-types", "list reference types"
|
82
|
+
def reference_types
|
83
|
+
rts = BomDB.db[:refs].distinct.select(:ref_name).map do |r|
|
84
|
+
r[:ref_name]
|
85
|
+
end
|
86
|
+
puts rts.join('\n')
|
87
|
+
end
|
88
|
+
|
89
|
+
private
|
90
|
+
|
91
|
+
def datafile(file)
|
92
|
+
File.join(BomDB.config.data_dir, file)
|
93
|
+
end
|
94
|
+
|
95
|
+
def import_books(file, reset = true)
|
96
|
+
data = File.read(file || datafile("books.json"))
|
97
|
+
|
98
|
+
import = BomDB::Import::Books.new(BomDB.db)
|
99
|
+
import.reset if reset
|
100
|
+
|
101
|
+
import.json(data)
|
102
|
+
end
|
103
|
+
|
104
|
+
def import_verses(file, reset = true)
|
105
|
+
data = File.read(file || datafile("verses.json"))
|
106
|
+
|
107
|
+
import = BomDB::Import::Verses.new(BomDB.db)
|
108
|
+
import.reset if reset
|
109
|
+
|
110
|
+
import.json(data)
|
111
|
+
end
|
112
|
+
|
113
|
+
def import_biblical_refs(reset = true)
|
114
|
+
import = BomDB::Import::BiblicalRefs.new(BomDB.db)
|
115
|
+
import.reset if reset
|
116
|
+
|
117
|
+
import.import
|
118
|
+
end
|
119
|
+
|
120
|
+
def show_result_and_maybe_exit(result)
|
121
|
+
if !result.success?
|
122
|
+
puts result.message
|
123
|
+
# if result.error.is_a?(Sequel::UniqueConstraintViolation)
|
124
|
+
puts "Try again with '--reset'? (NOTE: data may be deleted)"
|
125
|
+
# end
|
126
|
+
exit -1
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
data/lib/bomdb/config.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'constellation'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
module BomDB
|
5
|
+
class Config
|
6
|
+
|
7
|
+
Constellation.enhance self
|
8
|
+
|
9
|
+
self.config_file = '.bomdb'
|
10
|
+
self.load_from_gems = true
|
11
|
+
self.env_params = {
|
12
|
+
db_path: 'BOMDB_DB_PATH',
|
13
|
+
data_dir: 'BOMDB_DATA_DIR',
|
14
|
+
}
|
15
|
+
|
16
|
+
DEFAULT_DATA_DIR = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'data'))
|
17
|
+
|
18
|
+
def db_path
|
19
|
+
@data.fetch('db_path', File.join(data_dir, db_file))
|
20
|
+
end
|
21
|
+
|
22
|
+
def data_dir
|
23
|
+
@data.fetch('data_dir', DEFAULT_DATA_DIR)
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def parse_config_file(contents)
|
29
|
+
YAML::load(contents)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module BomDB
|
4
|
+
module Import
|
5
|
+
class Base
|
6
|
+
def initialize(db)
|
7
|
+
@db = db
|
8
|
+
end
|
9
|
+
|
10
|
+
def ensure_parsed_json(data)
|
11
|
+
if data.is_a?(String)
|
12
|
+
JSON.parse(data)
|
13
|
+
else
|
14
|
+
data
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def schema
|
19
|
+
BomDB::Schema.new(@db)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,359 @@
|
|
1
|
+
module BomDB
|
2
|
+
module Import
|
3
|
+
class BiblicalRefs < Import::Base
|
4
|
+
|
5
|
+
def reset
|
6
|
+
schema.reset(:refs)
|
7
|
+
end
|
8
|
+
|
9
|
+
def ref(
|
10
|
+
ref_name: "Bible",
|
11
|
+
book:, ref_book:,
|
12
|
+
chapter:, ref_chapter:,
|
13
|
+
verse: nil, ref_verse: nil,
|
14
|
+
is_parallel: false, is_quotation: false)
|
15
|
+
verses = @db[:verses].join(:books, :book_id => :book_id)
|
16
|
+
verses.where!(:book_name => book, :verse_chapter => chapter, :verse_heading => nil)
|
17
|
+
verses.where!(:verse_number => verse) if verse
|
18
|
+
|
19
|
+
verses.each do |row|
|
20
|
+
ref_id = @db[:refs].insert(
|
21
|
+
ref_name: ref_name,
|
22
|
+
verse_id: row[:verse_id],
|
23
|
+
ref_book: ref_book,
|
24
|
+
ref_chapter: ref_chapter,
|
25
|
+
ref_verse: ref_verse || row[:verse_number],
|
26
|
+
ref_is_parallel: is_parallel,
|
27
|
+
ref_is_quotation: is_quotation
|
28
|
+
)
|
29
|
+
# puts ref_id
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def import
|
34
|
+
if !schema.has_tables?(:refs)
|
35
|
+
return Import::Result.new(
|
36
|
+
success: false,
|
37
|
+
error: "Database table 'refs' not present."
|
38
|
+
)
|
39
|
+
end
|
40
|
+
|
41
|
+
begin
|
42
|
+
# 2 Nephi 12-24 quotes Isaiah 2-14
|
43
|
+
(12..24).each do |chapter|
|
44
|
+
ref(ref_name: "Bible-OT", is_quotation: true,
|
45
|
+
book: '2 Nephi', chapter: chapter,
|
46
|
+
ref_book: 'Isaiah', ref_chapter: chapter - 10)
|
47
|
+
end
|
48
|
+
|
49
|
+
# 2 Nephi 27 quotes Isaiah 29
|
50
|
+
ref(ref_name: "Bible-OT", is_quotation: true,
|
51
|
+
book: '2 Nephi', chapter: 27,
|
52
|
+
ref_book: 'Isaiah', ref_chapter: 29)
|
53
|
+
|
54
|
+
# 1 Nephi 20–21 quotes Isaiah 48-49
|
55
|
+
ref(ref_name: "Bible-OT", is_quotation: true,
|
56
|
+
book: '1 Nephi', chapter: 20,
|
57
|
+
ref_book: 'Isaiah', ref_chapter: 48)
|
58
|
+
ref(ref_name: "Bible-OT", is_quotation: true,
|
59
|
+
book: '1 Nephi', chapter: 21,
|
60
|
+
ref_book: 'Isaiah', ref_chapter: 49)
|
61
|
+
|
62
|
+
# 2 Nephi 7–8 quotes Isaiah 50–51
|
63
|
+
ref(ref_name: "Bible-OT", is_quotation: true,
|
64
|
+
book: '2 Nephi', chapter: 7,
|
65
|
+
ref_book: 'Isaiah', ref_chapter: 50)
|
66
|
+
ref(ref_name: "Bible-OT", is_quotation: true,
|
67
|
+
book: '2 Nephi', chapter: 8,
|
68
|
+
ref_book: 'Isaiah', ref_chapter: 51)
|
69
|
+
|
70
|
+
# 3 Nephi 20 quotes Isaiah 52
|
71
|
+
ref(ref_name: "Bible-OT", is_quotation: true,
|
72
|
+
book: '3 Nephi', chapter: 20,
|
73
|
+
ref_book: 'Isaiah', ref_chapter: 52)
|
74
|
+
|
75
|
+
# Mosiah 14 quotes Isaiah 53
|
76
|
+
ref(ref_name: "Bible-OT", is_quotation: true,
|
77
|
+
book: 'Mosiah', chapter: 14,
|
78
|
+
ref_book: 'Isaiah', ref_chapter: 53)
|
79
|
+
|
80
|
+
# 3 Nephi 22 quotes Isaiah 54
|
81
|
+
ref(ref_name: "Bible-OT", is_quotation: true,
|
82
|
+
book: '3 Nephi', chapter: 22,
|
83
|
+
ref_book: 'Isaiah', ref_chapter: 54)
|
84
|
+
|
85
|
+
# 2 Nephi 29:2 parallels Isaiah 5:26
|
86
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
87
|
+
book: '2 Nephi', chapter: 29, verse: 2,
|
88
|
+
ref_book: 'Isaiah', ref_chapter: 5, ref_verse: 26)
|
89
|
+
|
90
|
+
# 2 Nephi 28:32 quotes Isaiah 9:12-13
|
91
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
92
|
+
book: '2 Nephi', chapter: 28, verse: 32,
|
93
|
+
ref_book: 'Isaiah', ref_chapter: 9, ref_verse: 12)
|
94
|
+
|
95
|
+
# 2 Nephi 30:9 quotes Isaiah 11:4
|
96
|
+
ref(ref_name: "Bible-OT", is_quotation: true,
|
97
|
+
book: '2 Nephi', chapter: 30, verse: 9,
|
98
|
+
ref_book: 'Isaiah', ref_chapter: 11, ref_verse: 4)
|
99
|
+
|
100
|
+
# 2 Nephi 30:11-15 quotes Isaiah 11:5-9
|
101
|
+
(11..15).each do |verse|
|
102
|
+
ref(ref_name: "Bible-OT", is_quotation: true,
|
103
|
+
book: '2 Nephi', chapter: 30, verse: verse,
|
104
|
+
ref_book: 'Isaiah', ref_chapter: 11, ref_verse: verse - 6)
|
105
|
+
end
|
106
|
+
|
107
|
+
# 2 Nephi 25:17; 29:1; compare 25:11 parallels Isaiah 11:11
|
108
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
109
|
+
book: '2 Nephi', chapter: 25, verse: 17,
|
110
|
+
ref_book: 'Isaiah', ref_chapter: 11, ref_verse: 11)
|
111
|
+
|
112
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
113
|
+
book: '2 Nephi', chapter: 29, verse: 1,
|
114
|
+
ref_book: 'Isaiah', ref_chapter: 11, ref_verse: 11)
|
115
|
+
|
116
|
+
# 2 Nephi 28:7-8 parallels Isaiah 22:13
|
117
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
118
|
+
book: '2 Nephi', chapter: 28, verse: 7,
|
119
|
+
ref_book: 'Isaiah', ref_chapter: 22, ref_verse: 13)
|
120
|
+
|
121
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
122
|
+
book: '2 Nephi', chapter: 28, verse: 8,
|
123
|
+
ref_book: 'Isaiah', ref_chapter: 22, ref_verse: 13)
|
124
|
+
|
125
|
+
# 2 Nephi 26:15 parallels Isaiah 25:12
|
126
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
127
|
+
book: '2 Nephi', chapter: 26, verse: 15,
|
128
|
+
ref_book: 'Isaiah', ref_chapter: 25, ref_verse: 12)
|
129
|
+
|
130
|
+
# 2 Nephi 28:30 parallels Isaiah 28:10, 13
|
131
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
132
|
+
book: '2 Nephi', chapter: 28, verse: 30,
|
133
|
+
ref_book: 'Isaiah', ref_chapter: 28, ref_verse: 10)
|
134
|
+
|
135
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
136
|
+
book: '2 Nephi', chapter: 28, verse: 30,
|
137
|
+
ref_book: 'Isaiah', ref_chapter: 28, ref_verse: 13)
|
138
|
+
|
139
|
+
# 2 Nephi 26:15-16 parallels Isaiah 29:3-4
|
140
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
141
|
+
book: '2 Nephi', chapter: 26, verse: 15,
|
142
|
+
ref_book: 'Isaiah', ref_chapter: 29, ref_verse: 3)
|
143
|
+
|
144
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
145
|
+
book: '2 Nephi', chapter: 26, verse: 16,
|
146
|
+
ref_book: 'Isaiah', ref_chapter: 29, ref_verse: 4)
|
147
|
+
|
148
|
+
# 2 Nephi 26:18 parallels Isaiah 29:5
|
149
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
150
|
+
book: '2 Nephi', chapter: 26, verse: 18,
|
151
|
+
ref_book: 'Isaiah', ref_chapter: 29, ref_verse: 5)
|
152
|
+
|
153
|
+
# 2 Nephi 6:15 parallels Isaiah 29:6
|
154
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
155
|
+
book: '2 Nephi', chapter: 6, verse: 15,
|
156
|
+
ref_book: 'Isaiah', ref_chapter: 29, ref_verse: 6)
|
157
|
+
|
158
|
+
# 2 Nephi 27:2-5 parallels Isaiah 29:6-10
|
159
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
160
|
+
book: '2 Nephi', chapter: 27, verse: 2,
|
161
|
+
ref_book: 'Isaiah', ref_chapter: 29, ref_verse: 6)
|
162
|
+
|
163
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
164
|
+
book: '2 Nephi', chapter: 27, verse: 3,
|
165
|
+
ref_book: 'Isaiah', ref_chapter: 29, ref_verse: 7)
|
166
|
+
|
167
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
168
|
+
book: '2 Nephi', chapter: 27, verse: 3,
|
169
|
+
ref_book: 'Isaiah', ref_chapter: 29, ref_verse: 8)
|
170
|
+
|
171
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
172
|
+
book: '2 Nephi', chapter: 27, verse: 4,
|
173
|
+
ref_book: 'Isaiah', ref_chapter: 29, ref_verse: 9)
|
174
|
+
|
175
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
176
|
+
book: '2 Nephi', chapter: 27, verse: 5,
|
177
|
+
ref_book: 'Isaiah', ref_chapter: 29, ref_verse: 10)
|
178
|
+
|
179
|
+
# 1 Nephi 14:7; 1 Nephi 22:8; 2 Nephi 29:1 weakly parallel Isaiah 29:14
|
180
|
+
# 2 Nephi 25:17 parallels Isaiah 29:14
|
181
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
182
|
+
book: '2 Nephi', chapter: 25, verse: 17,
|
183
|
+
ref_book: 'Isaiah', ref_chapter: 29, ref_verse: 14)
|
184
|
+
|
185
|
+
# 2 Nephi 28:9 parallels Isaiah 29:15
|
186
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
187
|
+
book: '2 Nephi', chapter: 28, verse: 9,
|
188
|
+
ref_book: 'Isaiah', ref_chapter: 29, ref_verse: 15)
|
189
|
+
|
190
|
+
# 1 Nephi 10:8 parallels Isaiah 40:3
|
191
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
192
|
+
book: '1 Nephi', chapter: 10, verse: 8,
|
193
|
+
ref_book: 'Isaiah', ref_chapter: 40, ref_verse: 3)
|
194
|
+
|
195
|
+
# 1 Nephi 17:36 parallels Isaiah 45:18
|
196
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
197
|
+
book: '1 Nephi', chapter: 17, verse: 36,
|
198
|
+
ref_book: 'Isaiah', ref_chapter: 45, ref_verse: 18)
|
199
|
+
|
200
|
+
# Mosiah 27:31 parallels Isaiah 45:23
|
201
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
202
|
+
book: 'Mosiah', chapter: 27, verse: 31,
|
203
|
+
ref_book: 'Isaiah', ref_chapter: 45, ref_verse: 23)
|
204
|
+
|
205
|
+
# 1 Nephi 22:6, 1 Nephi 22:8, 2 Nephi 6:6 parallel Isaiah 49:22
|
206
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
207
|
+
book: '1 Nephi', chapter: 22, verse: 6,
|
208
|
+
ref_book: 'Isaiah', ref_chapter: 49, ref_verse: 22)
|
209
|
+
|
210
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
211
|
+
book: '1 Nephi', chapter: 22, verse: 8,
|
212
|
+
ref_book: 'Isaiah', ref_chapter: 49, ref_verse: 22)
|
213
|
+
|
214
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
215
|
+
book: '2 Nephi', chapter: 6, verse: 6,
|
216
|
+
ref_book: 'Isaiah', ref_chapter: 49, ref_verse: 22)
|
217
|
+
|
218
|
+
# 2 Nephi 6:7; 2 Nephi 10:9 parallel Isaiah 49:23
|
219
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
220
|
+
book: '2 Nephi', chapter: 6, verse: 7,
|
221
|
+
ref_book: 'Isaiah', ref_chapter: 49, ref_verse: 23)
|
222
|
+
|
223
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
224
|
+
book: '2 Nephi', chapter: 10, verse: 9,
|
225
|
+
ref_book: 'Isaiah', ref_chapter: 49, ref_verse: 23)
|
226
|
+
|
227
|
+
# 2 Nephi 6:16-18 quotes Isaiah 49:24-26
|
228
|
+
(16..18).each do |verse|
|
229
|
+
ref(ref_name: "Bible-OT", is_quotation: true,
|
230
|
+
book: '2 Nephi', chapter: 6, verse: verse,
|
231
|
+
ref_book: 'Isaiah', ref_chapter: 49, ref_verse: verse + 8)
|
232
|
+
end
|
233
|
+
|
234
|
+
# Moroni 10:31 parallels Isaiah 52:1
|
235
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
236
|
+
book: 'Moroni', chapter: 10, verse: 31,
|
237
|
+
ref_book: 'Isaiah', ref_chapter: 52, ref_verse: 1)
|
238
|
+
|
239
|
+
# 2 Nephi 8:24-25 quotes Isaiah 52:1-2
|
240
|
+
(24..25).each do |verse|
|
241
|
+
ref(ref_name: "Bible-OT", is_quotation: true,
|
242
|
+
book: '2 Nephi', chapter: 8, verse: verse,
|
243
|
+
ref_book: 'Isaiah', ref_chapter: 52, ref_verse: verse - 23)
|
244
|
+
end
|
245
|
+
|
246
|
+
# 1 Nephi 13:37; Mosiah 15:14-18; 27:37 parallels Isaiah 52:7
|
247
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
248
|
+
book: '1 Nephi', chapter: 13, verse: 37,
|
249
|
+
ref_book: 'Isaiah', ref_chapter: 52, ref_verse: 7)
|
250
|
+
|
251
|
+
(14..18).each do |verse|
|
252
|
+
# All 5 verses repeat a reference to Isaiah 52:7
|
253
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
254
|
+
book: 'Mosiah', chapter: 15, verse: verse,
|
255
|
+
ref_book: 'Isaiah', ref_chapter: 52, ref_verse: 7)
|
256
|
+
end
|
257
|
+
|
258
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
259
|
+
book: 'Mosiah', chapter: 27, verse: 37,
|
260
|
+
ref_book: 'Isaiah', ref_chapter: 52, ref_verse: 7)
|
261
|
+
|
262
|
+
# Mosiah 12:21-24 quotes Isaiah 52:7-10
|
263
|
+
(21..24).each do |verse|
|
264
|
+
ref(ref_name: "Bible-OT", is_quotation: true,
|
265
|
+
book: 'Mosiah', chapter: 12, verse: verse,
|
266
|
+
ref_book: 'Isaiah', ref_chapter: 52, ref_verse: verse - 14)
|
267
|
+
end
|
268
|
+
|
269
|
+
# Mosiah 15:29-31; 3 Nephi 16:18-20 quote Isaiah 52:8-10
|
270
|
+
(29..31).each do |verse|
|
271
|
+
ref(ref_name: "Bible-OT", is_quotation: true,
|
272
|
+
book: 'Mosiah', chapter: 15, verse: verse,
|
273
|
+
ref_book: 'Isaiah', ref_chapter: 52, ref_verse: verse - 21)
|
274
|
+
end
|
275
|
+
|
276
|
+
(18..20).each do |verse|
|
277
|
+
# Same Isaiah quote as above, but now in 3 Nephi
|
278
|
+
ref(ref_name: "Bible-OT", is_quotation: true,
|
279
|
+
book: '3 Nephi', chapter: 16, verse: verse,
|
280
|
+
ref_book: 'Isaiah', ref_chapter: 52, ref_verse: verse - 10)
|
281
|
+
end
|
282
|
+
|
283
|
+
# 3 Nephi 20:32, 34-35 parallels Isaiah 52:8-10
|
284
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
285
|
+
book: '3 Nephi', chapter: 20, verse: 32,
|
286
|
+
ref_book: 'Isaiah', ref_chapter: 52, ref_verse: 8)
|
287
|
+
|
288
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
289
|
+
book: '3 Nephi', chapter: 20, verse: 34,
|
290
|
+
ref_book: 'Isaiah', ref_chapter: 52, ref_verse: 9)
|
291
|
+
|
292
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
293
|
+
book: '3 Nephi', chapter: 20, verse: 35,
|
294
|
+
ref_book: 'Isaiah', ref_chapter: 52, ref_verse: 10)
|
295
|
+
|
296
|
+
# 1 Nephi 22:10, 11 each parallel Isaiah 52:10
|
297
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
298
|
+
book: '1 Nephi', chapter: 22, verse: 10,
|
299
|
+
ref_book: 'Isaiah', ref_chapter: 52, ref_verse: 10)
|
300
|
+
|
301
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
302
|
+
book: '1 Nephi', chapter: 22, verse: 11,
|
303
|
+
ref_book: 'Isaiah', ref_chapter: 52, ref_verse: 10)
|
304
|
+
|
305
|
+
# 3 Nephi 21:29 parallels Isaiah 52:12
|
306
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
307
|
+
book: '3 Nephi', chapter: 21, verse: 29,
|
308
|
+
ref_book: 'Isaiah', ref_chapter: 52, ref_verse: 12)
|
309
|
+
|
310
|
+
# 3 Nephi 21:8 parallels Isaiah 52:15
|
311
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
312
|
+
book: '3 Nephi', chapter: 21, verse: 8,
|
313
|
+
ref_book: 'Isaiah', ref_chapter: 52, ref_verse: 15)
|
314
|
+
|
315
|
+
# Mosiah 15:10 parallels Isaiah 53:8,10
|
316
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
317
|
+
book: 'Mosiah', chapter: 15, verse: 10,
|
318
|
+
ref_book: 'Isaiah', ref_chapter: 53, ref_verse: 8)
|
319
|
+
|
320
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
321
|
+
book: 'Mosiah', chapter: 15, verse: 10,
|
322
|
+
ref_book: 'Isaiah', ref_chapter: 53, ref_verse: 10)
|
323
|
+
|
324
|
+
# Moroni 10:31 parallels Isaiah 54:2
|
325
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
326
|
+
book: 'Moroni', chapter: 10, verse: 31,
|
327
|
+
ref_book: 'Isaiah', ref_chapter: 54, ref_verse: 2)
|
328
|
+
|
329
|
+
# 2 Nephi 26:25 parallels Isaiah 55:1
|
330
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
331
|
+
book: '2 Nephi', chapter: 26, verse: 25,
|
332
|
+
ref_book: 'Isaiah', ref_chapter: 55, ref_verse: 1)
|
333
|
+
|
334
|
+
# 2 Nephi 9:50-51 quotes/parallels Isaiah 55:1-2
|
335
|
+
ref(ref_name: "Bible-OT", is_quotation: true,
|
336
|
+
book: '2 Nephi', chapter: 9, verse: 50,
|
337
|
+
ref_book: 'Isaiah', ref_chapter: 55, ref_verse: 1)
|
338
|
+
|
339
|
+
ref(ref_name: "Bible-OT", is_parallel: true,
|
340
|
+
book: '2 Nephi', chapter: 9, verse: 51,
|
341
|
+
ref_book: 'Isaiah', ref_chapter: 55, ref_verse: 2)
|
342
|
+
rescue => e
|
343
|
+
Import::Result.new(success: false, error: e)
|
344
|
+
end
|
345
|
+
Import::Result.new(success: true)
|
346
|
+
end
|
347
|
+
|
348
|
+
def list
|
349
|
+
@db[
|
350
|
+
"SELECT book_name, verse_chapter, verse_number, ref_name, ref_book, ref_chapter, ref_verse " +
|
351
|
+
"FROM `verses` v " +
|
352
|
+
"JOIN `books` b ON b.book_id = v.book_id " +
|
353
|
+
"JOIN `refs` r ON r.verse_id = v.verse_id " +
|
354
|
+
"ORDER BY ref_book, ref_chapter, ref_verse"
|
355
|
+
].map(&:inspect).join("\n")
|
356
|
+
end
|
357
|
+
end
|
358
|
+
end
|
359
|
+
end
|