bible_ref 1.1.2 → 1.4.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,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 28b605a11d97398a0fdcbcffc5428d473a665cc4
4
- data.tar.gz: 3cf70fdc28474f749365aef71ddb059ee2794348
2
+ SHA256:
3
+ metadata.gz: 5b66f31665e878b3a71f4c334f43ed5a26c972f15989e8569fab62aa557df191
4
+ data.tar.gz: 9e7d5a746bf49b140963dfcc945eeaee58fcf68633828892447519841d656f5f
5
5
  SHA512:
6
- metadata.gz: 0d80a0bff0cc8d4f07f1323d8162c690b767c4cf90a5a6aef8fdf5f43681442505e4216cc28423a66f03c1183a41ef9cf2009f26bb4d9ef05b04f09f2f876196
7
- data.tar.gz: 852239f8bd36937df9c042005ea3406da5db441f5db3e3c9bf08e44b3c9ab549d11fad7a80fe654c483ecf38e0e395b9fb70b24245ad3895e925c7dede1d4954
6
+ metadata.gz: 460cb9fc1df0ae490c46607ed010b21986d636dc63c2a5783ca3343589a58351570c15df9deca603a309108ca59ac74c70b89e994da1e45eec939f648fb2b27f
7
+ data.tar.gz: 88462cdbb3dc94dc66c1470455ea5b0de6605da4d1df45a2b1be761fc7ee2262aa8558173df036686f1f8bc2ab329995b7bf64e430bc411bae982591b3032154
data/README.md CHANGED
@@ -12,7 +12,7 @@ ref = BibleRef::Reference.new('jn 3:16')
12
12
  ref.valid?
13
13
  # true
14
14
 
15
- ref.book.id
15
+ ref.book_id
16
16
  # "JHN"
17
17
 
18
18
  ref.normalize
@@ -1,7 +1,8 @@
1
1
  require_relative 'canons/protestant'
2
-
2
+ require_relative 'canons/all'
3
3
  module BibleRef
4
4
  CANONS = {
5
- 'protestant' => Canons::Protestant
5
+ 'protestant' => Canons::Protestant,
6
+ 'all' => Canons::All
6
7
  }
7
8
  end
@@ -0,0 +1,15 @@
1
+ module BibleRef
2
+ module Canons
3
+ class All
4
+ def books
5
+ %w(
6
+ GEN EXO LEV NUM DEU JOS JDG RUT 1SA 2SA 1KI 2KI 1CH 2CH EZR NEH EST JOB
7
+ PSA PRO ECC SNG ISA JER LAM EZK DAN HOS JOL AMO OBA JON MIC NAM HAB ZEP HAG
8
+ ZEC MAL TOB JDT ESG WIS SIR BAR LJE S3Y SUS BEL 1MA 2MA 1ES MAN PS2 3MA 2ES
9
+ 4MA MAT MRK LUK JHN ACT ROM 1CO 2CO GAL EPH PHP COL 1TH 2TH 1TI 2TI TIT PHM
10
+ HEB JAS 1PE 2PE 1JN 2JN 3JN JUD REV
11
+ )
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,5 +1,6 @@
1
1
  require_relative 'languages/cherokee'
2
2
  require_relative 'languages/english'
3
+ require_relative 'languages/latin'
3
4
  require_relative 'languages/portuguese'
4
5
  require_relative 'languages/romanian'
5
6
 
@@ -7,7 +8,8 @@ module BibleRef
7
8
  LANGUAGES = {
8
9
  'chr' => Languages::Cherokee,
9
10
  'eng' => Languages::English,
11
+ 'lat' => Languages::Latin,
10
12
  'por' => Languages::Portuguese,
11
13
  'ron' => Languages::Romanian
12
- }
14
+ }.freeze
13
15
  end
@@ -6,15 +6,15 @@ module BibleRef
6
6
  end
7
7
 
8
8
  def book_id(book_name, canon)
9
- book_name = replace_roman_numerals(book_name.downcase)
9
+ book_name = replace_roman_numerals(book_name)
10
10
  return book_name.upcase if books[book_name.upcase] # already normalized
