cskit-biblekjv 1.0.0 → 2.0.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,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NGM0MGNmM2NhZDk3MWE4OGQyMGQzMGJiOWRiN2I5NjFhMTc4YzQzNA==
5
- data.tar.gz: !binary |-
6
- Y2M3ZjFkMzM2MDgzMGI4YWQ1Y2ZhZGI1NjJlZTM2YjJlNDI5OGE0MQ==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- ODFlMDVkNTcxYzViYmRmY2Q1YTU5ZjQ2ZDAyMDBhODNjNjg0OWQwNjQ4MWQx
10
- OGU3YWZmNDlkZjdkNjdkMWRhZGNjM2NhYmFlYWVlNmJhM2U3MDRjN2ZmMzVm
11
- M2JmYWNlMjk0M2ZjZDEzZjJkYzljNDM4MmE2OGFlNTE0ZGMxMzM=
12
- data.tar.gz: !binary |-
13
- Yjg2YTJkZmE5YTczMTk5YWZlNDliNDE3NzRiMzdiYTE2MzA1ZGU5Y2ExM2Nm
14
- OTdmMTg5NGE1N2NjNzAxOTBiNzM5MzliMWQxNTA4NWJhNDAyY2IzMWJlYmY1
15
- MjUwNjgxZWM2NWY0Mjg1NjQzMGJjNjEwYWJjYjRmMzMxYThiZDI=
2
+ SHA1:
3
+ metadata.gz: d57ec30684d441c976498a92ff53efbe7f3443eb
4
+ data.tar.gz: 9ef19012c522e30f867734b0730e38efe3e91c2a
5
+ SHA512:
6
+ metadata.gz: a7e0930fe5ee3247d9dc54bb8a4df0e8f339e13850c4bb5071d2cd36f654d42658ed849b0ac194a129f2bdd7fe578ff5cae58f5a49926288cada7732604edff3
7
+ data.tar.gz: 96d2b7411a2afc580c752eb20b62e7919dd2b394e4bd92f3acd7d0de3d87b89759dc1cd503edd9cd57159527a4c358d79a642da7eb995033e786896b8354b96d
data/Gemfile CHANGED
@@ -1,8 +1,11 @@
1
- source "http://rubygems.org"
1
+ source 'http://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
+ gem 'cskit', path: '~/workspace/cskit-rb'
6
+
5
7
  group :development do
6
- gem "pry"
7
- gem "pry-nav"
8
- end
8
+ gem 'pry'
9
+ gem 'pry-byebug'
10
+ gem 'rake'
11
+ end
@@ -1,3 +1,9 @@
1
+ == 2.0.0
2
+
3
+ * General cleanup.
4
+ * Depend on cskit v1.1.0 and later.
5
+ * Unify namespace as cskit/bible/kjv (breaking change).
6
+
1
7
  == 1.0.0
2
8
 
3
- * Birthday!
9
+ * Birthday!
data/Rakefile CHANGED
@@ -1,35 +1,27 @@
1
1
  # encoding: UTF-8
2
2
 
3
- # Copyright 2012 Twitter, Inc
4
- # http://www.apache.org/licenses/LICENSE-2.0
5
-
6
- require 'rubygems' unless ENV['NO_RUBYGEMS']
7
-
8
3
  require 'bundler'
9
4
  require 'digest'
10
5
 
11
6
  require 'rubygems/package_task'
12
7
 
13
- require './lib/cskit-biblekjv'
8
+ require 'cskit/bible/kjv'
14
9
 
15
10
  Bundler::GemHelper.install_tasks
16
11
 
17
12
  task :update do
18
- require 'cskit'
19
- require 'cskit-biblekjv/bible_splitter'
20
-
21
- input_file = File.join(File.dirname(__FILE__), "vendor/biblekjv.txt")
22
- output_dir = File.join(File.dirname(__FILE__), "resources/bible/kjv")
23
- splitter = CSKit::Splitters::BibleSplitter.new(input_file)
13
+ input_file = File.join(File.dirname(__FILE__), 'vendor', 'biblekjv.txt')
14
+ output_dir = CSKit::Bible::Kjv.resource_root
15
+ splitter = CSKit::Bible::Kjv::Splitter.new(input_file)
24
16
 
25
17
  FileUtils.mkdir_p(output_dir)
26
18
 
27
19
  splitter.each_chapter do |chapter, book|
28
- book_name = book.name.downcase.gsub(" ", "_")
20
+ book_name = book.name.downcase.gsub(' ', '_')
29
21
  book_output_dir = File.join(output_dir, book_name)
30
22
  FileUtils.mkdir_p(book_output_dir)
31
23
 
32
- File.open(File.join(book_output_dir, "#{chapter.number}.json"), "w+") do |f|
24
+ File.open(File.join(book_output_dir, "#{chapter.number}.json"), 'w+') do |f|
33
25
  puts "Writing #{book.name}, chapter #{chapter.number} ..."
34
26
  f.write(chapter.to_hash.to_json)
35
27
  end
@@ -1,25 +1,23 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  $:.unshift File.join(File.dirname(__FILE__), 'lib')
4
- require 'cskit-biblekjv/version'
4
+ require 'cskit/bible/kjv/version'
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = "cskit-biblekjv"
8
- s.version = ::CSKitBibleKJV::VERSION
9
- s.authors = ["Cameron Dutro"]
10
- s.email = ["camertron@gmail.com"]
11
- s.homepage = "http://github.com/camertron"
7
+ s.name = 'cskit-biblekjv'
8
+ s.version = ::CSKit::Bible::Kjv::VERSION
9
+ s.authors = ['Cameron Dutro']
10
+ s.email = ['camertron@gmail.com']
11
+ s.homepage = 'http://github.com/camertron'
12
12
 
13
- s.description = s.summary = "Bible resources for CSKit, King James Version."
13
+ s.description = s.summary = 'Bible resources for CSKit, King James Version.'
14
14
 
15
15
  s.platform = Gem::Platform::RUBY
16
16
  s.has_rdoc = true
17
17
 
18
18
  s.add_dependency 'json'
19
- s.add_dependency 'cskit', '~> 1.0.0'
20
-
21
- s.add_development_dependency 'rake'
19
+ s.add_dependency 'cskit', '~> 1.1.0'
22
20
 
23
21
  s.require_path = 'lib'
24
- s.files = Dir["{lib,spec,resources}/**/*", "Gemfile", "History.txt", "LICENSE", "README.md", "Rakefile", "cskit-biblekjv.gemspec"]
22
+ s.files = Dir['{lib,spec,resources}/**/*', 'Gemfile', 'History.txt', 'LICENSE', 'README.md', 'Rakefile', 'cskit-biblekjv.gemspec']
25
23
  end
@@ -1,17 +1,43 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  require 'cskit'
4
- require 'cskit-biblekjv'
5
- require 'cskit-biblekjv/volume'
4
+ require 'pathname'
5
+
6
+ module CSKit
7
+ module Bible
8
+ module Kjv
9
+ autoload :Splitter, 'cskit/bible/kjv/splitter'
10
+ autoload :Volume, 'cskit/bible/kjv/volume'
11
+
12
+ class << self
13
+ def resource_dir
14
+ @resource_dir ||= resource_pathname.to_s
15
+ end
16
+
17
+ def resource_root
18
+ @resource_root ||= resource_pathname.join('bible', 'kjv').to_s
19
+ end
20
+
21
+ private
22
+
23
+ def resource_pathname
24
+ @resource_dir ||= Pathname(__FILE__)
25
+ .dirname.dirname.dirname.dirname
26
+ .join('resources')
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
6
32
 
