poefy 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,464 @@
1
+ #!/usr/bin/env ruby
2
+ # Encoding: UTF-8
3
+
4
+ ################################################################################
5
+
6
+ describe Poefy::PoefyGen do
7
+
8
+ before(:all) do
9
+ @root = File.expand_path('../../', __FILE__)
10
+ end
11
+ after(:all) do
12
+ db_file = "#{@root}/data/spec_test_tiny.db"
13
+ File.delete(db_file) if File.exists?(db_file)
14
+ end
15
+
16
+ describe "using tiny dataset spec_test_tiny.db / spec_test_tiny.txt" do
17
+
18
+ file_txt = "spec_test_tiny.txt"
19
+ file_db = "spec_test_tiny.db"
20
+
21
+ before(:each) do
22
+ @poefy = Poefy::PoefyGen.new(file_db, { proper: false })
23
+ end
24
+ after(:each) do
25
+ @poefy.close
26
+ end
27
+ it "initialised object not nil" do
28
+ expect(@poefy).to_not be_nil
29
+ end
30
+
31
+ describe "#make_database( '#{@root}/data/#{file_txt}', true )" do
32
+ it "should make the database '#{@root}/data/#{file_db}" do
33
+ db_file = "#{@root}/data/#{file_db}"
34
+ File.delete(db_file) if File.exists?(db_file)
35
+ @poefy.make_database "#{@root}/data/#{file_txt}", true
36
+ expect(@poefy.db.exists?).to be true
37
+ expect(File.exists?(db_file)).to be true
38
+ end
39
+ end
40
+
41
+ describe ":rhyme option" do
42
+
43
+ describe "should return nil" do
44
+ it "({ })" do
45
+ poem = @poefy.poem
46
+ expect(poem).to be_nil
47
+ end
48
+ it "({ rhyme: nil })" do
49
+ poem = @poefy.poem ({ rhyme: nil })
50
+ expect(poem).to be_nil
51
+ end
52
+ it "({ rhyme: ' ' })" do
53
+ poem = @poefy.poem ({ rhyme: ' ' })
54
+ expect(poem).to be_nil
55
+ end
56
+ it "({ rhyme: '' })" do
57
+ poem = @poefy.poem ({ rhyme: '' })
58
+ expect(poem).to be_nil
59
+ end
60
+ end
61
+
62
+ describe "should return correct number of lines" do
63
+ rhymes = %w{a b z A aa ab zz AA AB AA1 A1 B1 Z1 AB1 A1A1A1A1B1B1B1B1B1}
64
+ rhymes += ['A1A1A1 A1A1A1 B1B1B1B1B1B1','a b c a b c']
65
+ rhymes += [' abc','abc ',' abc ']
66
+ rhymes += ['n aaa n','n aXXXa N1']
67
+ rhymes.each do |i|
68
+ it "({ rhyme: '#{i}' })" do
69
+ poem = @poefy.poem ({ rhyme: i })
70
+ expect(poem.count).to be i.gsub(/[0-9]/,'').length
71
+ end
72
+ end
73
+ end
74
+
75
+ describe "should accept characters other than number" do
76
+ rhymes = %w{. , : .. ., ,, :: (()) @ ~ <<>< A1A1A1...a;}
77
+ rhymes.each do |i|
78
+ it "({ rhyme: '#{i}' })" do
79
+ poem = @poefy.poem ({ rhyme: i })
80
+ expect(poem.count).to be i.gsub(/[0-9]/,'').length
81
+ end
82
+ end
83
+ end
84
+
85
+ describe "should be nil if can't parse rhyme string" do
86
+ rhymes = %w{a1 b1 ab1 Ab1 AAAAABb1 1 1111 1122 11221 ;;::1. }
87
+ rhymes += ['AA Bb1','11 11','11 1 1','..1.']
88
+ rhymes.each do |i|
89
+ it "({ rhyme: '#{i}' })" do
90
+ poem = @poefy.poem ({ rhyme: i })
91
+ expect(poem).to be_nil
92
+ end
93
+ end
94
+ end
95
+
96
+ describe "should be nil if can't complete rhyme string" do
97
+ rhymes = %w{aaaaaa abcd aaaaabbbbb}
98
+ rhymes.each do |i|
99
+ it "({ rhyme: '#{i}' })" do
100
+ poem = @poefy.poem ({ rhyme: i })
101
+ expect(poem).to be_nil
102
+ end
103
+ end
104
+ end
105
+
106
+ describe "should correctly repeat uppercase lines" do
107
+ lines = 200
108
+ it "({ rhyme: 'A' * #{lines} })" do
109
+ poem = @poefy.poem ({ rhyme: 'A' * lines })
110
+ expect(poem.count).to be lines
111
+ expect(poem.uniq.count).to be 1
112
+ end
113
+ it "({ rhyme: ('A'..'C').to_a.map { |i| i * #{lines} }.join })" do
114
+ rhyme = ('A'..'C').to_a.map { |i| i * lines }.join
115
+ poem = @poefy.poem ({ rhyme: rhyme })
116
+ expect(poem.count).to be lines * 3
117
+ expect(poem.uniq.count).to be 3
118
+ end
119
+ end
120
+
121
+ describe "should be nil if can't complete repeating rhyme string" do
122
+ lines = 200
123
+ it "({ rhyme: ('A'..'D').to_a.map { |i| i * #{lines} }.join })" do
124
+ rhyme = ('A'..'D').to_a.map { |i| i * lines }.join
125
+ poem = @poefy.poem ({ rhyme: rhyme })
126
+ expect(poem).to be_nil
127
+ end
128
+ end
129
+
130
+ end
131
+
132
+ describe ":form option" do
133
+
134
+ describe "should return correct number of lines" do
135
+ it "({ form: :default })" do
136
+ poem = @poefy.poem ({ form: :default })
137
+ expect(poem.count).to be 1
138
+ end
139
+ end
140
+
141
+ describe "should be nil if given a named form it can't fulfil" do
142
+ it "({ form: 'sonnet' })" do
143
+ poem = @poefy.poem ({ form: 'sonnet' })
144
+ expect(poem).to be_nil
145
+ end
146
+ it "({ form: :villanelle })" do
147
+ poem = @poefy.poem ({ form: :villanelle })
148
+ expect(poem).to be_nil
149
+ end
150
+ end
151
+
152
+ describe "should be nil if given a junk named form" do
153
+ it "({ form: 'sonnet_junk' })" do
154
+ poem = @poefy.poem ({ form: 'sonnet_junk' })
155
+ expect(poem).to be_nil
156
+ end
157
+ it "({ form: :not_a_form })" do
158
+ poem = @poefy.poem ({ form: :not_a_form })
159
+ expect(poem).to be_nil
160
+ end
161
+ it "({ form: :not_a_form, indent: '0010' })" do
162
+ poem = @poefy.poem ({ form: :not_a_form, indent: '0010' })
163
+ expect(poem).to be_nil
164
+ end
165
+ end
166
+
167
+ describe "should be valid if given a junk named form, and a rhyme" do
168
+ it "({ form: :not_a_form, rhyme: 'abcb' })" do
169
+ poem = @poefy.poem ({ form: :not_a_form, rhyme: 'abcb' })
170
+ expect(poem.count).to be 4
171
+ end
172
+ end
173
+
174
+ describe "should overwrite a named form if another option is specified" do
175
+ it "({ form: 'default', rhyme: 'ab' })" do
176
+ poem = @poefy.poem ({ form: 'default', rhyme: 'ab' })
177
+ expect(poem.count).to be 2
178
+ end
179
+ it "({ form: :villanelle, rhyme: 'abcb' })" do
180
+ poem = @poefy.poem ({ form: :villanelle, rhyme: 'abcb' })
181
+ expect(poem.count).to be 4
182
+ end
183
+ end
184
+ end
185
+ end
186
+
187
+ ##############################################################################
188
+
189
+ describe "using dataset shakespeare.db / shakespeare_sonnets.txt" do
190
+
191
+ file_txt = "shakespeare_sonnets.txt"
192
+ file_db = "shakespeare.db"
193
+
194
+ # All the Shakespeare lines are pentameter, so some forms should fail.
195
+ forms = Poefy::PoeticForms::POETIC_FORMS
196
+ forms_fail = [:limerick, :haiku, :common, :ballad]
197
+ forms_pass = forms.keys - forms_fail
198
+
199
+ before(:each) do
200
+ @poefy = Poefy::PoefyGen.new(file_db, { proper: false })
201
+ end
202
+
203
+ it "initialised object not nil" do
204
+ expect(@poefy).to_not be_nil
205
+ end
206
+
207
+ describe "#make_database( '#{@root}/data/#{file_txt}', true )" do
208
+ it "should make the database '#{@root}/data/#{file_db}" do
209
+ db_file = "#{@root}/data/#{file_db}"
210
+ # File.delete(db_file) if File.exists?(db_file)
211
+ input = `sed '/[a-z]/!d' #{@root}/data/#{file_txt}`
212
+ @poefy.make_database input
213
+ expect(@poefy.db.exists?).to be true
214
+ expect(File.exists?(db_file)).to be true
215
+ end
216
+ end
217
+
218
+ describe "using form string" do
219
+ describe "should return correct number of lines" do
220
+
221
+ # Make sure each form's lines match the expected output.
222
+ # Generate a few to be sure.
223
+ forms_pass.each do |form|
224
+ it "({ form: #{form} })" do
225
+ 10.times do
226
+ poem = @poefy.poem ({ form: form })
227
+ expect(poem.count).to satisfy do |c|
228
+ [*forms[form][:rhyme]].map do |r|
229
+ r.gsub(/[0-9]/,'').length
230
+ end.include?(c)
231
+ end
232
+ end
233
+ end
234
+ end
235
+ end
236
+
237
+ describe "should fail to be created" do
238
+ forms_fail.each do |form|
239
+ it "({ form: #{form} })" do
240
+ 4.times do
241
+ poem = @poefy.poem ({ form: form })
242
+ expect(poem).to be_nil
243
+ end
244
+ end
245
+ end
246
+ end
247
+ end
248
+ end
249
+
250
+ ##############################################################################
251
+
252
+ describe "using dataset whitman.db / whitman_leaves.txt" do
253
+
254
+ file_txt = "whitman_leaves.txt"
255
+ file_db = "whitman.db"
256
+
257
+ # There's a good mix of syllable count, so all forms should pass.
258
+ forms = Poefy::PoeticForms::POETIC_FORMS
259
+ forms_pass = forms.keys
260
+
261
+ before(:each) do
262
+ @poefy = Poefy::PoefyGen.new(file_db, { proper: false })
263
+ end
264
+
265
+ it "initialised object not nil" do
266
+ expect(@poefy).to_not be_nil
267
+ end
268
+
269
+ describe "#make_database( '#{@root}/data/#{file_txt}', true )" do
270
+ it "should make the database '#{@root}/data/#{file_db}" do
271
+ db_file = "#{@root}/data/#{file_db}"
272
+ # File.delete(db_file) if File.exists?(db_file)
273
+ input = `sed '/[a-z]/!d' #{@root}/data/#{file_txt}`
274
+ @poefy.make_database input
275
+ expect(@poefy.db.exists?).to be true
276
+ expect(File.exists?(db_file)).to be true
277
+ end
278
+ end
279
+
280
+ describe "using form string" do
281
+ describe "should return correct number of lines" do
282
+
283
+ # Make sure each form's lines match the expected output.
284
+ # Generate a few to be sure.
285
+ forms_pass.each do |form|
286
+ it "({ form: #{form} })" do
287
+ 10.times do
288
+ poem = @poefy.poem ({ form: form })
289
+ expect(poem.count).to satisfy do |c|
290
+ [*forms[form][:rhyme]].map do |r|
291
+ r.gsub(/[0-9]/,'').length
292
+ end.include?(c)
293
+ end
294
+ end
295
+ end
296
+ end
297
+ end
298
+ end
299
+
300
+ describe "using syllable string" do
301
+
302
+ it "({ rhyme: 'abcb defe', syllable: '[8,6,8,6,0,8,6,8,6]' })" do
303
+ options = {
304
+ rhyme: 'abcb defe',
305
+ syllable: '[8,6,8,6,0,8,6,8,6]'
306
+ }
307
+ poem = @poefy.poem (options)
308
+ expect(poem.count).to be options[:rhyme].length
309
+ end
310
+
311
+ it "({ rhyme: 'abcb defe', syllable: '[8,6,8,6,8,6,8,6]' })" do
312
+ options = {
313
+ rhyme: 'abcb defe',
314
+ syllable: '[8,6,8,6,8,6,8,6]'
315
+ }
316
+ poem = @poefy.poem (options)
317
+ expect(poem.count).to be options[:rhyme].length
318
+ end
319
+ end
320
+ end
321
+
322
+ ##############################################################################
323
+
324
+ describe "#transform_string_syllable" do
325
+
326
+ # Singleton which includes the method.
327
+ # Make the private methods public.
328
+ let(:obj) do
329
+ class Sing
330
+ include Poefy::PoeticForms
331
+ include Poefy::StringManipulation
332
+ public *private_instance_methods
333
+ end.new
334
+ end
335
+ describe "using rhyme string 'aabba'" do
336
+ input_and_output = [
337
+ ['10',
338
+ {1=>10,2=>10,3=>10,4=>10,5=>10}],
339
+ ['9,10,11',
340
+ {1=>[9,10,11],2=>[9,10,11],3=>[9,10,11],4=>[9,10,11],5=>[9,10,11]}],
341
+ ['[8,8,5,5,8]',
342
+ {1=>8,2=>8,3=>5,4=>5,5=>8}],
343
+ ['[[8,9],[8,9],[4,5,6],[4,5,6],[8,9]]',
344
+ {1=>[8,9],2=>[8,9],3=>[4,5,6],4=>[4,5,6],5=>[8,9]}],
345
+ ['{1:8,2:8,3:5,4:5,5:8}',
346
+ {1=>8,2=>8,3=>5,4=>5,5=>8}],
347
+ ['{1:8,2:8,3:5,5:8}',
348
+ {1=>8,2=>8,3=>5,4=>0,5=>8}],
349
+ ['{0:99,1:8,2:8,3:5,5:8}',
350
+ {1=>8,2=>8,3=>5,4=>99,5=>8}],
351
+ ['{1:[8,9],2:[8,9],3:[4,5,6],4:[4,5,6],5:[8,9]}',
352
+ {1=>[8,9],2=>[8,9],3=>[4,5,6],4=>[4,5,6],5=>[8,9]}],
353
+ ['{1:[8,9],2:[8,9],3:[4,5,6],5:[8,9]}',
354
+ {1=>[8,9],2=>[8,9],3=>[4,5,6],4=>0,5=>[8,9]}],
355
+ ['{0:99,1:[8,9],2:[8,9],3:[4,5,6],5:[8,9]}',
356
+ {1=>[8,9],2=>[8,9],3=>[4,5,6],4=>99,5=>[8,9]}],
357
+ ['{0:[8,9],3:[4,5,6],4:[4,5,6]}',
358
+ {1=>[8,9],2=>[8,9],3=>[4,5,6],4=>[4,5,6],5=>[8,9]}],
359
+ ['{1:8,5:8}',
360
+ {1=>8,2=>0,3=>0,4=>0,5=>8}],
361
+ ['{1:8,2:8,3:5,-2:5,-1:8}',
362
+ {1=>8,2=>8,3=>5,4=>5,5=>8}]
363
+ ]
364
+ input_and_output.each do |pair|
365
+ it "syllable: #{pair.first}" do
366
+ rhyme = obj.tokenise_rhyme('aabba')
367
+ out = obj.transform_string_syllable(pair.first, 'aabba')
368
+ again = obj.transform_string_syllable(out, 'aabba')
369
+ expect(out).to eq pair.last
370
+ expect(again).to eq out
371
+ expect(again).to eq pair.last
372
+ end
373
+ end
374
+ end
375
+ end
376
+
377
+ ##############################################################################
378
+
379
+ describe "#transform_string_regex" do
380
+
381
+ # Singleton which includes the method.
382
+ # Make the private methods public.
383
+ let(:obj) do
384
+ class Sing
385
+ include Poefy::PoeticForms
386
+ include Poefy::StringManipulation
387
+ public *private_instance_methods
388
+ end.new
389
+ end
390
+
391
+ describe "using rhyme string 'aabba'" do
392
+ input_and_output = [
393
+ ['^[^e]*$',
394
+ {
395
+ 1=>/^[^e]*$/,
396
+ 2=>/^[^e]*$/,
397
+ 3=>/^[^e]*$/,
398
+ 4=>/^[^e]*$/,
399
+ 5=>/^[^e]*$/
400
+ }],
401
+ ['[/(?=^[A-Z])(?=^[^eE]*$)/,/^[^eE]*$/,/^[^eE]*$/,/^[^eE]*$/,/^[^eE]*$/]',
402
+ {
403
+ 1=>/(?=^[A-Z])(?=^[^eE]*$)/,
404
+ 2=>/^[^eE]*$/,
405
+ 3=>/^[^eE]*$/,
406
+ 4=>/^[^eE]*$/,
407
+ 5=>/^[^eE]*$/
408
+ }],
409
+ ['{1=>/(?=^[A-Z])(?=^[^eE]*$)/,2=>/^[^eE]*$/,3=>/^[^eE]*$/,4=>/^[^eE]*$/,5=>/^[^eE]*$/}',
410
+ {
411
+ 1=>/(?=^[A-Z])(?=^[^eE]*$)/,
412
+ 2=>/^[^eE]*$/,
413
+ 3=>/^[^eE]*$/,
414
+ 4=>/^[^eE]*$/,
415
+ 5=>/^[^eE]*$/
416
+ }],
417
+ ['{0=>/^[^eE]*$/,1=>/(?=^[A-Z])(?=^[^eE]*$)/}',
418
+ {
419
+ 1=>/(?=^[A-Z])(?=^[^eE]*$)/,
420
+ 2=>/^[^eE]*$/,
421
+ 3=>/^[^eE]*$/,
422
+ 4=>/^[^eE]*$/,
423
+ 5=>/^[^eE]*$/
424
+ }],
425
+ ['{1=>/(?=^[A-Z])(?=^[^eE]*$)/,2=>/^[^eE]*$/,3=>/^[^eE]*$/,5=>/^[^eE]*$/}',
426
+ {
427
+ 1=>/(?=^[A-Z])(?=^[^eE]*$)/,
428
+ 2=>/^[^eE]*$/,
429
+ 3=>/^[^eE]*$/,
430
+ 4=>nil,
431
+ 5=>/^[^eE]*$/
432
+ }],
433
+ ['{1=>/(?=^[A-Z])(?=^[^eE]*$)/,4=>/^[^eE]*$/}',
434
+ {
435
+ 1=>/(?=^[A-Z])(?=^[^eE]*$)/,
436
+ 2=>nil,
437
+ 3=>nil,
438
+ 4=>/^[^eE]*$/,
439
+ 5=>nil
440
+ }],
441
+ ['{1=>/(?=^[A-Z])(?=^[^eE]*$)/,2=>/^[^eE]*$/,3=>/^[^eE]*$/,-1=>/^[^eE]*$/,-2=>/^[^eE]*$/}',
442
+ {
443
+ 1=>/(?=^[A-Z])(?=^[^eE]*$)/,
444
+ 2=>/^[^eE]*$/,
445
+ 3=>/^[^eE]*$/,
446
+ 4=>/^[^eE]*$/,
447
+ 5=>/^[^eE]*$/
448
+ }]
449
+ ]
450
+ input_and_output.each do |pair|
451
+ it "regex: #{pair.first}" do
452
+ out = obj.transform_string_regex(pair.first, 'aabba')
453
+ again = obj.transform_string_regex(out, 'aabba')
454
+ expect(out).to eq pair.last
455
+ expect(again).to eq out
456
+ expect(again).to eq pair.last
457
+ end
458
+ end
459
+ end
460
+ end
461
+
462
+ end
463
+
464
+ ################################################################################
@@ -0,0 +1,9 @@
1
+ require 'bundler/setup'
2
+ Bundler.setup
3
+
4
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
5
+ require 'poefy'
6
+
7
+ RSpec.configure do |config|
8
+ # some (optional) config here
9
+ end
metadata ADDED
@@ -0,0 +1,175 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: poefy
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.1
5
+ platform: ruby
6
+ authors:
7
+ - Paul Thompson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-05-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.13'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.13'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sqlite3
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 1.3.13
65
+ type: :runtime
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: '1.3'
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 1.3.13
75
+ - !ruby/object:Gem::Dependency
76
+ name: ruby_rhymes
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '0.1'
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: 0.1.2
85
+ type: :runtime
86
+ prerelease: false
87
+ version_requirements: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: '0.1'
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: 0.1.2
95
+ - !ruby/object:Gem::Dependency
96
+ name: wordfilter
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '0.2'
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: 0.2.6
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '0.2'
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: 0.2.6
115
+ description: Create poems from an input text file, by generating and querying a SQLite
116
+ database describing each line. Poems are created using a template to select lines
117
+ from the database, according to closing rhyme, syllable count, and regex matching.
118
+ email:
119
+ - nossidge@gmail.com
120
+ executables:
121
+ - poefy
122
+ extensions: []
123
+ extra_rdoc_files: []
124
+ files:
125
+ - ".gitignore"
126
+ - ".rspec"
127
+ - Gemfile
128
+ - LICENSE
129
+ - README.md
130
+ - Rakefile
131
+ - bin/poefy
132
+ - data/emily_dickinson.txt
133
+ - data/english_as_she_is_spoke.txt
134
+ - data/shakespeare_sonnets.txt
135
+ - data/spec_test_tiny.txt
136
+ - data/st_therese_of_lisieux.txt
137
+ - data/whitman_leaves.txt
138
+ - lib/poefy.rb
139
+ - lib/poefy/conditional_satisfaction.rb
140
+ - lib/poefy/database.rb
141
+ - lib/poefy/generation.rb
142
+ - lib/poefy/handle_error.rb
143
+ - lib/poefy/poefy_gen_base.rb
144
+ - lib/poefy/poetic_forms.rb
145
+ - lib/poefy/self.rb
146
+ - lib/poefy/string_manipulation.rb
147
+ - lib/poefy/version.rb
148
+ - poefy.gemspec
149
+ - spec/poefy_spec.rb
150
+ - spec/spec_helper.rb
151
+ homepage: https://github.com/nossidge/poefy
152
+ licenses:
153
+ - GPL-3.0
154
+ metadata: {}
155
+ post_install_message:
156
+ rdoc_options: []
157
+ require_paths:
158
+ - lib
159
+ required_ruby_version: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ required_rubygems_version: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ requirements: []
170
+ rubyforge_project:
171
+ rubygems_version: 2.6.11
172
+ signing_key:
173
+ specification_version: 4
174
+ summary: Create rhyming poetry by rearranging lines of text
175
+ test_files: []