11
11
  canon.books.each do |book|
12
12
  details = books[book]
13
13
  next if details.nil?
14
14
  if (match = details[:match])
15
- return book if book_name =~ match
15
+ return book if book_name.downcase =~ match
16
16
  else
17
- return book if book_name == details[:name]
17
+ return book if book_name.downcase == details[:name].downcase
18
18
  end
19
19
  end
20
20
  nil
@@ -26,9 +26,9 @@ module BibleRef
26
26
  end
27
27
 
28
28
  def replace_roman_numerals(book)
29
- book.sub!(/^iii /i, '3 ')
30
- book.sub!(/^ii /i, '2 ')
31
- book.sub!(/^i /i, '1 ')
29
+ book.sub!(/^iii |^III /i, '3 ')
30
+ book.sub!(/^ii |^II /i, '2 ')
31
+ book.sub!(/^i |^I /i, '1 ')
32
32
  book
33
33
  end
34
34
  end
@@ -46,7 +46,7 @@ module BibleRef
46
46
  'ZEC' => { match: /^zec/, name: 'Zechariah' },
47
47
  'MAL' => { match: /^mal/, name: 'Malachi' },
48
48
  'TOB' => { match: /^tob/, name: 'Tobit' },
49
- 'JDT' => { match: /^(jud|jdt)/, name: 'Judith' },
49
+ 'JDT' => { match: /^(jth|jdth?|judith)/, name: 'Judith' },
50
50
  'ESG' => { match: /^(est.*greek|esg)/, name: 'Esther (Greek)' },
51
51
  'WIS' => { match: /^wis(dom)?/, name: 'Wisdom of Solomon' },
52
52
  'SIR' => { match: /^sir/, name: 'Sirach' },
@@ -64,7 +64,7 @@ module BibleRef
64
64
  '2ES' => { match: /^2 ?esd?/, name: '2 Esdras' },
65
65
  '4MA' => { match: /^4 ?mac?/, name: '4 Maccabees' },
66
66
  'MAT' => { match: /^mat/, name: 'Matthew' },
67
- 'MRK' => { match: /^ma?rk/, name: 'Mark' },
67
+ 'MRK' => { match: /^(ma?rk|mk)/, name: 'Mark' },
68
68
  'LUK' => { match: /^lu?k/, name: 'Luke' },
69
69
  'JHN' => { match: /^(john|jn|jhn)/, name: 'John' },
70
70
  'ACT' => { match: /^act/, name: 'Acts' },
@@ -88,7 +88,7 @@ module BibleRef
88
88
  '1JN' => { match: /^1 ?jo?h?n/, name: '1 John' },
89
89
  '2JN' => { match: /^2 ?jo?h?n/, name: '2 John' },
90
90
  '3JN' => { match: /^3 ?jo?h?n/, name: '3 John' },
91
- 'JUD' => { match: /^jud/, name: 'Jude' },
91
+ 'JUD' => { match: /^(jud$|jd$|jude$)/, name: 'Jude' },
92
92
  'REV' => { match: /^re?v/, name: 'Revelation' }
93
93
  }
94
94
  end
