cskit 1.1.1 → 1.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 +4 -4
- data/Gemfile +1 -0
- data/History.txt +20 -6
- data/cskit.gemspec +1 -1
- data/lib/cskit/formatters/science_health/science_health_plain_text_formatter.rb +2 -2
- data/lib/cskit/parsers/bible/bible_parser.rb +19 -3
- data/lib/cskit/parsers/bible/bible_tokenizer.rb +0 -2
- data/lib/cskit/parsers/science_health/science_health_parser.rb +12 -1
- data/lib/cskit/readers/science_health_reader.rb +3 -3
- data/lib/cskit/version.rb +1 -1
- data/lib/cskit/volume.rb +1 -5
- data/spec/parsers/bible/bible_parser_spec.rb +22 -0
- metadata +4 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 54b61172da1e6b1de7a0ce4965d4719291eb8d08
|
4
|
+
data.tar.gz: 9d32a03328acfa3c7b6210e1f3f25ce7401f3760
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85b1a4e42f3d0582e022195c9c9e02efea87eb2115a327387c03ee3f8fff85dadd077980a5c4156665844494c7566fb832df48b57c41088224669f2f7087a7eb
|
7
|
+
data.tar.gz: 4463be21b3ccd6d5793843a3e0874aae3169747d6a3b8d3e17d0975f3d8016a2e0ade6d036461223f57de41aa80038392d8551ade516efca56b81c8399d61ab2
|
data/Gemfile
CHANGED
data/History.txt
CHANGED
@@ -1,10 +1,20 @@
|
|
1
|
-
== 1.
|
1
|
+
== 1.2.0
|
2
2
|
|
3
|
-
*
|
3
|
+
* Fix several citation parsing issues.
|
4
|
+
-> Issue causing fragment like "I will" to be interpreted as a book name.
|
5
|
+
-> Issue causing NoMethodError in Science and Health plain text formatter.
|
6
|
+
Method name changed from `start_fragment` to `starter` in v1.1.0.
|
7
|
+
-> Issue causing NoMethodError when parsing Science and Health citations
|
8
|
+
because the `only?` method was not defined on any terminator, broken
|
9
|
+
since v1.1.0.
|
10
|
+
* Fix issue causing the Science and Health reader to only return the first
|
11
|
+
line for paragraph-based citations, eg 583:10.
|
12
|
+
* Fix incorrect parser invocation in Volume base class, broken since v1.1.0.
|
13
|
+
* Reminder: write some blasted tests :/
|
4
14
|
|
5
|
-
== 1.
|
15
|
+
== 1.1.1
|
6
16
|
|
7
|
-
* Fix
|
17
|
+
* Fix bible parser to handle books like "II Chronicles" and "Song of Solomon".
|
8
18
|
|
9
19
|
== 1.1.0
|
10
20
|
|
@@ -12,6 +22,10 @@
|
|
12
22
|
* Add parser tests.
|
13
23
|
* General cleanup.
|
14
24
|
|
15
|
-
== 1.
|
25
|
+
== 1.0.1
|
16
26
|
|
17
|
-
* Fix
|
27
|
+
* Fix preface regex to detect pages starting at vii instead of vi for Science and Health.
|
28
|
+
|
29
|
+
== 1.0.0
|
30
|
+
|
31
|
+
* Birthday!
|
data/cskit.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.version = ::CSKit::VERSION
|
9
9
|
s.authors = ['Cameron Dutro']
|
10
10
|
s.email = ['camertron@gmail.com']
|
11
|
-
s.homepage = 'http://github.com/
|
11
|
+
s.homepage = 'http://github.com/CSOBerkeley/cskit-rb'
|
12
12
|
|
13
13
|
s.description = s.summary = 'Christian Science citation library for Ruby.'
|
14
14
|
|
@@ -31,8 +31,8 @@ module CSKit
|
|
31
31
|
line_text = line.text
|
32
32
|
|
33
33
|
line_text = if line_index == 0
|
34
|
-
if citation_line.
|
35
|
-
index = line_text.index(citation_line.
|
34
|
+
if citation_line.starter
|
35
|
+
index = line_text.index(citation_line.starter)
|
36
36
|
index ? line_text[index..-1] : line_text
|
37
37
|
else
|
38
38
|
matches = line_text.match(SENTENCE_START_REGEX)
|
@@ -91,7 +91,18 @@ module CSKit
|
|
91
91
|
end
|
92
92
|
|
93
93
|
def book
|
94
|
-
|
94
|
+
text
|
95
|
+
end
|
96
|
+
|
97
|
+
def text
|
98
|
+
''.tap do |result|
|
99
|
+
while current && current.type == :text
|
100
|
+
result << "#{current.value} "
|
101
|
+
next_token(:text)
|
102
|
+
end
|
103
|
+
|
104
|
+
result.strip!
|
105
|
+
end
|
95
106
|
end
|
96
107
|
|
97
108
|
def chapter_list
|
@@ -173,8 +184,13 @@ module CSKit
|
|
173
184
|
|
174
185
|
def positional
|
175
186
|
card = cardinality
|
176
|
-
fragment =
|
177
|
-
|
187
|
+
fragment = text
|
188
|
+
|
189
|
+
if fragment.empty?
|
190
|
+
fragment = current.value
|
191
|
+
next_token(:semicolon, :colon, :comma)
|
192
|
+
end
|
193
|
+
|
178
194
|
Positional.new(card, fragment)
|
179
195
|
end
|
180
196
|
|
@@ -28,7 +28,7 @@ module CSKit
|
|
28
28
|
end
|
29
29
|
|
30
30
|
str << ' (only)' if only?
|
31
|
-
str << " #{
|
31
|
+
str << " #{starter}" if starter
|
32
32
|
str
|
33
33
|
end
|
34
34
|
|
@@ -40,6 +40,10 @@ module CSKit
|
|
40
40
|
terminator: terminator ? terminator.to_hash : nil
|
41
41
|
}
|
42
42
|
end
|
43
|
+
|
44
|
+
def only?
|
45
|
+
terminator && terminator.only?
|
46
|
+
end
|
43
47
|
end
|
44
48
|
|
45
49
|
class Positional
|
@@ -76,6 +80,9 @@ module CSKit
|
|
76
80
|
end
|
77
81
|
|
78
82
|
class FragmentTerminator < Positional
|
83
|
+
def only?
|
84
|
+
false
|
85
|
+
end
|
79
86
|
end
|
80
87
|
|
81
88
|
class OnlyTerminator
|
@@ -87,6 +94,10 @@ module CSKit
|
|
87
94
|
{ only: true }
|
88
95
|
end
|
89
96
|
|
97
|
+
def only?
|
98
|
+
true
|
99
|
+
end
|
100
|
+
|
90
101
|
private def initialize
|
91
102
|
end
|
92
103
|
end
|
@@ -82,14 +82,14 @@ module CSKit
|
|
82
82
|
|
83
83
|
def readings_for(citation)
|
84
84
|
citation.lines.map do |citation_line|
|
85
|
-
lines = if citation_line.finish
|
86
|
-
get_line_range(citation_line.start..citation_line.finish, citation.page)
|
87
|
-
else
|
85
|
+
lines = if citation_line.start == citation_line.finish
|
88
86
|
if citation_line.only?
|
89
87
|
[get_line(citation_line.start, citation.page)]
|
90
88
|
else
|
91
89
|
get_paragraph(citation.page, citation_line.start).lines
|
92
90
|
end
|
91
|
+
else
|
92
|
+
get_line_range(citation_line.start..citation_line.finish, citation.page)
|
93
93
|
end
|
94
94
|
|
95
95
|
Reading.new(lines, citation_line)
|
data/lib/cskit/version.rb
CHANGED
data/lib/cskit/volume.rb
CHANGED
@@ -10,17 +10,13 @@ module CSKit
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def parse_citation(citation_text)
|
13
|
-
parser.
|
13
|
+
config[:parser].new(citation_text).parse
|
14
14
|
end
|
15
15
|
|
16
16
|
def readings_for(citation)
|
17
17
|
reader.readings_for(citation)
|
18
18
|
end
|
19
19
|
|
20
|
-
def parser
|
21
|
-
@parser ||= config[:parser].new
|
22
|
-
end
|
23
|
-
|
24
20
|
def reader
|
25
21
|
@reader ||= config[:reader].new(self)
|
26
22
|
end
|
@@ -230,4 +230,26 @@ describe BibleParser do
|
|
230
230
|
})
|
231
231
|
end
|
232
232
|
end
|
233
|
+
|
234
|
+
context 'multiple verses with multi-word starters' do
|
235
|
+
let(:citation_text) { 'John 14:12-14, 16-21 I will, 25-27 (to 1st .)' }
|
236
|
+
|
237
|
+
it 'parses correctly' do
|
238
|
+
expect(parser.parse.to_hash).to eq({
|
239
|
+
book: 'John', chapters: [{
|
240
|
+
chapter_number: 14, verses: [{
|
241
|
+
start: 12, finish: 14, terminator: nil, starter: nil
|
242
|
+
}, {
|
243
|
+
start: 16, finish: 21, terminator: nil, starter: {
|
244
|
+
fragment: 'I will', cardinality: 1
|
245
|
+
}
|
246
|
+
}, {
|
247
|
+
start: 25, finish: 27, starter: nil, terminator: {
|
248
|
+
fragment: '.', cardinality: 1
|
249
|
+
}
|
250
|
+
}]
|
251
|
+
}]
|
252
|
+
})
|
253
|
+
end
|
254
|
+
end
|
233
255
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cskit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cameron Dutro
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -74,7 +74,7 @@ files:
|
|
74
74
|
- spec/parsers/bible/bible_parser_spec.rb
|
75
75
|
- spec/parsers/science_health/science_health_parser_spec.rb
|
76
76
|
- spec/spec_helper.rb
|
77
|
-
homepage: http://github.com/
|
77
|
+
homepage: http://github.com/CSOBerkeley/cskit-rb
|
78
78
|
licenses: []
|
79
79
|
metadata: {}
|
80
80
|
post_install_message:
|
@@ -93,9 +93,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
93
93
|
version: '0'
|
94
94
|
requirements: []
|
95
95
|
rubyforge_project:
|
96
|
-
rubygems_version: 2.
|
96
|
+
rubygems_version: 2.6.13
|
97
97
|
signing_key:
|
98
98
|
specification_version: 4
|
99
99
|
summary: Christian Science citation library for Ruby.
|
100
100
|
test_files: []
|
101
|
-
has_rdoc: true
|