kj 0.0.12 → 0.0.13

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
  SHA1:
3
- metadata.gz: 8646289fa93bc6e79b9b35c4f448e4215ed5c516
4
- data.tar.gz: 406b32c6cb397a96e920876af847d56930a6b0d6
3
+ metadata.gz: c9f7e20fd8120d77b7da0104ce83206f4627ab00
4
+ data.tar.gz: 67a04df2abcac361048384c5d8bc56cfbba0fb01
5
5
  SHA512:
6
- metadata.gz: 48d726842ba6f5b742a302f84af6e974a5f3d58f5f8651dd93c06df023bc215dd9b7871c10036bd47c8fa644c4a049098711fc68e1fc3b099130339916788ee6
7
- data.tar.gz: 01c36c2cd4fc52a2a4ca164983034bccc3ff961557243cd21d1be8cc3f4680045125a6febdf65d29a7516f8cac56b110516dac1ccd4819e7b25a0a32a4b7b4bb
6
+ metadata.gz: fa98bb1dece5005f647cd6bbfbc2a6507b2bc2d7ab90ac8d2b6c51b685060c1e493bd348643e89d339f3e7b6f264d13e6307baa7f9cf7d39663ea4a1818fd5f4
7
+ data.tar.gz: dc51ac981ca416633ee45e4760fb78d566b1945d9dcc1f2b8ba76404bebd6417adc63cb7b48c3f270310c952467bbb7034a7c2390dcf211b42d4945b689898e3
data/Rakefile CHANGED
@@ -21,6 +21,7 @@ Jeweler::Tasks.new do |gem|
21
21
  gem.description = %Q{kj is a simple rubygem for accessing the King James Bible. It uses an embedded sqlite data store.}
22
22
  gem.email = "djohn@arch-no.org"
23
23
  gem.authors = ["David John"]
24
+ gem.require_path = "lib"
24
25
  # dependencies defined in Gemfile
25
26
  end
26
27
  Jeweler::RubygemsDotOrgTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.12
1
+ 0.0.13
data/kj.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: kj 0.0.12 ruby lib
5
+ # stub: kj 0.0.13 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "kj"
9
- s.version = "0.0.12"
9
+ s.version = "0.0.13"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["David John"]
14
- s.date = "2015-08-01"
14
+ s.date = "2015-08-09"
15
15
  s.description = "kj is a simple rubygem for accessing the King James Bible. It uses an embedded sqlite data store."
16
16
  s.email = "djohn@arch-no.org"
17
17
  s.extra_rdoc_files = [
data/lib/kj.rb CHANGED
@@ -1,8 +1,6 @@
1
- require 'kj/db'
2
- require 'kj/base'
3
- require 'kj/book'
4
- require 'kj/chapter'
5
- require 'kj/verse'
1
+ require_relative 'kj/book'
2
+ require_relative 'kj/chapter'
3
+ require_relative 'kj/verse'
6
4
 
7
5
  module Kj
8
6
 
@@ -28,6 +26,10 @@ module Kj
28
26
  Verse.random
29
27
  end
30
28
 
29
+ def at(percent)
30
+ Verse.at(percent)
31
+ end
32
+
31
33
  end
32
34
 
33
35
  end
data/lib/kj/base.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "sqlite3"
2
+ require_relative 'db'
2
3
 
3
4
  module Kj
4
5
 
data/lib/kj/book.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require_relative 'base'
2
+
1
3
  module Kj
2
4
 
3
5
  class Book < Base
data/lib/kj/chapter.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require_relative 'base'
2
+
1
3
  module Kj
2
4
 
3
5
  class Chapter < Base
@@ -36,7 +38,7 @@ module Kj
36
38
 
37
39
  def next
38
40
  @next ||= begin
39
- c = Db.query("SELECT id, book_id, number FROM chapters WHERE id > ? order by id asc limit 1", [id], true)
41
+ c = Db.query("SELECT id, book_id, number FROM chapters WHERE id = ?", [id + 1], true)
40
42
  self.class.new(id: c['id'], book_id: c['book_id'], number: c['number'])
41
43
  rescue Kj::Iniquity
42
44
  c = Db.query("SELECT id, book_id, number FROM chapters WHERE id = ?", [1], true)
@@ -46,7 +48,7 @@ module Kj
46
48
 
47
49
  def prev
48
50
  @prev ||= begin
49
- c = Db.query("SELECT id, book_id, number FROM chapters WHERE id < ? order by id desc limit 1", [id], true)
51
+ c = Db.query("SELECT id, book_id, number FROM chapters WHERE id = ?", [id - 1], true)
50
52
  self.class.new(id: c['id'], book_id: c['book_id'], number: c['number'])
51
53
  rescue Kj::Iniquity
52
54
  c = Db.query("SELECT id, book_id, number FROM chapters WHERE id = ?", [self.class.count], true)
@@ -55,7 +57,7 @@ module Kj
55
57
  end
56
58
 
57
59
  def self.count
58
- 1184
60
+ 1189
59
61
  end
60
62
 
61
63
  def self.random
data/lib/kj/db.rb CHANGED
@@ -11,8 +11,14 @@ module Kj
11
11
  end
12
12
  end
13
13
 
14
+ def self.select(params={table_name: nil, fields: [], conditions: {}, return_first_record: false, operator: 'AND'})
15
+ sql = "SELECT %s FROM %s WHERE %s" % [params[:fields].join(','), params[:table_name], params[:conditions].keys.map{|key| "#{key} = ?"}.join(" #{params[:operator]} ")]
16
+ query(sql, params[:conditions].values, params[:limit] == 1)
17
+ end
18
+
14
19
  def self.query(sql, values=[], return_first_record=false)
15
20
  db.results_as_hash = true
21
+ sql.gsub!(/^.{6}/, 'SELECT')
16
22
  if return_first_record
17
23
  result = db.get_first_row(sql, values)
18
24
  result.nil? ? raise(Iniquity, "Not found") : result
data/lib/kj/verse.rb CHANGED
@@ -1,6 +1,8 @@
1
+ require_relative 'base'
2
+
1
3
  module Kj
2
4
 
3
- class Verse
5
+ class Verse < Base
4
6
 
5
7
  attr_accessor :id, :chapter_id, :number
6
8
  attr_writer :chapter
@@ -24,6 +26,18 @@ module Kj
24
26
  new(id: verse['id'], chapter_id: verse['chapter_id'], number: verse['number'])
25
27
  end
26
28
 
29
+ def self.percent(decimal)
30
+ if decimal.round(3) <= 0
31
+ verse_id = 1
32
+ elsif decimal.round(3) >= 1
33
+ verse_id = count
34
+ else
35
+ verse_id = (count * decimal).round
36
+ end
37
+ verse = Db.query("SELECT id, chapter_id, number FROM verses WHERE id = ?", [verse_id], true)
38
+ new(id: verse['id'], chapter_id: verse['chapter_id'], number: verse['number'])
39
+ end
40
+
27
41
  def chapter
28
42
  @chapter ||= begin
29
43
  c = Db.query("SELECT id, book_id, number FROM chapters WHERE id = ?", [chapter_id], true)
@@ -49,7 +63,7 @@ module Kj
49
63
 
50
64
  def next
51
65
  @next ||= begin
52
- v = Db.query("SELECT id, chapter_id, text, number FROM verses WHERE id > ? order by id asc limit 1", [id], true)
66
+ v = Db.query("SELECT id, chapter_id, text, number FROM verses WHERE id = ?", [id + 1], true)
53
67
  self.class.new(id: v['id'], chapter_id: v['chapter_id'], text: v['text'], number: v['number'])
54
68
  rescue Kj::Iniquity
55
69
  v = Db.query("SELECT id, chapter_id, text, number FROM verses WHERE id = ?", [1], true)
@@ -59,7 +73,7 @@ module Kj
59
73
 
60
74
  def prev
61
75
  @prev ||= begin
62
- v = Db.query("SELECT id, chapter_id, text, number FROM verses WHERE id < ? order by id desc limit 1", [id], true)
76
+ v = Db.query("SELECT id, chapter_id, text, number FROM verses WHERE id = ?", [id - 1], true)
63
77
  self.class.new(id: v['id'], chapter_id: v['chapter_id'], text: v['text'], number: v['number'])
64
78
  rescue Kj::Iniquity
65
79
  v = Db.query("SELECT id, chapter_id, text, number FROM verses WHERE id = ?", [self.class.count], true)
data/spec/verse_spec.rb CHANGED
@@ -36,6 +36,18 @@ describe "Kj" do
36
36
  end
37
37
  end
38
38
 
39
+ describe '.percent' do
40
+ it 'returns gen 1:1 when given <=0' do
41
+ expect(Kj::Verse.percent(0).id).to eq(1)
42
+ end
43
+ it 'returns rev 22:21 when given >=1' do
44
+ expect(Kj::Verse.percent(1).id).to eq(Kj::Verse.count)
45
+ end
46
+ it 'returns the correct verse' do
47
+ expect(Kj::Verse.percent(0.5).id).to eq(15551)
48
+ end
49
+ end
50
+
39
51
  end
40
52
 
41
53
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kj
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - David John
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-01 00:00:00.000000000 Z
11
+ date: 2015-08-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sqlite3