lovely_rufus 1.0.1 → 1.1.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 +5 -5
- data/.overcommit.yml +4 -0
- data/.reek.yml +3 -0
- data/.rubocop.yml +14 -8
- data/.tool-versions +1 -0
- data/.travis.yml +11 -4
- data/README.md +1 -1
- data/Rakefile +2 -4
- data/bin/lovely-rufus +0 -2
- data/gems.locked +99 -0
- data/{Gemfile → gems.rb} +0 -2
- data/lib/lovely_rufus/cli_wrapper.rb +0 -2
- data/lib/lovely_rufus/layers/basic_wrapper.rb +0 -2
- data/lib/lovely_rufus/layers/code_comment_stripper.rb +0 -2
- data/lib/lovely_rufus/layers/email_quote_stripper.rb +1 -3
- data/lib/lovely_rufus/layers/hangout_wrapper.rb +21 -22
- data/lib/lovely_rufus/layers/layer.rb +1 -3
- data/lib/lovely_rufus/layers/one_letter_gluer.rb +1 -3
- data/lib/lovely_rufus/layers/quote_stripper.rb +1 -3
- data/lib/lovely_rufus/settings.rb +0 -2
- data/lib/lovely_rufus/text_wrapper.rb +14 -14
- data/lib/lovely_rufus/wrap.rb +1 -3
- data/lib/lovely_rufus.rb +0 -4
- data/lovely_rufus.gemspec +9 -16
- data/test/lovely_rufus/cli_wrapper_test.rb +4 -6
- data/test/lovely_rufus/layers/basic_wrapper_test.rb +7 -9
- data/test/lovely_rufus/layers/code_comment_stripper_test.rb +17 -19
- data/test/lovely_rufus/layers/email_quote_stripper_test.rb +20 -22
- data/test/lovely_rufus/layers/hangout_wrapper_test.rb +6 -8
- data/test/lovely_rufus/layers/one_letter_gluer_test.rb +3 -5
- data/test/lovely_rufus/settings_test.rb +2 -4
- data/test/lovely_rufus/text_wrapper_test.rb +7 -9
- data/test/lovely_rufus/wrap_test.rb +0 -2
- data/test/lovely_rufus_test.rb +5 -5
- data/test/test_helper.rb +10 -15
- metadata +28 -74
- checksums.yaml.gz.sig +0 -0
- data/.reek +0 -2
- data/.ruby-version +0 -1
- data/Gemfile.lock +0 -77
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: be467f0b20918a42ef34081961d5522dcb7eaa6b6d7f2a0c9a8e9c0287642ef1
|
4
|
+
data.tar.gz: d4636e37e170298535f91232c0be8f97d5136b845eae4b3d87e9678130a62875
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f2c2b19b693943371a4f2a5c8a5250bf84660442a8f169349f9d6b16ee6820460ffe52feb22deb5ee8c705864879d45fed15639fd6eadddc206b3d3da65bde3
|
7
|
+
data.tar.gz: 3769f17bce00f125f70abef732e6c934c5cdf7a1844296583daa7d1de099eaf155464b271b56c30a770770a167304929d0b9ad6e01c64c4b63e67dde5f85a9c2
|
data/.overcommit.yml
ADDED
data/.reek.yml
ADDED
data/.rubocop.yml
CHANGED
@@ -1,18 +1,24 @@
|
|
1
|
-
|
1
|
+
AllCops:
|
2
|
+
NewCops: enable
|
3
|
+
TargetRubyVersion: 3.0
|
4
|
+
|
5
|
+
Bundler/GemFilename:
|
2
6
|
Enabled: false
|
3
7
|
|
4
|
-
|
8
|
+
Gemspec/DevelopmentDependencies:
|
5
9
|
Enabled: false
|
6
10
|
|
7
|
-
|
8
|
-
|
9
|
-
- bin/lovely-rufus
|
11
|
+
Metrics/BlockLength:
|
12
|
+
AllowedMethods: describe
|
10
13
|
|
11
|
-
|
14
|
+
Naming/HeredocDelimiterCase:
|
12
15
|
Enabled: false
|
13
16
|
|
14
|
-
|
17
|
+
Naming/HeredocDelimiterNaming:
|
18
|
+
Enabled: false
|
19
|
+
|
20
|
+
Style/Documentation:
|
15
21
|
Enabled: false
|
16
22
|
|
17
|
-
Style/
|
23
|
+
Style/FrozenStringLiteralComment:
|
18
24
|
Enabled: false
|
data/.tool-versions
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby 2.6.6
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -64,4 +64,4 @@ Lovely Rufus was created as a [Ruby Mendicant University](http://blog.majesticse
|
|
64
64
|
|
65
65
|
---
|
66
66
|
|
67
|
-
© MMX-
|
67
|
+
© MMX-MMXIX Piotr Szotkowski <chastell@chastell.net>, licensed under AGPL-3.0 (see LICENCE)
|
data/Rakefile
CHANGED
@@ -1,10 +1,9 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require 'bundler/setup'
|
3
2
|
require 'rake/testtask'
|
4
3
|
require 'reek/rake/task'
|
5
4
|
require 'rubocop/rake_task'
|
6
5
|
|
7
|
-
task default: %i
|
6
|
+
task default: %i[test rubocop reek]
|
8
7
|
|
9
8
|
Rake::TestTask.new do |task|
|
10
9
|
task.pattern = 'test/**/*_test.rb'
|
@@ -13,7 +12,6 @@ end
|
|
13
12
|
|
14
13
|
Reek::Rake::Task.new do |task|
|
15
14
|
task.fail_on_error = false
|
16
|
-
task.reek_opts = '--no-wiki-links'
|
17
15
|
end
|
18
16
|
|
19
17
|
RuboCop::RakeTask.new do |task|
|
data/bin/lovely-rufus
CHANGED
data/gems.locked
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
lovely_rufus (1.0.1)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
ast (2.4.3)
|
10
|
+
bigdecimal (3.1.9)
|
11
|
+
concurrent-ruby (1.3.5)
|
12
|
+
dry-configurable (1.2.0)
|
13
|
+
dry-core (~> 1.0, < 2)
|
14
|
+
zeitwerk (~> 2.6)
|
15
|
+
dry-core (1.0.2)
|
16
|
+
concurrent-ruby (~> 1.0)
|
17
|
+
logger
|
18
|
+
zeitwerk (~> 2.6)
|
19
|
+
dry-inflector (1.1.0)
|
20
|
+
dry-initializer (3.1.1)
|
21
|
+
dry-logic (1.5.0)
|
22
|
+
concurrent-ruby (~> 1.0)
|
23
|
+
dry-core (~> 1.0, < 2)
|
24
|
+
zeitwerk (~> 2.6)
|
25
|
+
dry-schema (1.13.4)
|
26
|
+
concurrent-ruby (~> 1.0)
|
27
|
+
dry-configurable (~> 1.0, >= 1.0.1)
|
28
|
+
dry-core (~> 1.0, < 2)
|
29
|
+
dry-initializer (~> 3.0)
|
30
|
+
dry-logic (>= 1.4, < 2)
|
31
|
+
dry-types (>= 1.7, < 2)
|
32
|
+
zeitwerk (~> 2.6)
|
33
|
+
dry-types (1.7.2)
|
34
|
+
bigdecimal (~> 3.0)
|
35
|
+
concurrent-ruby (~> 1.0)
|
36
|
+
dry-core (~> 1.0)
|
37
|
+
dry-inflector (~> 1.0)
|
38
|
+
dry-logic (~> 1.4)
|
39
|
+
zeitwerk (~> 2.6)
|
40
|
+
json (2.12.0)
|
41
|
+
language_server-protocol (3.17.0.5)
|
42
|
+
lint_roller (1.1.0)
|
43
|
+
logger (1.7.0)
|
44
|
+
minitest (5.25.5)
|
45
|
+
minitest-focus (1.4.0)
|
46
|
+
minitest (>= 4, < 6)
|
47
|
+
mocha (2.7.1)
|
48
|
+
ruby2_keywords (>= 0.0.5)
|
49
|
+
parallel (1.27.0)
|
50
|
+
parser (3.3.8.0)
|
51
|
+
ast (~> 2.4.1)
|
52
|
+
racc
|
53
|
+
prism (1.4.0)
|
54
|
+
racc (1.8.1)
|
55
|
+
rainbow (3.1.1)
|
56
|
+
rake (13.2.1)
|
57
|
+
reek (6.4.0)
|
58
|
+
dry-schema (~> 1.13.0)
|
59
|
+
logger (~> 1.6)
|
60
|
+
parser (~> 3.3.0)
|
61
|
+
rainbow (>= 2.0, < 4.0)
|
62
|
+
rexml (~> 3.1)
|
63
|
+
regexp_parser (2.10.0)
|
64
|
+
rexml (3.4.1)
|
65
|
+
rubocop (1.75.6)
|
66
|
+
json (~> 2.3)
|
67
|
+
language_server-protocol (~> 3.17.0.2)
|
68
|
+
lint_roller (~> 1.1.0)
|
69
|
+
parallel (~> 1.10)
|
70
|
+
parser (>= 3.3.0.2)
|
71
|
+
rainbow (>= 2.2.2, < 4.0)
|
72
|
+
regexp_parser (>= 2.9.3, < 3.0)
|
73
|
+
rubocop-ast (>= 1.44.0, < 2.0)
|
74
|
+
ruby-progressbar (~> 1.7)
|
75
|
+
unicode-display_width (>= 2.4.0, < 4.0)
|
76
|
+
rubocop-ast (1.44.1)
|
77
|
+
parser (>= 3.3.7.2)
|
78
|
+
prism (~> 1.4)
|
79
|
+
ruby-progressbar (1.13.0)
|
80
|
+
ruby2_keywords (0.0.5)
|
81
|
+
unicode-display_width (3.1.4)
|
82
|
+
unicode-emoji (~> 4.0, >= 4.0.4)
|
83
|
+
unicode-emoji (4.0.4)
|
84
|
+
zeitwerk (2.6.18)
|
85
|
+
|
86
|
+
PLATFORMS
|
87
|
+
ruby
|
88
|
+
|
89
|
+
DEPENDENCIES
|
90
|
+
lovely_rufus!
|
91
|
+
minitest (~> 5.6)
|
92
|
+
minitest-focus (~> 1.1)
|
93
|
+
mocha (~> 2.7)
|
94
|
+
rake (~> 13.0)
|
95
|
+
reek (~> 6.0)
|
96
|
+
rubocop (~> 1.0)
|
97
|
+
|
98
|
+
BUNDLED WITH
|
99
|
+
2.5.23
|
data/{Gemfile → gems.rb}
RENAMED
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require_relative 'quote_stripper'
|
4
2
|
|
5
3
|
module LovelyRufus
|
@@ -11,7 +9,7 @@ module LovelyRufus
|
|
11
9
|
private
|
12
10
|
|
13
11
|
def fixed_quote
|
14
|
-
quote.empty? ? '' : quote.delete(' ')
|
12
|
+
quote.empty? ? '' : "#{quote.delete(' ')} "
|
15
13
|
end
|
16
14
|
end
|
17
15
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require_relative '../wrap'
|
4
2
|
require_relative 'basic_wrapper'
|
5
3
|
require_relative 'layer'
|
@@ -25,48 +23,49 @@ module LovelyRufus
|
|
25
23
|
end
|
26
24
|
|
27
25
|
def hangout?
|
28
|
-
exists? and
|
26
|
+
exists? and useful_fix?
|
29
27
|
end
|
30
28
|
|
31
29
|
private
|
32
30
|
|
33
|
-
attr_reader :
|
31
|
+
attr_reader :lower, :upper
|
34
32
|
|
35
33
|
def exists?
|
36
34
|
last_space = upper.chomp.rindex(/\p{space}/)
|
37
35
|
last_space and last_space >= lower.chomp.size
|
38
36
|
end
|
39
37
|
|
40
|
-
|
38
|
+
def last?
|
39
|
+
@last
|
40
|
+
end
|
41
|
+
|
42
|
+
def useful_fix?
|
43
|
+
return true unless last?
|
41
44
|
|
42
|
-
def useless_fix? # rubocop:disable Metrics/AbcSize
|
43
45
|
cut = upper.chomp.rindex(/\p{space}/)
|
44
|
-
upper_after = upper[0...cut]
|
45
|
-
lower_after = upper[(cut + 1)
|
46
|
-
lower_after.chomp.rindex(/\p{space}/)
|
46
|
+
upper_after = "#{upper[0...cut]}\n"
|
47
|
+
lower_after = upper[(cut + 1)..] + lower
|
48
|
+
lower_after.chomp.rindex(/\p{space}/) <= upper_after.size
|
47
49
|
end
|
48
50
|
end
|
49
51
|
|
52
|
+
# :reek:DuplicateMethodCall
|
50
53
|
def hangout_line
|
51
|
-
lines.each_cons(2).with_index do |(upper, lower), index|
|
52
|
-
finder = HangoutFinder.new(upper, lower, index == lines.size - 2)
|
53
|
-
return
|
54
|
+
wrap.lines.each_cons(2).with_index do |(upper, lower), index|
|
55
|
+
finder = HangoutFinder.new(upper, lower, index == wrap.lines.size - 2)
|
56
|
+
return index if finder.hangout?
|
54
57
|
end
|
55
58
|
end
|
56
59
|
|
57
|
-
|
58
|
-
@lines ||= wrap.lines
|
59
|
-
end
|
60
|
-
|
60
|
+
# :reek:TooManyStatements
|
61
61
|
def rewrapped
|
62
|
-
|
62
|
+
index = hangout_line
|
63
|
+
new_lines = wrap.lines.dup
|
64
|
+
new_lines[index] = "#{new_lines[index][0...-1]} "
|
65
|
+
unfolded = Wrap[new_lines.join, width: wrap.width]
|
66
|
+
wrapped = BasicWrapper.new.call(unfolded)
|
63
67
|
HangoutWrapper.new.call(wrapped)
|
64
68
|
end
|
65
|
-
|
66
|
-
def wrapped
|
67
|
-
unfolded = Wrap[lines.join, width: wrap.width]
|
68
|
-
BasicWrapper.new.call(unfolded)
|
69
|
-
end
|
70
69
|
end
|
71
70
|
end
|
72
71
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require_relative '../wrap'
|
4
2
|
require_relative 'layer'
|
5
3
|
|
@@ -9,7 +7,7 @@ module LovelyRufus
|
|
9
7
|
# :reek:FeatureEnvy
|
10
8
|
def call(wrap)
|
11
9
|
pattern = /(?<=\p{space})(&|\p{letter})\p{space}/
|
12
|
-
text = wrap.text.gsub(pattern,
|
10
|
+
text = wrap.text.gsub(pattern, '\1\2 ')
|
13
11
|
next_layer.call(Wrap[text, width: wrap.width])
|
14
12
|
end
|
15
13
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require_relative '../wrap'
|
4
2
|
require_relative 'layer'
|
5
3
|
|
@@ -23,7 +21,7 @@ module LovelyRufus
|
|
23
21
|
end
|
24
22
|
|
25
23
|
def stripped_wrap
|
26
|
-
stripped_text = wrap.lines.map { |line| line[quote.size
|
24
|
+
stripped_text = wrap.lines.map { |line| line[quote.size..] }.join
|
27
25
|
Wrap[stripped_text, width: wrap.width - fixed_quote.size]
|
28
26
|
end
|
29
27
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require_relative 'layers/basic_wrapper'
|
4
2
|
require_relative 'layers/code_comment_stripper'
|
5
3
|
require_relative 'layers/email_quote_stripper'
|
@@ -9,19 +7,21 @@ require_relative 'wrap'
|
|
9
7
|
|
10
8
|
module LovelyRufus
|
11
9
|
class TextWrapper
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
10
|
+
class << self
|
11
|
+
def chain
|
12
|
+
layers = [Layers::CodeCommentStripper, Layers::EmailQuoteStripper,
|
13
|
+
Layers::OneLetterGluer, Layers::BasicWrapper,
|
14
|
+
Layers::HangoutWrapper]
|
15
|
+
identity = ->(wrap) { wrap }
|
16
|
+
layers.reverse.reduce(identity) { |inner, outer| outer.new(inner) }
|
17
|
+
end
|
18
|
+
|
19
|
+
def wrap(text, width: 72)
|
20
|
+
new(Wrap[text, width: width]).call
|
21
|
+
end
|
20
22
|
end
|
21
23
|
|
22
|
-
|
23
|
-
new(Wrap[text, width: width]).call
|
24
|
-
end
|
24
|
+
QUOTES = %r{^([>/#])(\1| )*}
|
25
25
|
|
26
26
|
def initialize(wrap)
|
27
27
|
@wrap = wrap
|
@@ -29,7 +29,7 @@ module LovelyRufus
|
|
29
29
|
|
30
30
|
def call
|
31
31
|
paras.map do |para|
|
32
|
-
self.class.chain.call(Wrap[para, width: wrap.width]).text.tr(
|
32
|
+
self.class.chain.call(Wrap[para, width: wrap.width]).text.tr(' ', ' ')
|
33
33
|
end.join("\n")
|
34
34
|
end
|
35
35
|
|
data/lib/lovely_rufus/wrap.rb
CHANGED
data/lib/lovely_rufus.rb
CHANGED
data/lovely_rufus.gemspec
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require 'English'
|
4
2
|
require 'pathname'
|
5
3
|
|
@@ -9,27 +7,22 @@ Gem::Specification.new do |gem|
|
|
9
7
|
'paragraphs of text.'
|
10
8
|
gem.email = 'chastell@chastell.net'
|
11
9
|
gem.homepage = 'http://github.com/chastell/lovely_rufus'
|
12
|
-
gem.license = 'AGPL-3.0'
|
10
|
+
gem.license = 'AGPL-3.0-or-later'
|
13
11
|
gem.name = 'lovely_rufus'
|
14
12
|
gem.summary = 'lovely_rufus: text wrapper'
|
15
|
-
gem.version = '1.0
|
13
|
+
gem.version = '1.1.0'
|
16
14
|
|
17
|
-
gem.required_ruby_version = '~>
|
15
|
+
gem.required_ruby_version = '~> 3.0'
|
18
16
|
|
19
17
|
gem.files = `git ls-files -z`.split("\0")
|
20
18
|
gem.executables = gem.files.grep(%r{^bin/}).map { |path| File.basename(path) }
|
21
|
-
gem.test_files = gem.files.grep(%r{^test/.*\.rb$})
|
22
|
-
|
23
|
-
gem.cert_chain = ['certs/chastell.pem']
|
24
|
-
if Pathname.new($PROGRAM_NAME).basename == Pathname.new('gem')
|
25
|
-
gem.signing_key = Pathname.new('~/.ssh/gem-private_key.pem').expand_path
|
26
|
-
end
|
27
19
|
|
28
|
-
gem.add_development_dependency 'bogus', '~> 0.1.4'
|
29
20
|
gem.add_development_dependency 'minitest', '~> 5.6'
|
30
21
|
gem.add_development_dependency 'minitest-focus', '~> 1.1'
|
31
|
-
gem.add_development_dependency '
|
32
|
-
gem.add_development_dependency '
|
33
|
-
gem.add_development_dependency '
|
34
|
-
gem.add_development_dependency 'rubocop', '~>
|
22
|
+
gem.add_development_dependency 'mocha', '~> 2.7'
|
23
|
+
gem.add_development_dependency 'rake', '~> 13.0'
|
24
|
+
gem.add_development_dependency 'reek', '~> 6.0'
|
25
|
+
gem.add_development_dependency 'rubocop', '~> 1.0'
|
26
|
+
|
27
|
+
gem.metadata['rubygems_mfa_required'] = 'true'
|
35
28
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require 'stringio'
|
4
2
|
require_relative '../test_helper'
|
5
3
|
require_relative '../../lib/lovely_rufus/cli_wrapper'
|
@@ -9,20 +7,20 @@ module LovelyRufus
|
|
9
7
|
describe '#run' do
|
10
8
|
let(:stream) { StringIO.new(text) }
|
11
9
|
let(:text) { "all right: stop, collaborate and listen\n" }
|
12
|
-
let(:text_wrapper) {
|
10
|
+
let(:text_wrapper) { mock.quacks_like(TextWrapper) }
|
13
11
|
|
14
12
|
it 'reads the passed stream to TextWrapper and prints the results' do
|
15
|
-
|
13
|
+
text_wrapper.stubs(:wrap).with(text, width: 72).returns(text)
|
16
14
|
_(lambda do
|
17
15
|
CLIWrapper.new(text_wrapper: text_wrapper).run stream
|
18
16
|
end).must_output text
|
19
17
|
end
|
20
18
|
|
21
19
|
it 'accepts the desired width and passes it to TextWrapper' do
|
20
|
+
text_wrapper.expects(:wrap).with(text, width: 22).returns(text)
|
22
21
|
capture_io do
|
23
|
-
CLIWrapper.new(%w
|
22
|
+
CLIWrapper.new(%w[--width=22], text_wrapper: text_wrapper).run stream
|
24
23
|
end
|
25
|
-
_(text_wrapper).must_have_received :wrap, [text, { width: 22 }]
|
26
24
|
end
|
27
25
|
end
|
28
26
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require_relative '../../test_helper'
|
4
2
|
require_relative '../../../lib/lovely_rufus/layers/basic_wrapper'
|
5
3
|
require_relative '../../../lib/lovely_rufus/wrap'
|
@@ -10,8 +8,8 @@ module LovelyRufus
|
|
10
8
|
describe '#call' do
|
11
9
|
it 'wraps text to the given width' do
|
12
10
|
text = 'I go crazy when I hear a cymbal and a hi-hat ' \
|
13
|
-
|
14
|
-
wrap =
|
11
|
+
'with a souped-up tempo'
|
12
|
+
wrap = <<~end
|
15
13
|
I go crazy when I hear
|
16
14
|
a cymbal and a hi-hat
|
17
15
|
with a souped-up tempo
|
@@ -22,7 +20,7 @@ module LovelyRufus
|
|
22
20
|
|
23
21
|
it 'extends past the given width when necessary' do
|
24
22
|
text = 'I’m killing your brain like a poisonous mushroom'
|
25
|
-
wrap =
|
23
|
+
wrap = <<~end
|
26
24
|
I’m
|
27
25
|
killing
|
28
26
|
your
|
@@ -37,7 +35,7 @@ module LovelyRufus
|
|
37
35
|
end
|
38
36
|
|
39
37
|
it 'rewraps a String from zero' do
|
40
|
-
text =
|
38
|
+
text = <<~end
|
41
39
|
turn off
|
42
40
|
the lights and I’ll glow
|
43
41
|
end
|
@@ -46,9 +44,9 @@ module LovelyRufus
|
|
46
44
|
end
|
47
45
|
|
48
46
|
it 'passes the fixed text to the next layer and returns its outcome' do
|
49
|
-
final =
|
50
|
-
layer =
|
51
|
-
|
47
|
+
final = mock.quacks_like_instance_of(Wrap)
|
48
|
+
layer = mock.quacks_like_instance_of(Layer)
|
49
|
+
layer.expects(:call).with(Wrap["I\nO\nU\n", width: 2]).returns(final)
|
52
50
|
call = BasicWrapper.new(layer).call(Wrap['I O U', width: 2])
|
53
51
|
_(call).must_equal final
|
54
52
|
end
|