kjdotxml 0.1.1 → 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
  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