bible_ref_parser 0.1.0 → 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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 925e15f2c8fe0edb168af8bb3037d888fadec26ea67b9cdf5204be3ed0f2b00d
|
|
4
|
+
data.tar.gz: a6dc3b012dbc430302a4b75d83afb3c003042c1233b002f41eb921628d61226c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 96aad3474367886425c9eaa962ea0a00885a35481b1e85ea12f790fafef0b40a09270cae2aa02f805fbb4b1565ddcc9c0182c1f78e24b1e05e8f1de58db7527d
|
|
7
|
+
data.tar.gz: e03fe4f88db255410405296c1df3632dbc30dc370de075bbb258aa7d994f3fb4e203ac869e88aa7ad89b4094eec5ab678dee276675cbe1966c57011a67107ec6
|
|
@@ -1,35 +1,45 @@
|
|
|
1
|
+
require "forwardable"
|
|
2
|
+
|
|
1
3
|
module BibleRefParser
|
|
2
4
|
class BibleReferenceText
|
|
5
|
+
extend Forwardable
|
|
3
6
|
include Enumerable
|
|
4
7
|
|
|
8
|
+
attr_reader :segments
|
|
9
|
+
|
|
10
|
+
def_delegators :segments, :each, :size, :empty?, :[], :last
|
|
11
|
+
alias_method :length, :size
|
|
12
|
+
|
|
5
13
|
def initialize(text)
|
|
6
14
|
raise InvalidInputError, "Expected a string, got #{text.class}" unless text.respond_to?(:to_str)
|
|
7
|
-
@
|
|
15
|
+
@text = text.to_str
|
|
8
16
|
@segments = parse_segments
|
|
9
17
|
end
|
|
10
18
|
|
|
11
|
-
def segments
|
|
12
|
-
@segments || []
|
|
13
|
-
end
|
|
14
|
-
|
|
15
19
|
def references
|
|
16
|
-
segments.
|
|
20
|
+
segments.filter_map(&:bible_reference)
|
|
17
21
|
end
|
|
18
22
|
|
|
19
|
-
def
|
|
20
|
-
segments.
|
|
23
|
+
def text_with_references
|
|
24
|
+
segments.map(&:to_s)
|
|
21
25
|
end
|
|
22
26
|
|
|
23
27
|
def to_s
|
|
24
28
|
segments.map(&:to_s).join
|
|
25
29
|
end
|
|
26
30
|
|
|
31
|
+
def inspect
|
|
32
|
+
displayed = segments.first(10).map(&:inspect)
|
|
33
|
+
displayed << "..." if segments.size > 10
|
|
34
|
+
"#<#{self.class} text=#{@text.inspect} segments=[#{displayed.join(", ")}]>"
|
|
35
|
+
end
|
|
36
|
+
|
|
27
37
|
private
|
|
28
38
|
|
|
29
39
|
def parse_segments
|
|
30
|
-
SegmentParser.new.parse(@
|
|
40
|
+
SegmentParser.new.parse(@text)
|
|
31
41
|
rescue Parslet::ParseFailed
|
|
32
|
-
|
|
42
|
+
[Segment.new(:text, @text, 0...@text.length)]
|
|
33
43
|
end
|
|
34
44
|
end
|
|
35
45
|
end
|
|
@@ -20,6 +20,10 @@ module BibleRefParser
|
|
|
20
20
|
original_text
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
+
def inspect
|
|
24
|
+
"#<#{self.class} type=:#{type} text=\"#{original_text}\">"
|
|
25
|
+
end
|
|
26
|
+
|
|
23
27
|
# @return [Boolean] true if this is a Bible reference segment
|
|
24
28
|
def reference?
|
|
25
29
|
type == :reference
|
|
@@ -30,6 +34,17 @@ module BibleRefParser
|
|
|
30
34
|
type == :text
|
|
31
35
|
end
|
|
32
36
|
|
|
37
|
+
# @return [BibleReference, nil] a BibleReference for reference segments, nil for text
|
|
38
|
+
def bible_reference
|
|
39
|
+
return nil unless reference?
|
|
40
|
+
|
|
41
|
+
BibleReference.new(
|
|
42
|
+
text: original_text,
|
|
43
|
+
start_offset: position.begin,
|
|
44
|
+
end_offset: position.end
|
|
45
|
+
)
|
|
46
|
+
end
|
|
47
|
+
|
|
33
48
|
private
|
|
34
49
|
|
|
35
50
|
def validate!
|
data/lib/bible_ref_parser.rb
CHANGED
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bible_ref_parser
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Fabio Papa
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: parslet
|
|
@@ -137,6 +137,7 @@ files:
|
|
|
137
137
|
- ai_artifacts/spec.md
|
|
138
138
|
- ai_artifacts/todo.md
|
|
139
139
|
- lib/bible_ref_parser.rb
|
|
140
|
+
- lib/bible_ref_parser/bible_reference.rb
|
|
140
141
|
- lib/bible_ref_parser/bible_reference_text.rb
|
|
141
142
|
- lib/bible_ref_parser/books.rb
|
|
142
143
|
- lib/bible_ref_parser/parser.rb
|
|
@@ -166,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
166
167
|
- !ruby/object:Gem::Version
|
|
167
168
|
version: '0'
|
|
168
169
|
requirements: []
|
|
169
|
-
rubygems_version: 3.6.
|
|
170
|
+
rubygems_version: 3.6.8
|
|
170
171
|
specification_version: 4
|
|
171
172
|
summary: A parser for Bible references
|
|
172
173
|
test_files: []
|