bible_ref 0.1.0 → 0.2.0

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: dea4f491ea3eb6ab3423ef43ffb28bfbf476c90c
4
- data.tar.gz: 99173e007d6f7525a4e33bdd31539ac0752bcb02
3
+ metadata.gz: d7620ceecdf8eb2efd2f77531477b879276732c3
4
+ data.tar.gz: e1f60d7af94a285df7f58dfb25eb408ddcfb1ab1
5
5
  SHA512:
6
- metadata.gz: 935df69f67503f12b49b4d9e86db595d4bbc14509f82de795c2a03209d4231f2c92a5bd1145b0bedc954d7a40aef7a1fadbf22e780db6cf7314a04fea5f92156
7
- data.tar.gz: 58c8b85919fad6da9072b2a1da22d402513a0888057285c321c51229f18e7d3067e4dfd806554e79dab8233b4b43c268f3064028a7ddddb614cf0b0f53e17ea0
6
+ metadata.gz: 12ffede23ce5079666e1740fde4706ad43d67a5e776e700991a4d5ab423985c52e4953ffd4bf6cee578074736ce2a5ea30188d6ee0c94cc24580c72aa0b3be87
7
+ data.tar.gz: 96413110c682fccff792273c0e9fec29c8966ccf7b6d375e5cd348d1ac8524234dc8948fdce96d2685e27ab8f9a67efe8e5b8cb9b93b839ca001ff1fe2d1b60f
@@ -98,6 +98,93 @@ module BibleRef
98
98
  'REV' => /^re?v/
99
99
  }
100
100
 
101
+ FORMATTED_BOOKS = {
102
+ 'GEN' => 'Genesis',
103
+ 'EXO' => 'Exodus',
104
+ 'LEV' => 'Leviticus',
105
+ 'NUM' => 'Numbers',
106
+ 'DEU' => 'Deuteronomy',
107
+ 'JOS' => 'Joshua',
108
+ 'JDG' => 'Judges',
109
+ 'RUT' => 'Ruth',
110
+ '1SA' => '1 Samuel',
111
+ '2SA' => '2 Samuel',
112
+ '1KI' => '1 Kings',
113
+ '2KI' => '2 Kings',
114
+ '1CH' => '1 Chronicles',
115
+ '2CH' => '2 Chronicles',
116
+ 'EZR' => 'Ezra',
117
+ 'NEH' => 'Nehemiah',
118
+ 'EST' => 'Esther',
119
+ 'JOB' => 'Job',
120
+ 'PSA' => 'Psalms',
121
+ 'PRO' => 'Proverbs',
122
+ 'ECC' => 'Ecclesiastes',
123
+ 'SNG' => 'Song of Solomon',
124
+ 'ISA' => 'Isaiah',
125
+ 'JER' => 'Jeremiah',
126
+ 'LAM' => 'Lamentations',
127
+ 'EZK' => 'Ezekiel',
128
+ 'DAN' => 'Daniel',
129
+ 'HOS' => 'Hosea',
130
+ 'JOL' => 'Joel',
131
+ 'AMO' => 'Amos',
132
+ 'OBA' => 'Obadiah',
133
+ 'JON' => 'Jonah',
134
+ 'MIC' => 'Micah',
135
+ 'NAM' => 'Nahum',
136
+ 'HAB' => 'Habakkuk',
137
+ 'ZEP' => 'Zephaniah',
138
+ 'HAG' => 'Haggai',
139
+ 'ZEC' => 'Zechariah',
140
+ 'MAL' => 'Malachi',
141
+ 'TOB' => 'Tobit',
142
+ 'JDT' => 'Judith',
143
+ 'ESG' => 'Esther (Greek)',
144
+ 'WIS' => 'Wisdom of Solomon',
145
+ 'SIR' => 'Sirach',
146
+ 'BAR' => 'Baruch',
147
+ 'LJE' => 'Jeremy’s Letter',
148
+ 'S3Y' => '3 Holy Children’s Song',
149
+ 'SUS' => 'Susanna',
150
+ 'BEL' => 'Bel and the Dragon',
151
+ '1MA' => '1 Maccabees',
152
+ '2MA' => '2 Maccabees',
153
+ '1ES' => '1 Esdras',
154
+ 'MAN' => 'Prayer of Manasses',
155
+ 'PS2' => 'Psalm 151',
156
+ '3MA' => '3 Maccabees',
157
+ '2ES' => '2 Esdras',
158
+ '4MA' => '4 Maccabees',
159
+ 'MAT' => 'Matthew',
160
+ 'MRK' => 'Mark',
161
+ 'LUK' => 'Luke',
162
+ 'JHN' => 'John',
163
+ 'ACT' => 'Acts',
164
+ 'ROM' => 'Romans',
165
+ '1CO' => '1 Corinthians',
166
+ '2CO' => '2 Corinthians',
167
+ 'GAL' => 'Galatians',
168
+ 'EPH' => 'Ephesians',
169
+ 'PHP' => 'Philippians',
170
+ 'COL' => 'Colossians',
171
+ '1TH' => '1 Thessalonians',
172
+ '2TH' => '2 Thessalonians',
173
+ '1TI' => '1 Timothy',
174
+ '2TI' => '2 Timothy',
175
+ 'TIT' => 'Titus',
176
+ 'PHM' => 'Philemon',
177
+ 'HEB' => 'Hebrews',
178
+ 'JAS' => 'James',
179
+ '1PE' => '1 Peter',
180
+ '2PE' => '2 Peter',
181
+ '1JN' => '1 John',
182
+ '2JN' => '2 John',
183
+ '3JN' => '3 John',
184
+ 'JUD' => 'Jude',
185
+ 'REV' => 'Revelation'
186
+ }
187
+
101
188
  def initialize(book, canon=:protestant)
