scripref 0.8.0 → 0.9.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
  SHA1:
3
- metadata.gz: 373b4b572bcb6fadc58872590bc98e75f5bebe3c
4
- data.tar.gz: be215c400b76c7327bdeb63b1bff52917c854eca
3
+ metadata.gz: a7969fae6655c502970897c3a7c75e5542e35f70
4
+ data.tar.gz: 4a71db57ad05ad5be040812473904d8db8dfa712
5
5
  SHA512:
6
- metadata.gz: fc24a4742a42477c252edd1c06fb52f2b41bb6411479556921b39e2512082accc7ce9270d0d87dc6b86032ba13847f3bf9074268b18ac0cce789cd90faf8918c
7
- data.tar.gz: 31e56ca2e1000abc2a8bdcdf6b7af0c99b6c49e604dbdd0f530dd02416b4e1d188884ff4428e466c3b367439357876c4b66d4244ca61e42e6bfb4a59de283608
6
+ metadata.gz: 54f273d53bf3e1ebdab926508c7763ad97542088fdaa9a3b65e5d6fefe29c4e577fd3da6931be41e646c84cf87729347ad27be84d5e8790a71ad9794b607409f
7
+ data.tar.gz: 6ce53ebcd0a65466877bbc57c22c7d0e663522402f30dea5950df31fbfa0ab2debb37afd111b88653cacf30a8d01fe66929313d9ea1b7fe856380452ae368ff8
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ 0.9.0
2
+ Differentiate between verse addons and postfixes for one ore more following verses.
3
+ New methods Parser#postfix_one_following_verse and Parser#postfix_more_following_verses.
4
+
5
+
1
6
  0.8.0
2
7
  Formatting of verse addons implemented.
3
8
  Refactoring: Rename methods in Formatter to distinguish between format_* and process_*.
@@ -43,7 +43,19 @@ module Scripref
43
43
  VERSE_SEP_RE = /,\s*/o
44
44
 
45
45
  # Regular expression to match addons for a verse.
46
- VERSE_ADDON_RE = /([ab]|ff?)\s*/o
46
+ VERSE_ADDON_RE = /[ab]\s*/o
47
+
48
+ # Postfix for one following verse
49
+ POSTFIX_ONE_FOLLOWING_VERSE = 'f'
50
+
51
+ # Regular expression to match postfix for one following verse
52
+ POSTFIX_ONE_FOLLOWING_VERSE_RE = /f\b\s*/o
53
+
54
+ # Postfix for more following verses
55
+ POSTFIX_MORE_FOLLOWING_VERSES = 'ff'
56
+
57
+ # Regular expression to match postfix for more following verses
58
+ POSTFIX_MORE_FOLLOWING_VERSES_RE = /ff\b\s*/o
47
59
 
48
60
  pass = '([1-3]\s*)?[A-Z][a-z]+\.?\s*(\d+\s*[,.\-]\s*)*\d+\s*'
49
61
 
@@ -110,6 +110,14 @@ module Scripref
110
110
 
111
111
  def process_v2
112
112
  v2 = @pass.v2
113
+ case v2
114
+ when :f
115
+ @result << postfix_one_following_verse
116
+ return
117
+ when :ff
118
+ @result << postfix_more_following_verses
119
+ return
120
+ end
113
121
  if v2 && (@changed || @last_v != v2)
114
122
  if @hyphen
115
123
  if ! book_has_only_one_chapter?(@pass.b2)
@@ -40,7 +40,19 @@ module Scripref
40
40
  VERSE_SEP_RE = /\.\s*/o
41
41
 
42
42
  # Regular expression to match addons for a verse.
43
- VERSE_ADDON_RE = /([ab]|ff?)\s*/o
43
+ VERSE_ADDON_RE = /[ab]\s*/o
44
+
45
+ # Postfix for one following verse
46
+ POSTFIX_ONE_FOLLOWING_VERSE = 'f'
47
+
48
+ # Regular expression to match postfix for one following verse
49
+ POSTFIX_ONE_FOLLOWING_VERSE_RE = /f\b\s*/o
50
+
51
+ # Postfix for more following verses
52
+ POSTFIX_MORE_FOLLOWING_VERSES = 'ff'
53
+
54
+ # Regular expression to match postfix for more following verses
55
+ POSTFIX_MORE_FOLLOWING_VERSES_RE = /ff\b\s*/o
44
56
 
45
57
  pass = '([1-5]\.?\s*)?[A-Z][a-zäöü]+\.?\s*(\d+\s*[,.\-]\s*)*\d+\s*'
46
58
 
@@ -29,7 +29,7 @@ module Scripref
29
29
  # for example {'Phil' => 'Philipper'}
30
30
  # usual overwritten in Mixins
31
31
  def special_abbrev_mapping
32
- Hash.new
32
+ @special_abbrev_mapping ||= {}
33
33
  end
34
34
 
35
35
  # Parsing a string of a scripture reference
@@ -93,12 +93,11 @@ module Scripref
93
93
  @v1 = @v2 = s.to_i
94
94
 
95
95
  if addon = verse_addon
96
- case addon
97
- when :f, :ff
98
- @v2 = addon
99
- when :a, :b, :c
100
- @a1 = addon
101
- end
96
+ @a1 = addon
97
+ end
98
+
99
+ if postfix = verse_postfix
100
+ @v2 = postfix
102
101
  end
103
102
 
104
103
  if hyphen
@@ -156,10 +155,7 @@ module Scripref
156
155
  @v2 = s.to_i
157
156
 
158
157
  if addon = verse_addon
159
- case addon
160
- when :a, :b, :c
161
- @a2 = addon
162
- end
158
+ @a2 = addon
163
159
  end
164
160
 
165
161
  if verse_sep
@@ -232,6 +228,17 @@ module Scripref
232
228
  end
233
229
  end
234
230
 
231
+ # try to parse postfixes for verse
232
+ def verse_postfix
233
+ s = (scan(postfix_one_following_verse_re) or scan(postfix_more_following_verses_re))
234
+ if s
235
+ @text << s
236
+ s.to_sym
237
+ else
238
+ nil
239
+ end
240
+ end
241
+
235
242
  def push_passage
236
243
  @result << Passage.new(@text, @b1, @c1, @v1, @b2, @c2, @v2, a1: @a1, a2: @a2)
237
244
  @text = ''
data/lib/scripref.rb CHANGED
@@ -8,7 +8,7 @@ require 'scripref/german'
8
8
 
9
9
  module Scripref
10
10
 
11
- VERSION = '0.8.0'
11
+ VERSION = '0.9.0'
12
12
 
13
13
  Passage = Struct.new(:text, :b1, :c1, :v1, :b2, :c2, :v2, :a1, :a2) do
14
14
 
@@ -120,6 +120,18 @@ class TestFormatter < Test::Unit::TestCase
120
120
  check_formatting
121
121
  end
122
122
 
123
+ def test_postfix_one_following_verse
124
+ @german = 'Markus 2,2f'
125
+ @english = 'Mark 2:2f'
126
+ check_formatting
127
+ end
128
+
129
+ def test_postfix_more_following_verses
130
+ @german = 'Markus 2,2ff'
131
+ @english = 'Mark 2:2ff'
132
+ check_formatting
133
+ end
134
+
123
135
  private
124
136
 
125
137
  def check_formatting
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scripref
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Friedrich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-14 00:00:00.000000000 Z
11
+ date: 2016-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rim