lovely_rufus 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +4 -7
- data/.ruby-version +1 -1
- data/Gemfile.lock +41 -26
- data/README.md +2 -2
- data/Rakefile +5 -6
- data/bin/lovely-rufus +1 -1
- data/config/reek.yml +7 -7
- data/lib/lovely_rufus.rb +9 -6
- data/lib/lovely_rufus/cli_wrapper.rb +1 -2
- data/lib/lovely_rufus/layers/basic_wrapper.rb +14 -0
- data/lib/lovely_rufus/layers/code_comment_stripper.rb +13 -0
- data/lib/lovely_rufus/layers/email_quote_stripper.rb +15 -0
- data/lib/lovely_rufus/layers/hangout_wrapper.rb +57 -0
- data/lib/lovely_rufus/layers/layer.rb +15 -0
- data/lib/lovely_rufus/layers/one_letter_gluer.rb +14 -0
- data/lib/lovely_rufus/layers/quote_stripper.rb +29 -0
- data/lib/lovely_rufus/text_wrapper.rb +11 -7
- data/lovely_rufus.gemspec +6 -4
- data/{spec/lovely_rufus/cli_wrapper_spec.rb → test/lovely_rufus/cli_wrapper_test.rb} +5 -5
- data/test/lovely_rufus/layers/basic_wrapper_test.rb +55 -0
- data/test/lovely_rufus/layers/code_comment_stripper_test.rb +90 -0
- data/test/lovely_rufus/layers/email_quote_stripper_test.rb +101 -0
- data/test/lovely_rufus/layers/hangout_wrapper_test.rb +40 -0
- data/test/lovely_rufus/layers/one_letter_gluer_test.rb +33 -0
- data/{spec/lovely_rufus/settings_spec.rb → test/lovely_rufus/settings_test.rb} +1 -1
- data/{spec/lovely_rufus/text_wrapper_spec.rb → test/lovely_rufus/text_wrapper_test.rb} +2 -2
- data/{spec/lovely_rufus/text_wrapper_spec.yml → test/lovely_rufus/text_wrapper_test.yml} +0 -0
- data/{spec/lovely_rufus/wrap_spec.rb → test/lovely_rufus/wrap_test.rb} +3 -3
- data/{spec/lovely_rufus_spec.rb → test/lovely_rufus_test.rb} +1 -1
- data/test/test_helper.rb +37 -0
- metadata +51 -33
- data/lib/lovely_rufus/basic_wrapper.rb +0 -12
- data/lib/lovely_rufus/hangout_wrapper.rb +0 -56
- data/lib/lovely_rufus/layer.rb +0 -14
- data/lib/lovely_rufus/one_letter_gluer.rb +0 -12
- data/lib/lovely_rufus/quote_stripper.rb +0 -32
- data/spec/lovely_rufus/basic_wrapper_spec.rb +0 -53
- data/spec/lovely_rufus/hangout_wrapper_spec.rb +0 -38
- data/spec/lovely_rufus/one_letter_gluer_spec.rb +0 -31
- data/spec/lovely_rufus/quote_stripper_spec.rb +0 -131
- data/spec/spec_helper.rb +0 -14
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lovely_rufus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Szotkowski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: private_attr
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bogus
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,14 +86,14 @@ dependencies:
|
|
72
86
|
requirements:
|
73
87
|
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
89
|
+
version: '2.0'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
96
|
+
version: '2.0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: rerun
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,14 +114,14 @@ dependencies:
|
|
100
114
|
requirements:
|
101
115
|
- - "~>"
|
102
116
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.
|
117
|
+
version: 0.29.0
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
122
|
- - "~>"
|
109
123
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.
|
124
|
+
version: 0.29.0
|
111
125
|
description: An executable and a Ruby library for wrapping paragraphs of text.
|
112
126
|
email: chastell@chastell.net
|
113
127
|
executables:
|
@@ -125,27 +139,30 @@ files:
|
|
125
139
|
- bin/lovely-rufus
|
126
140
|
- config/reek.yml
|
127
141
|
- lib/lovely_rufus.rb
|
128
|
-
- lib/lovely_rufus/basic_wrapper.rb
|
129
142
|
- lib/lovely_rufus/cli_wrapper.rb
|
130
|
-
- lib/lovely_rufus/
|
131
|
-
- lib/lovely_rufus/
|
132
|
-
- lib/lovely_rufus/
|
133
|
-
- lib/lovely_rufus/
|
143
|
+
- lib/lovely_rufus/layers/basic_wrapper.rb
|
144
|
+
- lib/lovely_rufus/layers/code_comment_stripper.rb
|
145
|
+
- lib/lovely_rufus/layers/email_quote_stripper.rb
|
146
|
+
- lib/lovely_rufus/layers/hangout_wrapper.rb
|
147
|
+
- lib/lovely_rufus/layers/layer.rb
|
148
|
+
- lib/lovely_rufus/layers/one_letter_gluer.rb
|
149
|
+
- lib/lovely_rufus/layers/quote_stripper.rb
|
134
150
|
- lib/lovely_rufus/settings.rb
|
135
151
|
- lib/lovely_rufus/text_wrapper.rb
|
136
152
|
- lib/lovely_rufus/wrap.rb
|
137
153
|
- lovely_rufus.gemspec
|
138
|
-
-
|
139
|
-
-
|
140
|
-
-
|
141
|
-
-
|
142
|
-
-
|
143
|
-
-
|
144
|
-
-
|
145
|
-
-
|
146
|
-
-
|
147
|
-
-
|
148
|
-
-
|
154
|
+
- test/lovely_rufus/cli_wrapper_test.rb
|
155
|
+
- test/lovely_rufus/layers/basic_wrapper_test.rb
|
156
|
+
- test/lovely_rufus/layers/code_comment_stripper_test.rb
|
157
|
+
- test/lovely_rufus/layers/email_quote_stripper_test.rb
|
158
|
+
- test/lovely_rufus/layers/hangout_wrapper_test.rb
|
159
|
+
- test/lovely_rufus/layers/one_letter_gluer_test.rb
|
160
|
+
- test/lovely_rufus/settings_test.rb
|
161
|
+
- test/lovely_rufus/text_wrapper_test.rb
|
162
|
+
- test/lovely_rufus/text_wrapper_test.yml
|
163
|
+
- test/lovely_rufus/wrap_test.rb
|
164
|
+
- test/lovely_rufus_test.rb
|
165
|
+
- test/test_helper.rb
|
149
166
|
homepage: http://github.com/chastell/lovely_rufus
|
150
167
|
licenses:
|
151
168
|
- AGPL-3.0
|
@@ -166,18 +183,19 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
183
|
version: '0'
|
167
184
|
requirements: []
|
168
185
|
rubyforge_project:
|
169
|
-
rubygems_version: 2.
|
186
|
+
rubygems_version: 2.4.5
|
170
187
|
signing_key:
|
171
188
|
specification_version: 4
|
172
189
|
summary: 'lovely_rufus: text wrapper'
|
173
190
|
test_files:
|
174
|
-
-
|
175
|
-
-
|
176
|
-
-
|
177
|
-
-
|
178
|
-
-
|
179
|
-
-
|
180
|
-
-
|
181
|
-
-
|
182
|
-
-
|
183
|
-
-
|
191
|
+
- test/lovely_rufus/cli_wrapper_test.rb
|
192
|
+
- test/lovely_rufus/layers/basic_wrapper_test.rb
|
193
|
+
- test/lovely_rufus/layers/code_comment_stripper_test.rb
|
194
|
+
- test/lovely_rufus/layers/email_quote_stripper_test.rb
|
195
|
+
- test/lovely_rufus/layers/hangout_wrapper_test.rb
|
196
|
+
- test/lovely_rufus/layers/one_letter_gluer_test.rb
|
197
|
+
- test/lovely_rufus/settings_test.rb
|
198
|
+
- test/lovely_rufus/text_wrapper_test.rb
|
199
|
+
- test/lovely_rufus/wrap_test.rb
|
200
|
+
- test/lovely_rufus_test.rb
|
201
|
+
- test/test_helper.rb
|
@@ -1,12 +0,0 @@
|
|
1
|
-
require_relative 'layer'
|
2
|
-
require_relative 'wrap'
|
3
|
-
|
4
|
-
module LovelyRufus
|
5
|
-
class BasicWrapper < Layer
|
6
|
-
def call(wrap)
|
7
|
-
unwrapped = wrap.text.tr("\n", ' ').strip
|
8
|
-
wrapped = unwrapped.gsub(/(.{1,#{wrap.width}})( |$\n?)/, "\\1\n")
|
9
|
-
next_layer.call(Wrap[wrapped, width: wrap.width])
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
require_relative 'basic_wrapper'
|
2
|
-
require_relative 'layer'
|
3
|
-
require_relative 'wrap'
|
4
|
-
|
5
|
-
module LovelyRufus
|
6
|
-
class HangoutWrapper < Layer
|
7
|
-
def call(wrap)
|
8
|
-
@wrap = wrap
|
9
|
-
final = hangout_line ? rewrapped : wrap
|
10
|
-
next_layer.call(final)
|
11
|
-
end
|
12
|
-
|
13
|
-
attr_reader :wrap
|
14
|
-
private :wrap
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
module HangoutFinder
|
19
|
-
module_function
|
20
|
-
|
21
|
-
def between?(line_a, line_b)
|
22
|
-
last_space = line_a.chomp.rindex(/\p{space}/)
|
23
|
-
last_space and last_space >= line_b.chomp.size
|
24
|
-
end
|
25
|
-
|
26
|
-
def reverse?(line_a, line_b)
|
27
|
-
cut = line_a.chomp.rindex(/\p{space}/)
|
28
|
-
a_after = line_a[0...cut] + "\n"
|
29
|
-
b_after = line_a[(cut + 1)..-1] + line_b
|
30
|
-
b_after.chomp.rindex(/\p{space}/) > a_after.size
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def hangout_line
|
35
|
-
lines.each_cons(2).with_index do |(a, b), i|
|
36
|
-
if HangoutFinder.between?(a, b)
|
37
|
-
return a unless i == lines.size - 2 and HangoutFinder.reverse?(a, b)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def lines
|
43
|
-
@lines ||= wrap.lines
|
44
|
-
end
|
45
|
-
|
46
|
-
def rewrapped
|
47
|
-
hangout_line[-1] = NBSP
|
48
|
-
HangoutWrapper.new.call(wrapped)
|
49
|
-
end
|
50
|
-
|
51
|
-
def wrapped
|
52
|
-
unfolded = Wrap[lines.join, width: wrap.width]
|
53
|
-
BasicWrapper.new.call(unfolded)
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
data/lib/lovely_rufus/layer.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
module LovelyRufus
|
2
|
-
class Layer
|
3
|
-
def initialize(next_layer = -> (wrap) { wrap })
|
4
|
-
@next_layer = next_layer
|
5
|
-
end
|
6
|
-
|
7
|
-
def call(_opts = {})
|
8
|
-
fail 'Layer subclasses must define #call'
|
9
|
-
end
|
10
|
-
|
11
|
-
attr_reader :next_layer
|
12
|
-
private :next_layer
|
13
|
-
end
|
14
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
require_relative 'layer'
|
2
|
-
require_relative 'wrap'
|
3
|
-
|
4
|
-
module LovelyRufus
|
5
|
-
class OneLetterGluer < Layer
|
6
|
-
def call(wrap)
|
7
|
-
pattern = /(?<=\p{space})(&|\p{letter})\p{space}/
|
8
|
-
text = wrap.text.gsub(pattern, "\\1\\2#{NBSP}")
|
9
|
-
next_layer.call(Wrap[text, width: wrap.width])
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
require_relative 'layer'
|
2
|
-
require_relative 'wrap'
|
3
|
-
|
4
|
-
module LovelyRufus
|
5
|
-
class QuoteStripper < Layer
|
6
|
-
def call(wrap)
|
7
|
-
@wrap = wrap
|
8
|
-
wrapped = next_layer.call(stripped_wrap)
|
9
|
-
quoted = wrapped.lines.map { |line| fixed_quote + line }.join
|
10
|
-
Wrap[quoted, width: wrapped.width + fixed_quote.size]
|
11
|
-
end
|
12
|
-
|
13
|
-
attr_reader :wrap
|
14
|
-
private :wrap
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
def fixed_quote
|
19
|
-
quote.size > 0 ? quote.delete(' ') + ' ' : ''
|
20
|
-
end
|
21
|
-
|
22
|
-
def quote
|
23
|
-
starts = wrap.lines.map { |line| line[QUOTES] }.uniq
|
24
|
-
starts.size == 1 ? starts.first || '' : ''
|
25
|
-
end
|
26
|
-
|
27
|
-
def stripped_wrap
|
28
|
-
stripped_text = wrap.lines.map { |line| line[quote.size..-1] }.join
|
29
|
-
Wrap[stripped_text, width: wrap.width - fixed_quote.size]
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,53 +0,0 @@
|
|
1
|
-
require_relative '../spec_helper'
|
2
|
-
require_relative '../../lib/lovely_rufus/basic_wrapper'
|
3
|
-
require_relative '../../lib/lovely_rufus/wrap'
|
4
|
-
|
5
|
-
module LovelyRufus
|
6
|
-
describe BasicWrapper do
|
7
|
-
describe '#call' do
|
8
|
-
it 'wraps text to the given width' do
|
9
|
-
text = 'I go crazy when I hear a cymbal and a hi-hat ' \
|
10
|
-
'with a souped-up tempo'
|
11
|
-
wrap = <<-end.dedent
|
12
|
-
I go crazy when I hear
|
13
|
-
a cymbal and a hi-hat
|
14
|
-
with a souped-up tempo
|
15
|
-
end
|
16
|
-
bw = BasicWrapper.new
|
17
|
-
bw.call(Wrap[text, width: 22]).must_equal Wrap[wrap, width: 22]
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'extends past the given width when necessary' do
|
21
|
-
text = 'I’m killing your brain like a poisonous mushroom'
|
22
|
-
wrap = <<-end.dedent
|
23
|
-
I’m
|
24
|
-
killing
|
25
|
-
your
|
26
|
-
brain
|
27
|
-
like
|
28
|
-
a
|
29
|
-
poisonous
|
30
|
-
mushroom
|
31
|
-
end
|
32
|
-
bw = BasicWrapper.new
|
33
|
-
bw.call(Wrap[text, width: 5]).must_equal Wrap[wrap, width: 5]
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'rewraps a String from zero' do
|
37
|
-
text = <<-end.dedent
|
38
|
-
turn off
|
39
|
-
the lights and I’ll glow
|
40
|
-
end
|
41
|
-
wrap = "turn off the lights and I’ll glow\n"
|
42
|
-
BasicWrapper.new.call(Wrap[text]).must_equal Wrap[wrap]
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'passes the fixed text to the next layer and returns its outcome' do
|
46
|
-
final = fake(:wrap)
|
47
|
-
layer = fake(:layer)
|
48
|
-
mock(layer).call(Wrap["I\nO\nU\n", width: 2]) { final }
|
49
|
-
BasicWrapper.new(layer).call(Wrap['I O U', width: 2]).must_equal final
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
require_relative '../spec_helper'
|
2
|
-
require_relative '../../lib/lovely_rufus/hangout_wrapper'
|
3
|
-
require_relative '../../lib/lovely_rufus/wrap'
|
4
|
-
|
5
|
-
module LovelyRufus
|
6
|
-
describe HangoutWrapper do
|
7
|
-
describe '#call' do
|
8
|
-
it 'removes hangouts from the text' do
|
9
|
-
text = <<-end.dedent
|
10
|
-
I go crazy when I hear a cymbal and
|
11
|
-
a hi-hat with a souped-up tempo
|
12
|
-
end
|
13
|
-
wrap = <<-end.dedent
|
14
|
-
I go crazy when I hear a cymbal
|
15
|
-
and a hi-hat with a souped-up tempo
|
16
|
-
end
|
17
|
-
hw = HangoutWrapper.new
|
18
|
-
hw.call(Wrap[text, width: 35]).must_equal Wrap[wrap, width: 35]
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'passes the fixed text to the next layer and returns its outcome' do
|
22
|
-
final = fake(:wrap)
|
23
|
-
layer = fake(:layer)
|
24
|
-
mock(layer).call(any(Wrap)) { final }
|
25
|
-
wrapped = HangoutWrapper.new(layer).call(Wrap["I O\nU", width: 4])
|
26
|
-
wrapped.must_equal final
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'doesn’t let the last line to hang out' do
|
30
|
-
text = <<-end.dedent
|
31
|
-
Just found out the Finnish term for grammar Nazi is pilkunnussija.
|
32
|
-
Direct translation: comma fucker. You’re welcome.
|
33
|
-
end
|
34
|
-
HangoutWrapper.new.call(Wrap[text, width: 76]).text.must_equal text
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require_relative '../spec_helper'
|
2
|
-
require_relative '../../lib/lovely_rufus/one_letter_gluer'
|
3
|
-
require_relative '../../lib/lovely_rufus/wrap'
|
4
|
-
|
5
|
-
module LovelyRufus
|
6
|
-
describe OneLetterGluer do
|
7
|
-
describe '#call' do
|
8
|
-
it 'replaces spaces after one-letter words with non-break spaces' do
|
9
|
-
text = 'I go crazy when I hear a cymbal and a hi-hat'
|
10
|
-
glue = 'I go crazy when I hear a cymbal and a hi-hat'
|
11
|
-
olg = OneLetterGluer.new
|
12
|
-
olg.call(Wrap[text, width: 42]).must_equal Wrap[glue, width: 42]
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'glues subsequent one-letter words' do
|
16
|
-
text = 'one-letter words in English: a, I & o'
|
17
|
-
glue = 'one-letter words in English: a, I & o'
|
18
|
-
olg = OneLetterGluer.new
|
19
|
-
olg.call(Wrap[text, width: 42]).must_equal Wrap[glue, width: 42]
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'passes the fixed text to the next layer and returns its outcome' do
|
23
|
-
final = fake(:wrap)
|
24
|
-
layer = fake(:layer)
|
25
|
-
mock(layer).call(Wrap['I O U', width: 69]) { final }
|
26
|
-
glued = OneLetterGluer.new(layer).call(Wrap['I O U', width: 69])
|
27
|
-
glued.must_equal final
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,131 +0,0 @@
|
|
1
|
-
require_relative '../spec_helper'
|
2
|
-
require_relative '../../lib/lovely_rufus/quote_stripper'
|
3
|
-
require_relative '../../lib/lovely_rufus/wrap'
|
4
|
-
|
5
|
-
module LovelyRufus
|
6
|
-
describe QuoteStripper do
|
7
|
-
describe '#call' do
|
8
|
-
it 'strips quotes and adjusts width before calling the next layer' do
|
9
|
-
quoted = <<-end.dedent
|
10
|
-
> to the extreme I rock a mic like a vandal
|
11
|
-
> light up a stage and wax a chump like a candle
|
12
|
-
end
|
13
|
-
unquoted = <<-end.dedent
|
14
|
-
to the extreme I rock a mic like a vandal
|
15
|
-
light up a stage and wax a chump like a candle
|
16
|
-
end
|
17
|
-
layer = fake(:layer, call: Wrap[unquoted, width: 70])
|
18
|
-
QuoteStripper.new(layer).call(Wrap[quoted, width: 72])
|
19
|
-
layer.must_have_received :call, [Wrap[unquoted, width: 70]]
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'adds quotes back in (and adjusts width) before returning' do
|
23
|
-
quoted = <<-end.dedent
|
24
|
-
> take heed, ’cause I’m a lyrical poet
|
25
|
-
> Miami’s on the scene just in case you didn’t know it
|
26
|
-
end
|
27
|
-
wrap = Wrap[quoted, width: 72]
|
28
|
-
QuoteStripper.new.call(wrap).must_equal wrap
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'does not touch non-quoted texts' do
|
32
|
-
plain = <<-end.dedent
|
33
|
-
my town, that created all the bass sound
|
34
|
-
enough to shake and kick holes in the ground
|
35
|
-
end
|
36
|
-
wrap = Wrap[plain, width: 72]
|
37
|
-
QuoteStripper.new.call(wrap).must_equal wrap
|
38
|
-
end
|
39
|
-
|
40
|
-
it 'does not alter text contents' do
|
41
|
-
wrap = Wrap['> Ice > Ice > Baby']
|
42
|
-
QuoteStripper.new.call(wrap).must_equal wrap
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'strips multilevel quotes' do
|
46
|
-
quoted = <<-end.dedent
|
47
|
-
>> ’cause my style’s like a chemical spill
|
48
|
-
>> feasible rhymes that you can vision and feel
|
49
|
-
end
|
50
|
-
unquoted = <<-end.dedent
|
51
|
-
’cause my style’s like a chemical spill
|
52
|
-
feasible rhymes that you can vision and feel
|
53
|
-
end
|
54
|
-
layer = fake(:layer, call: Wrap[unquoted, width: 69])
|
55
|
-
QuoteStripper.new(layer).call(Wrap[quoted, width: 72])
|
56
|
-
layer.must_have_received :call, [Wrap[unquoted, width: 69]]
|
57
|
-
end
|
58
|
-
|
59
|
-
it 'strips broken quotes properly' do
|
60
|
-
quoted = <<-end.dedent
|
61
|
-
> > >conducted and formed this is a hell of a concept
|
62
|
-
> > >we make it hype and you want to step with this
|
63
|
-
end
|
64
|
-
unquoted = <<-end.dedent
|
65
|
-
conducted and formed this is a hell of a concept
|
66
|
-
we make it hype and you want to step with this
|
67
|
-
end
|
68
|
-
layer = fake(:layer, call: Wrap[unquoted, width: 68])
|
69
|
-
QuoteStripper.new(layer).call(Wrap[quoted, width: 72])
|
70
|
-
layer.must_have_received :call, [Wrap[unquoted, width: 68]]
|
71
|
-
end
|
72
|
-
|
73
|
-
it 'fixes broken quotes when adding them back in' do
|
74
|
-
quoted = <<-end.dedent
|
75
|
-
> > >Shay plays on the fade,
|
76
|
-
> > >slice like a ninja
|
77
|
-
> > >cut like a razor blade
|
78
|
-
end
|
79
|
-
fixed = <<-end.dedent
|
80
|
-
>>> Shay plays on the fade,
|
81
|
-
>>> slice like a ninja
|
82
|
-
>>> cut like a razor blade
|
83
|
-
end
|
84
|
-
wrap = Wrap[quoted, width: 72]
|
85
|
-
QuoteStripper.new.call(wrap).must_equal Wrap[fixed, width: 72]
|
86
|
-
end
|
87
|
-
|
88
|
-
it 'strips // code comments' do
|
89
|
-
quoted = <<-end.dedent
|
90
|
-
// so fast other DJs say ‘damn!’
|
91
|
-
// if my rhyme was a drug I’d sell it by the gram
|
92
|
-
end
|
93
|
-
unquoted = <<-end.dedent
|
94
|
-
so fast other DJs say ‘damn!’
|
95
|
-
if my rhyme was a drug I’d sell it by the gram
|
96
|
-
end
|
97
|
-
layer = fake(:layer, call: Wrap[unquoted, width: 69])
|
98
|
-
QuoteStripper.new(layer).call(Wrap[quoted, width: 72])
|
99
|
-
layer.must_have_received :call, [Wrap[unquoted, width: 69]]
|
100
|
-
end
|
101
|
-
|
102
|
-
it 'strips # code comments' do
|
103
|
-
quoted = <<-end.dedent
|
104
|
-
# keep my composure when it’s time to get loose
|
105
|
-
# magnetized by the mic while I kick my juice
|
106
|
-
end
|
107
|
-
unquoted = <<-end.dedent
|
108
|
-
keep my composure when it’s time to get loose
|
109
|
-
magnetized by the mic while I kick my juice
|
110
|
-
end
|
111
|
-
layer = fake(:layer, call: Wrap[unquoted, width: 70])
|
112
|
-
QuoteStripper.new(layer).call(Wrap[quoted, width: 72])
|
113
|
-
layer.must_have_received :call, [Wrap[unquoted, width: 70]]
|
114
|
-
end
|
115
|
-
|
116
|
-
it 'only considers homogenous characters as comments' do
|
117
|
-
quoted = <<-end.dedent
|
118
|
-
> /if there was a problem,
|
119
|
-
> yo – I’ll solve it!/
|
120
|
-
end
|
121
|
-
unquoted = <<-end.dedent
|
122
|
-
/if there was a problem,
|
123
|
-
yo – I’ll solve it!/
|
124
|
-
end
|
125
|
-
layer = fake(:layer, call: Wrap[unquoted, width: 70])
|
126
|
-
QuoteStripper.new(layer).call(Wrap[quoted, width: 72])
|
127
|
-
layer.must_have_received :call, [Wrap[unquoted, width: 70]]
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|