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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/kjdotxml.rb +79 -4
- data.tar.gz.sig +3 -5
- metadata +22 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a4e7b1b5b805baba3ea773f3d722b2c93d1a5da60eaf03b9ed6bc3009c89375a
|
4
|
+
data.tar.gz: f0ff7b1ac1e497034f1f9a4e9299cf4c7c004827e30cede18b71758f26625cc8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
-
|
2
|
-
|
3
|
-
|
4
|
-
�^�$[��=+�(o]�ޟ�'̝P���5۸-v��K%�
|
5
|
-
�+H}���`I(�p�ґ߲�4�����v[2
|
1
|
+
OG.k���?3{3����6�R8�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.
|
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-
|
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
|