102
189
  @canon = canon
103
190
  unless CANONS[@canon]
@@ -114,5 +201,9 @@ module BibleRef
114
201
  nil
115
202
  end
116
203
 
204
+ def formatted
205
+ FORMATTED_BOOKS[id]
206
+ end
207
+
117
208
  end
118
209
  end
@@ -7,11 +7,17 @@ module BibleRef
7
7
  attr_reader :book
8
8
  attr_reader :reference
9
9
 
10
+ # Create a new Reference instance by passing in the user-supplied bible reference as a string.
10
11
  def initialize(reference)
11
12
  @reference = reference
12
13
  @details = parse
13
14
  end
14
15
 
16
+ # Returns an array of pairs, each one being the from and to for a range.
17
+ # For single verses, the same ref is repeated twice. This is most helpful
18
+ # for converting the entire passage into a SQL query, and in fact is exactly
19
+ # why this library was built. See https://github.com/seven1m/bible_api/blob/master/app.rb
20
+ # for an example.
15
21
  def ranges
16
22
  return nil unless valid?
17
23
  @chapter = nil
@@ -20,16 +26,42 @@ module BibleRef
20
26
  end
21
27
  end
22
28
 
29
+ # Returns a BibleRef::Book instance or nil if book not known.
23
30
  def book
24
- @book ||= Book.new(@details[:book]).id
31
+ return nil unless @details
32
+ @book ||= Book.new(@details[:book])
25
33
  end
26
34
 
35
+ # Returns true if the reference is a known bible passage.
27
36
  def valid?
28
- @details and book
37
+ @details and book.id
38
+ end
39
+
40
+ # Returns a normalized passage reference. e.g.
41
+ #
42
+ # 'JOHN 3:16&17' => 'John 3:16,17'
43
+ def normalize
44
+ book.formatted + ' ' +
45
+ ranges.map do |(ref_from, ref_to)|
46
+ if ref_from != ref_to
47
+ ref_part(ref_from) + '-' + ref_part(ref_to)
48
+ else
49
+ ref_part(ref_from)
50
+ end
51
+ end.join(',')
29
52
  end
30
53
 
31
54
  private
32
55
 
56
+ def ref_part(ref)
57
+ if @last_chapter != ref[:chapter] and ref[:chapter]
58
+ @last_chapter = ref[:chapter]
59
+ "#{ref[:chapter]}:#{ref[:verse]}"
60
+ else
61
+ ref[:verse].to_s
62
+ end
63
+ end
64
+
33
65
  def parse
34
66
  begin
35
67
  parsed = Parser.new.parse(@reference)
@@ -45,15 +77,15 @@ module BibleRef
45
77
  ch = range.detect { |_, r| r[:chapter] }
46
78
  @chapter = ch.last[:chapter] if ch
47
79
  [
48
- { book: @book, chapter: @chapter }.merge(range[:from]),
49
- { book: @book, chapter: @chapter }.merge(range[:to])
80
+ { book: @book.id, chapter: @chapter }.merge(range[:from]),
81
+ { book: @book.id, chapter: @chapter }.merge(range[:to])
50
82
  ]
51
83
  end
52
84
 
53
85
  def normalize_ref(ref)
54
86
  @chapter = ref[:chapter] if ref[:chapter]
55
87
  (1..2).map do
56
- { book: @book, chapter: @chapter }.merge(ref)
88
+ { book: @book.id, chapter: @chapter }.merge(ref)
57
89
  end
58
90
  end
59
91
 
@@ -1,3 +1,3 @@
1
1
  module BibleRef
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bible_ref
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Morgan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-06 00:00:00.000000000 Z
11
+ date: 2014-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parslet