kjdotxml 0.1.1 → 0.2.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
2
  SHA256:
3
- metadata.gz: 9835d96c6c3c4fcbf12196f57c0c7f8ad8e369c0542b1ffb8bbd1f02eb7fd5dd
4
- data.tar.gz: c28661e5fae357962cd14b59ca8ae507fc780baddc639babb9f6c023c11f0466
3
+ metadata.gz: a4e7b1b5b805baba3ea773f3d722b2c93d1a5da60eaf03b9ed6bc3009c89375a
4
+ data.tar.gz: f0ff7b1ac1e497034f1f9a4e9299cf4c7c004827e30cede18b71758f26625cc8
5
5
  SHA512:
6
- metadata.gz: 7bfa7481e9bd9a2c459f92346c58a1de750b10974e5d5543394865a4fcf33a1c5c0d8240445e6004d1b0e8b33106bed801645b92546f9b23713ac9acc1f60ea2
7
- data.tar.gz: 55206e69e0a81f30d3b4a5947558ec4bc4ee4f6182c61939d6291ef1e25eb660e4310f17b60515a6957eb5d186b9648264cf23ff9ddf777085211b51e7969c92
6
+ metadata.gz: e14d1410c7648573d99ab47a65115fd6a0cf4d9d03baf8dd59f2761f0843dcbd8fce2e112f0c1bddcc274dca309343302fa54d113774cf903c2a0fd64579856e
7
+ data.tar.gz: 9fc928be917d0411910d9c79f52db1e7c4ddd4d962dd9f9ed4db17cfb3bee60ad5c363abf5077bf15a2686293695429be5347f9a19d0c9d75da86f825186c919
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/kjdotxml.rb CHANGED
@@ -3,6 +3,8 @@
3
3
  # file: kjdotxml.rb
4
4
 
5
5
  require 'rexle'
6
+ require 'abbrev'
7
+ require 'novowels'
6
8
 
7
9
 
8
10
  BOOKS = [
@@ -78,15 +80,21 @@ class KjDotXmlError < Exception
78
80
  end
79
81
 
80
82
  class KjDotXml
83
+
84
+ attr_reader :booklist
81
85
 
82
- def initialize(title=nil)
86
+ def initialize(title=nil, debug: false)
87
+
88
+ @debug = debug
89
+
83
90
  book(title) if title
91
+ @booklist = BOOKS
92
+
84
93
  end
85
94
 
86
95
  def book(s)
87
96
 
88
97
  filename = s.downcase.gsub(/\s/,'-') + '.xml'
89
- #filepath = File.join('/tmp', filename)
90
98
  filepath = File.join(File.dirname(__FILE__), '..', 'xml', filename)
91
99
 
92
100
  if File.exists? filepath then
@@ -100,11 +108,78 @@ class KjDotXml
100
108
 
101
109
  end
102
110
 
103
- def books()
104
- BOOKS
111
+ def books(ref=nil)
112
+
113
+ return @booklist.map {|x| books(x) } unless ref
114
+
115
+ index = ref.to_s[/^\d+$/] ? (ref.to_i - 1) : find_book(ref.downcase)
116
+ puts 'index: ' + index.inspect if @debug
117
+
118
+ title = @booklist[index]
119
+
120
+
105
121
  end
106
122
 
123
+ def verses(s)
124
+
125
+ r = s.match(/(?<book>\w+)\s+(?<chapter>\d+)[,\:]?\s*(?<verses>.*)/)
126
+ verses2 = r[:verses] =~ /(?:\.\.|,|-)/ ? Range.new(*r[:verses]\
127
+ .split(/(?:\.\.|,|-)/).map(&:to_i)).to_a : r[:verses]
128
+ puts 'r[:book]: ' + r[:book].inspect if @debug
129
+
130
+ doc = book(books(r[:book]))
131
+
132
+ puts 'verses2: ' + verses2.inspect if @debug
133
+
134
+ if verses2.is_a? String then
135
+
136
+ [
137
+ doc.root.element("chapter[@no='#{r[:chapter]}']/verse" +
138
+ "[@no='#{verses2}']")
139
+ ]
140
+
141
+ elsif verses2.is_a? Array
142
+
143
+ verses2.map do |verse|
144
+ doc.root.element("chapter[@no='#{r[:chapter]}']/verse[@no='#{verse}']")
145
+ end
146
+
147
+ end
148
+ end
149
+
150
+
107
151
  def to_doc()
108
152
  @doc
109
153
  end
154
+
155
+ private
156
+
157
+ def find_book(ref)
158
+
159
+ puts 'find_book/ref: ' + ref.inspect if @debug
160
+
161
+ h = @booklist.inject({}) do |r,rawx|
162
+
163
+ x = rawx.downcase
164
+ a3 = [
165
+ x,
166
+ x.sub(/(\d)\s/,'\1'),
167
+ x.sub(/(\d)\s/,'\1-'),
168
+ NoVowels.compact(x),
169
+ NoVowels.compact(x.sub(/(\d)\s/,'\1')),
170
+ NoVowels.compact(x.sub(/(\d)\s/,'\1-')),
171
+ ]
172
+ #puts 'a3: ' + a3.inspect if @debug
173
+ a3b = a3.uniq.abbrev.keys.reject {|x| x[/^\s*\d+$/] or x.length < 2}
174
+ r.merge(rawx => a3b)
175
+
176
+ end
177
+ #puts 'h: ' + h.inspect if @debug
178
+ r = h.find {|key, val| val.grep(/#{ref}/).any? }
179
+ r = h.find {|key, vl| vl.grep(/#{ref.sub(/\d+\s*/,'')}/).any? } unless r
180
+ puts '_r: ' + r.inspect if @debug
181
+ @booklist.index r.first if r
182
+
183
+ end
184
+
110
185
  end
data.tar.gz.sig CHANGED
@@ -1,5 +1,3 @@
1
- *yQg��ls���2��]2��-�X}H�Q����"����'�S�yTA�{�m��+��bҌ_
2
- c��c
3
- 4ܜ���7ڝ������oo�p��T����\7��5�����:�ŕ���:Lr�ئ�E�@UTWպ��0G��y�T�t�,H�_���
4
- �^՗�$[��=+�(o]�ޟ�'̝P���5۸-v��K%�
5
- �+H}���`I(�p�ґ߲�4�����v[2
1
+ OG.k���?3{3����6R8�Cpz5xYd�>n�:��;�* v�Ɉ����ž��
2
+ %�@�Z���3p�4��N������n���ʙDb��v� УX,P� yE�9Ȭ��s�ړD�@������9v ��xq�
3
+ �p��b7��g� w`�1��u�#
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kjdotxml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -36,7 +36,7 @@ cert_chain:
36
36
  OXTrn4UmSRUyQHWNI24lThlPaWZJ6ULj4BtuALPaaM/cWYRhRaE3NiLF/SFiyzGg
37
37
  JYoHu6HVj1QoC6XZVMnuByx8sBhH1e/kRkk=
38
38
  -----END CERTIFICATE-----
39
- date: 2022-11-01 00:00:00.000000000 Z
39
+ date: 2022-11-02 00:00:00.000000000 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rexle
@@ -58,6 +58,26 @@ dependencies:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: 1.5.14
61
+ - !ruby/object:Gem::Dependency
62
+ name: novowels
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '0.1'
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 0.1.3
71
+ type: :runtime
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '0.1'
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 0.1.3
61
81
  description:
62
82
  email: digital.robertson@gmail.com
63
83
  executables: []
metadata.gz.sig CHANGED
Binary file