kj 0.0.12 → 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
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