poefy 1.1.0 → 1.1.1

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
  SHA1:
3
- metadata.gz: 2836cb70692fce83aa7c647d66d5165b786c2a4c
4
- data.tar.gz: 359f87bf030ca881585f696d6bad29cf442e143d
3
+ metadata.gz: '06059d000cd8bcb1337f205e71c7aef33d6cebc5'
4
+ data.tar.gz: 66b55d23d1ed3f633f95d40b6a5cd6f1995a4273
5
5
  SHA512:
6
- metadata.gz: 19f4e4e13177e712efce9919ad4f524a008c6cb257d81d39e3e43ad24b8397107d6265b06ed55da22ed7dafa8b010f4947a2e05251976f6206ff7c5c186be063
7
- data.tar.gz: 9ef68d0b24110653b8d496be8f17618a5558697e426a024a78bb747b8943f2b137935fd1d456de81acd801b16c309166c0b935b917e4feb06e986dedb82bcffb
6
+ metadata.gz: '09fb8bb6486cffe87fc73810e161f3760fd237e8d8c86e79606752751e3748b0914612795cbaa33215282a65274f0373d8477dd60c57a342316b242494641fc2'
7
+ data.tar.gz: dcc401e9907c144d01e4d6cb1042335669a4b762e087b6c07da576eaaab838876b2c56a1732be2643c7a5793f9280700249108564c4ca5956526a064088bae7b
@@ -206,10 +206,6 @@ module Poefy
206
206
  # words as there are lines to be matched.
207
207
  rhymes = nil
208
208
 
209
- # If all the lines include a 'regex' condition,
210
- # then we can specify to only query for matching lines.
211
- regex_all = regex_for_all line_conds
212
-
213
209
  # If all the lines include a 'syllable' condition,
214
210
  # then we can specify to only query for matching lines.
215
211
  begin
@@ -226,7 +222,7 @@ module Poefy
226
222
  # For each rhyme, get all lines and try to sastify all conditions.
227
223
  out = []
228
224
  rhymes.shuffle.each do |rhyme|
229
- out = try_rhyme(conditions, rhyme, min_max, regex_all)
225
+ out = try_rhyme(conditions, rhyme, min_max, line_conds)
230
226
  break if !out.empty?
231
227
  end
232
228
  if out.empty?
@@ -300,14 +296,26 @@ module Poefy
300
296
 
301
297
  # Loop through the rhymes until we find one that works.
302
298
  # (In a reasonable time-frame)
303
- def try_rhyme conditions, rhyme, syllable_min_max = nil, regex_all = nil
299
+ private def try_rhyme conditions, rhyme, syllable_min_max = nil, line_conds = nil
304
300
  output = []
305
301
  lines = @corpus.lines_by_rhyme(rhyme, syllable_min_max)
306
302
 
307
303
  # To reduce the number of permutations, reject lines
308
304
  # that do not match any of the lines regex.
309
- lines.reject! { |i| !(i['line'].match(regex_all)) } if regex_all
305
+ regex_conds = line_conds.map { |i| i[:regex] }
306
+ if !regex_conds.include?(nil) and !regex_conds.include?(//)
307
+ new_lines = []
308
+ [*regex_conds].each do |regex_group|
309
+ possible_lines = lines.dup
310
+ [*regex_group].each do |regex|
311
+ possible_lines.reject! { |i| !(i['line'].match(regex)) }
312
+ end
313
+ new_lines += possible_lines
314
+ end
315
+ lines = new_lines
316
+ end
310
317
 
318
+ # Get a sample from the lines that works for all the conditions.
311
319
  begin
312
320
  Timeout::timeout(2) do
313
321
  output = lines.shuffle.conditional_sample(conditions)
@@ -334,16 +342,6 @@ module Poefy
334
342
  min_max
335
343
  end
336
344
 
337
- # If every line has a regex, then return a regex union.
338
- def regex_for_all line_conds
339
- output = nil
340
- if line_conds.all?{ |i| i[:regex] }
341
- all_regex = line_conds.map{ |i| i[:regex] }
342
- output = Regexp.union all_regex.flatten
343
- end
344
- output
345
- end
346
-
347
345
  end
348
346
 
349
347
  end
data/lib/poefy/version.rb CHANGED
@@ -10,7 +10,7 @@ module Poefy
10
10
  def self.version_number
11
11
  major = 1
12
12
  minor = 1
13
- tiny = 0
13
+ tiny = 1
14
14
  pre = nil
15
15
 
16
16
  string = [major, minor, tiny, pre].compact.join('.')
@@ -18,7 +18,7 @@ module Poefy
18
18
  end
19
19
 
20
20
  def self.version_date
21
- '2017-10-31'
21
+ '2017-11-05'
22
22
  end
23
23
 
24
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: poefy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Thompson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-31 00:00:00.000000000 Z
11
+ date: 2017-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler