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.
Files changed (42) hide show
  1. checksums.yaml +5 -5
  2. data/.overcommit.yml +4 -0
  3. data/.reek.yml +3 -0
  4. data/.rubocop.yml +14 -8
  5. data/.tool-versions +1 -0
  6. data/.travis.yml +11 -4
  7. data/README.md +1 -1
  8. data/Rakefile +2 -4
  9. data/bin/lovely-rufus +0 -2
  10. data/gems.locked +99 -0
  11. data/{Gemfile → gems.rb} +0 -2
  12. data/lib/lovely_rufus/cli_wrapper.rb +0 -2
  13. data/lib/lovely_rufus/layers/basic_wrapper.rb +0 -2
  14. data/lib/lovely_rufus/layers/code_comment_stripper.rb +0 -2
  15. data/lib/lovely_rufus/layers/email_quote_stripper.rb +1 -3
  16. data/lib/lovely_rufus/layers/hangout_wrapper.rb +21 -22
  17. data/lib/lovely_rufus/layers/layer.rb +1 -3
  18. data/lib/lovely_rufus/layers/one_letter_gluer.rb +1 -3
  19. data/lib/lovely_rufus/layers/quote_stripper.rb +1 -3
  20. data/lib/lovely_rufus/settings.rb +0 -2
  21. data/lib/lovely_rufus/text_wrapper.rb +14 -14
  22. data/lib/lovely_rufus/wrap.rb +1 -3
  23. data/lib/lovely_rufus.rb +0 -4
  24. data/lovely_rufus.gemspec +9 -16
  25. data/test/lovely_rufus/cli_wrapper_test.rb +4 -6
  26. data/test/lovely_rufus/layers/basic_wrapper_test.rb +7 -9
  27. data/test/lovely_rufus/layers/code_comment_stripper_test.rb +17 -19
  28. data/test/lovely_rufus/layers/email_quote_stripper_test.rb +20 -22
  29. data/test/lovely_rufus/layers/hangout_wrapper_test.rb +6 -8
  30. data/test/lovely_rufus/layers/one_letter_gluer_test.rb +3 -5
  31. data/test/lovely_rufus/settings_test.rb +2 -4
  32. data/test/lovely_rufus/text_wrapper_test.rb +7 -9
  33. data/test/lovely_rufus/wrap_test.rb +0 -2
  34. data/test/lovely_rufus_test.rb +5 -5
  35. data/test/test_helper.rb +10 -15
  36. metadata +28 -74
  37. checksums.yaml.gz.sig +0 -0
  38. data/.reek +0 -2
  39. data/.ruby-version +0 -1
  40. data/Gemfile.lock +0 -77
  41. data.tar.gz.sig +0 -0
  42. metadata.gz.sig +0 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8fb34baf376b3462f33b6f1866510f0b2edb5d47
4
- data.tar.gz: 4b8d09f47df793d1a0e66b2d8915329df803ca6a
2
+ SHA256:
3
+ metadata.gz: be467f0b20918a42ef34081961d5522dcb7eaa6b6d7f2a0c9a8e9c0287642ef1
4
+ data.tar.gz: d4636e37e170298535f91232c0be8f97d5136b845eae4b3d87e9678130a62875
5
5
  SHA512:
6
- metadata.gz: 817ef5f32ccf7e0d137389a99ab27960e2389efdbc2d467a2d84ed51bb2bcfe5bb8409d93d3bfd7b3c533ee0225d3677ae49fa56de633f05cbb4b4eb23a9c901
7
- data.tar.gz: 9b600aced8c77520706c3b464dba74af1f3e98d68830e2859bcd7e6dd808eec5701fd36267ca5dff00328feb37e80efbcbe0572069c4191d7cb91271ceceb48c
6
+ metadata.gz: 9f2c2b19b693943371a4f2a5c8a5250bf84660442a8f169349f9d6b16ee6820460ffe52feb22deb5ee8c705864879d45fed15639fd6eadddc206b3d3da65bde3
7
+ data.tar.gz: 3769f17bce00f125f70abef732e6c934c5cdf7a1844296583daa7d1de099eaf155464b271b56c30a770770a167304929d0b9ad6e01c64c4b63e67dde5f85a9c2
data/.overcommit.yml ADDED
@@ -0,0 +1,4 @@
1
+ PreCommit:
2
+ RakeTarget:
3
+ enabled: true
4
+ targets: [default]
data/.reek.yml ADDED
@@ -0,0 +1,3 @@
1
+ detectors:
2
+ IrresponsibleModule:
3
+ enabled: false
data/.rubocop.yml CHANGED
@@ -1,18 +1,24 @@
1
- Style/AndOr:
1
+ AllCops:
2
+ NewCops: enable
3
+ TargetRubyVersion: 3.0
4
+
5
+ Bundler/GemFilename:
2
6
  Enabled: false
3
7
 
4
- Style/Documentation:
8
+ Gemspec/DevelopmentDependencies:
5
9
  Enabled: false
6
10
 
7
- Style/FileName:
8
- Exclude:
9
- - bin/lovely-rufus
11
+ Metrics/BlockLength:
12
+ AllowedMethods: describe
10
13
 
11
- Style/Not:
14
+ Naming/HeredocDelimiterCase:
12
15
  Enabled: false
13
16
 
14
- Style/SingleLineBlockParams:
17
+ Naming/HeredocDelimiterNaming:
18
+ Enabled: false
19
+
20
+ Style/Documentation:
15
21
  Enabled: false
16
22
 
17
- Style/SpaceAfterNot:
23
+ Style/FrozenStringLiteralComment:
18
24
  Enabled: false
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 2.6.6
data/.travis.yml CHANGED
@@ -1,7 +1,14 @@
1
+ before_install:
2
+ - gem update --system
3
+ - gem install bundler
4
+ - bundle
1
5
  language: ruby
6
+ matrix:
7
+ allow_failures:
8
+ - rvm: ruby-head
2
9
  rvm:
3
- - 2.1
4
- - 2.2
5
- - 2.3.0
10
+ - 2.3
11
+ - 2.4
12
+ - 2.5
13
+ - 2.6
6
14
  - ruby-head
7
- sudo: false
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-MMXV Piotr Szotkowski <chastell@chastell.net>, licensed under AGPL-3.0 (see LICENCE)
67
+ © MMX-MMXIX Piotr Szotkowski <chastell@chastell.net>, licensed under AGPL-3.0 (see LICENCE)
data/Rakefile CHANGED
@@ -1,10 +1,9 @@
1
- # frozen_string_literal: true
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(test rubocop reek)
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
@@ -1,7 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
2
 
4
- require_relative '../lib/lovely_rufus'
5
3
  require_relative '../lib/lovely_rufus/cli_wrapper'
6
4
 
7
5
  LovelyRufus::CLIWrapper.new.run
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
@@ -1,4 +1,2 @@
1
- # frozen_string_literal: true
2
-
3
1
  source 'https://rubygems.org'
4
2
  gemspec
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  require_relative 'settings'
4
2
  require_relative 'text_wrapper'
5
3
 
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  require_relative '../wrap'
4
2
  require_relative 'layer'
5
3
 
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  require_relative 'quote_stripper'
4
2
 
5
3
  module LovelyRufus
@@ -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 not (last? and useless_fix?)
26
+ exists? and useful_fix?
29
27
  end
30
28
 
31
29
  private
32
30
 
33
- attr_reader :last, :lower, :upper
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
- alias last? last
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] + "\n"
45
- lower_after = upper[(cut + 1)..-1] + lower
46
- lower_after.chomp.rindex(/\p{space}/) > upper_after.size
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 upper if finder.hangout?
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
- def lines
58
- @lines ||= wrap.lines
59
- end
60
-
60
+ # :reek:TooManyStatements
61
61
  def rewrapped
62
- hangout_line[-1] = NBSP
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,9 +1,7 @@
1
- # frozen_string_literal: true
2
-
3
1
  module LovelyRufus
4
2
  module Layers
5
3
  class Layer
6
- def initialize(next_layer = -> (wrap) { wrap })
4
+ def initialize(next_layer = ->(wrap) { wrap })
7
5
  @next_layer = next_layer
8
6
  end
9
7
 
@@ -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, "\\1\\2#{NBSP}")
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..-1] }.join
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 'optparse'
4
2
 
5
3
  module LovelyRufus
@@ -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
- QUOTES = %r{^([>/#])(\1| )*}
13
-
14
- def self.chain
15
- layers = [Layers::CodeCommentStripper, Layers::EmailQuoteStripper,
16
- Layers::OneLetterGluer, Layers::BasicWrapper,
17
- Layers::HangoutWrapper]
18
- identity = -> (wrap) { wrap }
19
- layers.reverse.reduce(identity) { |inner, outer| outer.new(inner) }
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
- def self.wrap(text, width: 72)
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(NBSP, ' ')
32
+ self.class.chain.call(Wrap[para, width: wrap.width]).text.tr(' ', ' ')
33
33
  end.join("\n")
34
34
  end
35
35
 
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  require 'forwardable'
4
2
 
5
3
  module LovelyRufus
@@ -7,7 +5,7 @@ module LovelyRufus
7
5
  extend Forwardable
8
6
 
9
7
  def initialize(text = '', width: 72)
10
- super text, width
8
+ super(text, width)
11
9
  end
12
10
 
13
11
  delegate lines: :text
data/lib/lovely_rufus.rb CHANGED
@@ -1,10 +1,6 @@
1
- # frozen_string_literal: true
2
-
3
1
  require_relative 'lovely_rufus/text_wrapper'
4
2
 
5
3
  module LovelyRufus
6
- NBSP = "\u00A0"
7
-
8
4
  module_function
9
5
 
10
6
  def wrap(text, text_wrapper: TextWrapper, width: 72)
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.1'
13
+ gem.version = '1.1.0'
16
14
 
17
- gem.required_ruby_version = '~> 2.1'
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 'rake', '~> 11.0'
32
- gem.add_development_dependency 'reek', '~> 4.0'
33
- gem.add_development_dependency 'rerun', '~> 0.11.0'
34
- gem.add_development_dependency 'rubocop', '~> 0.42.0'
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) { fake(:text_wrapper, as: :class) }
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
- stub(text_wrapper).wrap(text, width: 72) { text }
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(--width=22), text_wrapper: text_wrapper).run stream
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
- 'with a souped-up tempo'
14
- wrap = <<-end.dedent
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 = <<-end.dedent
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 = <<-end.dedent
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 = fake(:wrap)
50
- layer = fake(:layer)
51
- mock(layer).call(Wrap["I\nO\nU\n", width: 2]) { final }
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