@@ -0,0 +1,79 @@
1
+ # -*- coding: utf-8 -*-
2
+ require_relative 'base'
3
+
4
+ module BibleRef
5
+ module Languages
6
+ class Latin < Base
7
+ def books
8
+ {
9
+ 'GEN' => { name: 'Genesis' },
10
+ 'EXO' => { name: 'Exodus' },
11
+ 'LEV' => { name: 'Leviticus' },
12
+ 'NUM' => { name: 'Numeri' },
13
+ 'DEU' => { name: 'Deuteronomium' },
14
+ 'JOS' => { name: 'Josue' },
15
+ 'JDG' => { name: 'Judicum' },
16
+ 'RUT' => { name: 'Ruth' },
17
+ '1SA' => { name: 'Regum I' },
18
+ '2SA' => { name: 'Regum II' },
19
+ '1KI' => { name: 'Regum III' },
20
+ '2KI' => { name: 'Regum IV' },
21
+ '1CH' => { name: 'Paralipomenon I' },
22
+ '2CH' => { name: 'Paralipomenon II' },
23
+ 'EZR' => { name: 'Esdræ' },
24
+ 'NEH' => { name: 'Nehemiæ' },
25
+ 'EST' => { name: 'Tobiæ' },
26
+ 'JOB' => { name: 'Job' },
27
+ 'PSA' => { name: 'Psalmi' },
28
+ 'PRO' => { name: 'Proverbia' },
29
+ 'ECC' => { name: 'Ecclesiastes' },
30
+ 'SNG' => { name: 'Canticum Canticorum' },
31
+ 'ISA' => { name: 'Isaias' },
32
+ 'JER' => { name: 'Jeremias' },
33
+ 'LAM' => { name: 'Lamentationes' },
34
+ 'EZK' => { name: 'Ezechiel' },
35
+ 'DAN' => { name: 'Daniel' },
36
+ 'HOS' => { name: 'Osee' },
37
+ 'JOL' => { name: 'Joël' },
38
+ 'AMO' => { name: 'Amos' },
39
+ 'OBA' => { name: 'Abdias' },
40
+ 'JON' => { name: 'Jonas' },
41
+ 'MIC' => { name: 'Michæa' },
42
+ 'NAM' => { name: 'Nahum' },
43
+ 'HAB' => { name: 'Habacuc' },
44
+ 'ZEP' => { name: 'Sophonias' },
45
+ 'HAG' => { name: 'Aggæus' },
46
+ 'ZEC' => { name: 'Zacharias' },
47
+ 'MAL' => { name: 'Malachias' },
48
+ 'MAT' => { name: 'Matthæus' },
49
+ 'MRK' => { name: 'Marcus' },
50
+ 'LUK' => { name: 'Lucas' },
51
+ 'JHN' => { name: 'Joannes' },
52
+ 'ACT' => { name: 'Actus Apostolorum' },
53
+ 'ROM' => { name: 'ad Romanos' },
54
+ '1CO' => { name: 'ad Corinthios I' },
55
+ '2CO' => { name: 'ad Corinthios II' },
56
+ 'GAL' => { name: 'ad Galatas' },
57
+ 'EPH' => { name: 'ad Ephesios' },
58
+ 'PHP' => { name: 'ad Philippenses' },
59
+ 'COL' => { name: 'ad Colossenses' },
60
+ '1TH' => { name: 'ad Thessalonicenses I' },
61
+ '2TH' => { name: 'ad Thessalonicenses II' },
62
+ '1TI' => { name: 'ad Timotheum I' },
63
+ '2TI' => { name: 'ad Timotheum II' },
64
+ 'TIT' => { name: 'ad Titum' },
65
+ 'PHM' => { name: 'ad Philemonem' },
66
+ 'HEB' => { name: 'ad Hebræos' },
67
+ 'JAS' => { name: 'Jacobi' },
68
+ '1PE' => { name: 'Petri I' },
69
+ '2PE' => { name: 'Petri II' },
70
+ '1JN' => { name: 'Joannis I' },
71
+ '2JN' => { name: 'Joannis II' },
72
+ '3JN' => { name: 'Joannis III' },
73
+ 'JUD' => { name: 'Judæ' },
74
+ 'REV' => { name: 'Apocalypsis' }
75
+ }
76
+ end
77
+ end
78
+ end
79
+ end
@@ -46,7 +46,7 @@ module BibleRef
46
46
  'ZEC' => { match: /^zac/, name: 'Zacarias' },
47
47
  'MAL' => { match: /^mal/, name: 'Malaquias' },
48
48
  'MAT' => { match: /^mat/, name: 'Mateus' },
49
- 'MRK' => { match: /^mar/, name: 'Marcos' },
49
+ 'MRK' => { match: /^(mar|mk)/, name: 'Marcos' },
50
50
  'LUK' => { match: /^lu/, name: 'Lucas' },
51
51
  'JHN' => { match: /^jo/, name: 'João' },
52
52
  'ACT' => { match: /^at/, name: 'Atos' },
@@ -46,7 +46,7 @@ module BibleRef
46
46
  'ZEC' => { match: /^za/, name: 'Zaharia' },
47
47
  'MAL' => { match: /^mal/, name: 'Maleahi' },
48
48
  'MAT' => { match: /^mat/, name: 'Matei' },
49
- 'MRK' => { match: /^mar/, name: 'Marcu' },
49
+ 'MRK' => { match: /^(mar|mk)/, name: 'Marcu' },
50
50
  'LUK' => { match: /^lu/, name: 'Luca' },
51
51
  'JHN' => { match: /^io/, name: 'Ioan' },
52
52
  'ACT' => { match: /^fa/, name: 'Faptele apostolilor' },
@@ -4,14 +4,22 @@ module BibleRef
4
4
  class Parser < Parslet::Parser
5
5
  rule(:refs) do
6
6
  (
7
- (ref_range | ref) >>
8
- (
9
- separator >>
10
- (ref_range | verse_range | ref | verse)
11
- ).repeat
7
+ chapter_range | chapter_and_verse_range
12
8
  ).as(:refs)
13
9
  end
14
10
 
11
+ rule(:chapter_range) do
12
+ chapter >> (separator >> chapter).repeat
13
+ end
14
+
15
+ rule(:chapter_and_verse_range) do
16
+ (ref_range | ref | chapter) >>
17
+ (
18
+ separator >>
19
+ (ref_range | verse_range | ref | verse)
20
+ ).repeat
21
+ end
22
+
15
23
  rule(:ref_range) { (ref.as(:from) >> str("-") >> (ref | verse).as(:to)).as(:range) }
16
24
  rule(:verse_range) { (verse.as(:from) >> str("-") >> verse.as(:to)).as(:range) }
17
25
 
@@ -7,7 +7,7 @@ module BibleRef
7
7
  attr_reader :book, :reference, :language, :canon
8
8
 
9
9
  # Create a new Reference instance by passing in the user-supplied bible reference as a string.
10
- def initialize(reference, language: 'eng', canon: 'protestant')
10
+ def initialize(reference, language: 'eng', canon: 'all')
11
11
  @reference = reference
12
12
  @details = parse
13
13
  @language = language.respond_to?(:book_id) ? language : LANGUAGES.fetch(language.to_s).new
@@ -1,3 +1,3 @@
1
1
  module BibleRef
2
- VERSION = '1.1.2'
2
+ VERSION = '1.4.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: 1.1.2
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Morgan
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-23 00:00:00.000000000 Z
11
+ date: 2020-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parslet
@@ -62,11 +62,13 @@ files:
62
62
  - README.md
63
63
  - lib/bible_ref.rb
64
64
  - lib/bible_ref/canons.rb
65
+ - lib/bible_ref/canons/all.rb
65
66
  - lib/bible_ref/canons/protestant.rb
66
67
  - lib/bible_ref/languages.rb
67
68
  - lib/bible_ref/languages/base.rb
68
69
  - lib/bible_ref/languages/cherokee.rb
69
70
  - lib/bible_ref/languages/english.rb
71
+ - lib/bible_ref/languages/latin.rb
70
72
  - lib/bible_ref/languages/portuguese.rb
71
73
  - lib/bible_ref/languages/romanian.rb
72
74
  - lib/bible_ref/parser.rb
@@ -76,7 +78,7 @@ homepage: https://github.com/seven1m/bible_ref
76
78
  licenses:
77
79
  - MIT
78
80
  metadata: {}
79
- post_install_message:
81
+ post_install_message:
80
82
  rdoc_options: []
81
83
  require_paths:
82
84
  - lib
@@ -91,9 +93,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
93
  - !ruby/object:Gem::Version
92
94
  version: '0'
93
95
  requirements: []
94
- rubyforge_project:
95
- rubygems_version: 2.5.2
96
- signing_key:
96
+ rubygems_version: 3.1.2
97
+ signing_key:
97
98
  specification_version: 4
98
99
  summary: Bible reference parser
99
100
  test_files: []