7
33
  CSKit.register_volume({
8
- :type => :bible,
9
- :id => :bible_kjv,
10
- :name => "The Holy Bible, King James Version",
11
- :author => "",
12
- :language => "English",
13
- :resource_path => File.join(CSKitBibleKJV.resource_dir, "bible", "kjv"),
14
- :volume => CSKitBibleKJV::Volume,
15
- :parser => CSKit::Parsers::BibleParser,
16
- :reader => CSKit::Readers::BibleReader
17
- })
34
+ type: :bible,
35
+ id: :bible_kjv,
36
+ name: 'The Holy Bible, King James Version',
37
+ author: '',
38
+ language: 'English',
39
+ resource_path: CSKit::Bible::Kjv.resource_root,
40
+ volume: CSKit::Bible::Kjv::Volume,
41
+ parser: CSKit::Parsers::Bible::BibleParser,
42
+ reader: CSKit::Readers::BibleReader
43
+ })
@@ -0,0 +1,101 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'json'
4
+
5
+ module CSKit
6
+ module Bible
7
+ module Kjv
8
+
9
+ # Splits the kjv bible text (from Project Gutenberg) in the vendor directory.
10
+ # Mainly designed to be used by the 'update' rake task.
11
+ class Splitter
12
+
13
+ VERSE_REGEX = /\d{1,3}:\d{1,3}/
14
+ BOOK_TRIGGERS = [
15
+ 'Jonah',
16
+ 'The Epistle of Paul the Apostle to the Hebrews',
17
+ 'The Third Epistle General of John',
18
+ 'The General Epistle of Jude',
19
+ 'The Revelation of Saint John the Devine'
20
+ ]
21
+
22
+ include Enumerable
23
+ attr_reader :input_file
24
+
25
+ def initialize(input_file)
26
+ @input_file = input_file
27
+ end
28
+
29
+ def each
30
+ verse_buffer = ''
31
+ chapter = CSKit::Volumes::Bible::Chapter.new(1, [])
32
+ book = CSKit::Volumes::Bible::Book.new(book_data.first['name'], [chapter])
33
+ book_count = 1
34
+
35
+ File.open(input_file).each_line do |line|
36
+ if line.strip.empty?
37
+ if verse_buffer =~ /\A#{VERSE_REGEX}/
38
+ split_verses(verse_buffer).each do |verse_data|
39
+ chapter_num, verse_num, text = verse_data
40
+
41
+ if chapter_num != chapter.number
42
+ yield chapter, book
43
+ new_chapter = CSKit::Volumes::Bible::Chapter.new(chapter_num, [])
44
+ end
45
+
46
+ if chapter_num > chapter.number
47
+ book.chapters << new_chapter
48
+ chapter = new_chapter
49
+ elsif chapter_num != chapter.number
50
+ book = CSKit::Volumes::Bible::Book.new(book_data[book_count]['name'], [new_chapter])
51
+ book_count += 1
52
+ chapter = new_chapter
53
+ end
54
+
55
+ chapter.verses << CSKit::Volumes::Bible::Verse.new(text.strip)
56
+ end
57
+ end
58
+
59
+ verse_buffer.clear
60
+ elsif
61
+ # Jonah (and Hebrews) is special because Obadiah (the book before Jonah)
62
+ # only has one chapter and therefore breaks the assumption that all
63
+ # books have more than one chapter, which this script uses to avoid
64
+ # having to identify book headers. Yes, it's ugly.
65
+ if BOOK_TRIGGERS.include?(line.strip)
66
+ yield chapter, book
67
+ chapter = CSKit::Volumes::Bible::Chapter.new(1, [])
68
+ book = CSKit::Volumes::Bible::Book.new(book_data[book_count]['name'], [chapter])
69
+ book_count += 1
70
+ end
71
+ else
72
+ verse_buffer << "#{line.strip} "
73
+ end
74
+ end
75
+
76
+ yield chapter, book
77
+ end
78
+
79
+ alias_method :each_chapter, :each
80
+
81
+ private
82
+
83
+ def book_data
84
+ @book_data ||= JSON.parse(
85
+ File.read(
86
+ File.join(CSKit::Bible::Kjv.resource_root, 'books.json')
87
+ )
88
+ )
89
+ end
90
+
91
+ def split_verses(text)
92
+ verses = text.split(/(#{VERSE_REGEX})/)
93
+ verses[1..-1].each_slice(2).map do |verse_parts|
94
+ verse_parts.first.split(":").map(&:to_i) + [verse_parts.last]
95
+ end
96
+ end
97
+
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,9 @@
1
+ # encoding: UTF-8
2
+
3
+ module CSKit
4
+ module Bible
5
+ module Kjv
6
+ VERSION = '2.0.0'
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,57 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'json'
4
+
5
+ module CSKit
6
+ module Bible
7
+ module Kjv
8
+ class Volume < CSKit::Volume
9
+
10
+ def get_book(book_name)
11
+ if File.directory?(book_resource_path(book_name))
12
+ glob_path = File.join(book_resource_path, '**')
13
+
14
+ chapters = Dir.glob(glob_path).map.with_index do |resource_file, index|
15
+ get_chapter(index + 1, book_name)
16
+ end
17
+
18
+ CSKit::Volumes::Bible::Book.new(book_name, chapters)
19
+ end
20
+ end
21
+
22
+ def get_chapter(chapter_number, book_name)
23
+ resource_file = File.join(book_resource_path(book_name), "#{chapter_number}.json")
24
+ chapter_cache[resource_file] ||= CSKit::Volumes::Bible::Chapter.from_hash(
25
+ JSON.parse(File.read(resource_file))
26
+ )
27
+ end
28
+
29
+ def unabbreviate_book_name(orig_book_name)
30
+ book_name = orig_book_name.strip.chomp('.') # remove trailing period
31
+ regex = /^#{book_name}\w*/i
32
+
33
+ found_book = books.find do |book|
34
+ book['name'] =~ regex
35
+ end
36
+
37
+ found_book ? found_book['name'] : orig_book_name
38
+ end
39
+
40
+ def books
41
+ @books ||= JSON.parse(File.read(File.join(resource_path, 'books.json')))
42
+ end
43
+
44
+ private
45
+
46
+ def book_resource_path(book_name)
47
+ File.join(resource_path, book_name)
48
+ end
49
+
50
+ def chapter_cache
51
+ @chapter_cache ||= {}
52
+ end
53
+
54
+ end
55
+ end
56
+ end
57
+ end
metadata CHANGED
@@ -1,57 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cskit-biblekjv
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cameron Dutro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-10 00:00:00.000000000 Z
11
+ date: 2017-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: cskit
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.0.0
33
+ version: 1.1.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.0.0
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ! '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
40
+ version: 1.1.0
55
41
  description: Bible resources for CSKit, King James Version.
56
42
  email:
57
43
  - camertron@gmail.com
@@ -59,11 +45,16 @@ executables: []
59
45
  extensions: []
60
46
  extra_rdoc_files: []
61
47
  files:
48
+ - Gemfile
49
+ - History.txt
50
+ - LICENSE
51
+ - README.md
52
+ - Rakefile
53
+ - cskit-biblekjv.gemspec
62
54
  - lib/cskit/bible/kjv.rb
63
- - lib/cskit-biblekjv/bible_splitter.rb
64
- - lib/cskit-biblekjv/version.rb
65
- - lib/cskit-biblekjv/volume.rb
66
- - lib/cskit-biblekjv.rb
55
+ - lib/cskit/bible/kjv/splitter.rb
56
+ - lib/cskit/bible/kjv/version.rb
57
+ - lib/cskit/bible/kjv/volume.rb
67
58
  - resources/bible/kjv/acts/1.json
68
59
  - resources/bible/kjv/acts/10.json
69
60
  - resources/bible/kjv/acts/11.json
@@ -1254,12 +1245,6 @@ files:
1254
1245
  - resources/bible/kjv/zephaniah/1.json
1255
1246
  - resources/bible/kjv/zephaniah/2.json
1256
1247
  - resources/bible/kjv/zephaniah/3.json
1257
- - Gemfile
1258
- - History.txt
1259
- - LICENSE
1260
- - README.md
1261
- - Rakefile
1262
- - cskit-biblekjv.gemspec
1263
1248
  homepage: http://github.com/camertron
1264
1249
  licenses: []
1265
1250
  metadata: {}
@@ -1269,17 +1254,17 @@ require_paths:
1269
1254
  - lib
1270
1255
  required_ruby_version: !ruby/object:Gem::Requirement
1271
1256
  requirements:
1272
- - - ! '>='
1257
+ - - ">="
1273
1258
  - !ruby/object:Gem::Version
1274
1259
  version: '0'
1275
1260
  required_rubygems_version: !ruby/object:Gem::Requirement
1276
1261
  requirements:
1277
- - - ! '>='
1262
+ - - ">="
1278
1263
  - !ruby/object:Gem::Version
1279
1264
  version: '0'
1280
1265
  requirements: []
1281
1266
  rubyforge_project:
1282
- rubygems_version: 2.0.5
1267
+ rubygems_version: 2.2.3
1283
1268
  signing_key:
1284
1269
  specification_version: 4
1285
1270
  summary: Bible resources for CSKit, King James Version.
@@ -1,7 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- module CSKitBibleKJV
4
- def self.resource_dir
5
- @resource_dir ||= File.join(File.dirname(File.dirname(__FILE__)), "resources")
6
- end
7
- end
@@ -1,91 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- include CSKit::Books
4
-
5
- module CSKit
6
- module Splitters
7
- class BibleSplitter
8
-
9
- VERSE_REGEX = /\d{1,3}:\d{1,3}/
10
- BOOK_TRIGGERS = [
11
- "Jonah",
12
- "The Epistle of Paul the Apostle to the Hebrews",
13
- "The Third Epistle General of John",
14
- "The General Epistle of Jude",
15
- "The Revelation of Saint John the Devine"
16
- ]
17
-
18
- include Enumerable
19
- attr_reader :input_file
20
-
21
- def initialize(input_file)
22
- @input_file = input_file
23
- end
24
-
25
- def each
26
- verse_buffer = ""
27
- chapter = Bible::Chapter.new(1, [])
28
- book = Bible::Book.new(book_data.first["name"], [chapter])
29
- book_count = 1
30
-
31
- File.open(input_file).each_line do |line|
32
- if line.strip.empty?
33
- if verse_buffer =~ /\A#{VERSE_REGEX}/
34
- split_verses(verse_buffer).each do |verse_data|
35
- chapter_num, verse_num, text = verse_data
36
-
37
- if chapter_num != chapter.number
38
- yield chapter, book
39
- new_chapter = Bible::Chapter.new(chapter_num, [])
40
- end
41
-
42
- if chapter_num > chapter.number
43
- book.chapters << new_chapter
44
- chapter = new_chapter
45
- elsif chapter_num != chapter.number
46
- book = Bible::Book.new(book_data[book_count]["name"], [new_chapter])
47
- book_count += 1
48
- chapter = new_chapter
49
- end
50
-
51
- chapter.verses << Bible::Verse.new(text.strip)
52
- end
53
- end
54
-
55
- verse_buffer.clear
56
- elsif
57
- # Jonah (and Hebrews) is special because Obadiah (the book before Jonah) only has one chapter
58
- # and therefore breaks the assumption that all books have more than one chapter, which this
59
- # script uses to avoid having to identify book headers. Yes, it's ugly.
60
- if BOOK_TRIGGERS.include?(line.strip)
61
- yield chapter, book
62
- chapter = Bible::Chapter.new(1, [])
63
- book = Bible::Book.new(book_data[book_count]["name"], [chapter])
64
- book_count += 1
65
- end
66
- else
67
- verse_buffer << "#{line.strip} "
68
- end
69
- end
70
-
71
- yield chapter, book
72
- end
73
-
74
- alias :each_chapter :each
75
-
76
- private
77
-
78
- def book_data
79
- @book_data ||= JSON.parse(File.read(File.join(CSKitBibleKJV.resource_dir, "bible", "kjv", "books.json")))
80
- end
81
-
82
- def split_verses(text)
83
- verses = text.split(/(#{VERSE_REGEX})/)
84
- verses[1..-1].each_slice(2).map do |verse_parts|
85
- verse_parts.first.split(":").map(&:to_i) + [verse_parts.last]
86
- end
87
- end
88
-
89
- end
90
- end
91
- end
@@ -1,5 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- module CSKitBibleKJV
4
- VERSION = "1.0.0"
5
- end
@@ -1,49 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'json'
4
-
5
- module CSKitBibleKJV
6
- class Volume < CSKit::Volume
7
-
8
- def get_book(book_name)
9
- if File.directory?(book_resource_path(book_name))
10
- CSKit::Volumes::Bible::Book.new(book_name, Dir.glob(File.join(book_resource_path, "**")).map.with_index do |resource_file, index|
11
- get_chapter(index + 1, book_name)
12
- end)
13
- else
14
- nil
15
- end
16
- end
17
-
18
- def get_chapter(chapter_number, book_name)
19
- resource_file = File.join(book_resource_path(book_name), "#{chapter_number}.json")
20
- chapter_cache[resource_file] ||= CSKit::Volumes::Bible::Chapter.from_hash(JSON.parse(File.read(resource_file)))
21
- end
22
-
23
- def unabbreviate_book_name(orig_book_name)
24
- book_name = orig_book_name.strip.chomp(".") # remove trailing period
25
- regex = /^#{book_name}\w*/i
26
-
27
- found_book = books.find do |book|
28
- book["name"] =~ regex
29
- end
30
-
31
- found_book ? found_book["name"] : orig_book_name
32
- end
33
-
34
- def books
35
- @books ||= JSON.parse(File.read(File.join(resource_path, "books.json")))
36
- end
37
-
38
- protected
39
-
40
- def book_resource_path(book_name)
41
- File.join(resource_path, book_name)
42
- end
43
-
44
- def chapter_cache
45
- @chapter_cache ||= {}
46
- end
47
-
48
- end
49
- end