lovely_rufus 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.rubocop.yml +20 -0
- data/.ruby-version +1 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +48 -0
- data/LICENCE +661 -0
- data/README.md +67 -0
- data/Rakefile +18 -0
- data/bin/lovely-rufus +4 -0
- data/config/reek.yml +14 -0
- data/lib/lovely_rufus/basic_wrapper.rb +17 -0
- data/lib/lovely_rufus/cli_wrapper.rb +30 -0
- data/lib/lovely_rufus/hangout_wrapper.rb +32 -0
- data/lib/lovely_rufus/layer.rb +12 -0
- data/lib/lovely_rufus/one_letter_gluer.rb +7 -0
- data/lib/lovely_rufus/quote_stripper.rb +27 -0
- data/lib/lovely_rufus/text_wrapper.rb +29 -0
- data/lib/lovely_rufus/wrap.rb +10 -0
- data/lib/lovely_rufus.rb +13 -0
- data/lovely_rufus.gemspec +20 -0
- data/spec/lovely_rufus/basic_wrapper_spec.rb +43 -0
- data/spec/lovely_rufus/cli_wrapper_spec.rb +27 -0
- data/spec/lovely_rufus/hangout_wrapper_spec.rb +25 -0
- data/spec/lovely_rufus/one_letter_gluer_spec.rb +26 -0
- data/spec/lovely_rufus/quote_stripper_spec.rb +113 -0
- data/spec/lovely_rufus/text_wrapper_spec.rb +40 -0
- data/spec/lovely_rufus/text_wrapper_spec.yml +166 -0
- data/spec/lovely_rufus/wrap_spec.rb +27 -0
- data/spec/spec_helper.rb +15 -0
- metadata +150 -0
@@ -0,0 +1,166 @@
|
|
1
|
+
# returns unwrapped input if it’s short enough
|
2
|
+
- input: ‘Etiquette’ by Sir William Schwenck Gilbert
|
3
|
+
output: ‘Etiquette’ by Sir William Schwenck Gilbert
|
4
|
+
|
5
|
+
# wraps short input if requested to wrap it shorter, avoiding hangouts
|
6
|
+
- width: 16
|
7
|
+
input: ‘Etiquette’ by Sir William Schwenck Gilbert
|
8
|
+
output: |-
|
9
|
+
‘Etiquette’
|
10
|
+
by Sir William
|
11
|
+
Schwenck Gilbert
|
12
|
+
|
13
|
+
# wraps long input to 72 characters by default, targetting similar line length
|
14
|
+
- input: The Ballyshannon foundered off the coast of Cariboo, And down in fathoms many went the captain and the crew;
|
15
|
+
output: |-
|
16
|
+
The Ballyshannon foundered off the coast of Cariboo,
|
17
|
+
And down in fathoms many went the captain and the crew;
|
18
|
+
|
19
|
+
# rewraps multiline paragraphs
|
20
|
+
- input: |-
|
21
|
+
Down went the owners — greedy men
|
22
|
+
whom hope of gain allured:
|
23
|
+
Oh, dry the starting tear,
|
24
|
+
for they were heavily insured.
|
25
|
+
output: |-
|
26
|
+
Down went the owners — greedy men whom hope of gain allured:
|
27
|
+
Oh, dry the starting tear, for they were heavily insured.
|
28
|
+
|
29
|
+
# wrapped paragraphs are as short as possible
|
30
|
+
- input: |-
|
31
|
+
Besides the captain and the mate, the owners and the crew,
|
32
|
+
The passengers were also drowned, excepting only two:
|
33
|
+
Young PETER GRAY, who tasted teas for BAKER, CROOP, AND CO.,
|
34
|
+
And SOMERS, who from Eastern shores imported indigo.
|
35
|
+
output: |-
|
36
|
+
Besides the captain and the mate, the owners and the crew,
|
37
|
+
The passengers were also drowned, excepting only two: Young
|
38
|
+
PETER GRAY, who tasted teas for BAKER, CROOP, AND CO.,
|
39
|
+
And SOMERS, who from Eastern shores imported indigo.
|
40
|
+
|
41
|
+
# one-letter words are not left at line ends
|
42
|
+
- width: 39
|
43
|
+
input: |-
|
44
|
+
These passengers, by reason of their clinging to a mast,
|
45
|
+
Upon a desert island were eventually cast.
|
46
|
+
They hunted for their meals, as ALEXANDER SELKIRK used,
|
47
|
+
But they couldn’t chat together — they had not been introduced.
|
48
|
+
output: |-
|
49
|
+
These passengers, by reason of their
|
50
|
+
clinging to a mast, Upon a desert
|
51
|
+
island were eventually cast.
|
52
|
+
They hunted for their meals,
|
53
|
+
as ALEXANDER SELKIRK used, But
|
54
|
+
they couldn’t chat together —
|
55
|
+
they had not been introduced.
|
56
|
+
|
57
|
+
# multiple paragraphs are wrapped independently
|
58
|
+
- input: |-
|
59
|
+
For PETER GRAY, and SOMERS too, though certainly in trade,
|
60
|
+
Were properly particular about the friends they made;
|
61
|
+
And somehow thus they settled it without a word of mouth —
|
62
|
+
That GRAY should take the northern half while SOMERS took the south.
|
63
|
+
|
64
|
+
On PETER’S portion oysters grew — a delicacy rare,
|
65
|
+
But oysters were a delicacy PETER couldn’t bear.
|
66
|
+
On SOMERS’ side was turtle, on the shingle lying thick,
|
67
|
+
Which SOMERS couldn’t eat, because it always made him sick.
|
68
|
+
output: |-
|
69
|
+
For PETER GRAY, and SOMERS too, though certainly in trade, Were
|
70
|
+
properly particular about the friends they made; And somehow
|
71
|
+
thus they settled it without a word of mouth — That GRAY
|
72
|
+
should take the northern half while SOMERS took the south.
|
73
|
+
|
74
|
+
On PETER’S portion oysters grew — a delicacy rare, But
|
75
|
+
oysters were a delicacy PETER couldn’t bear. On SOMERS’
|
76
|
+
side was turtle, on the shingle lying thick, Which
|
77
|
+
SOMERS couldn’t eat, because it always made him sick.
|
78
|
+
|
79
|
+
# email-quoted paragraphs are wrapped regardless of quotes
|
80
|
+
- input: |-
|
81
|
+
> On PETER’S portion oysters grew — a delicacy rare,
|
82
|
+
> But oysters were a delicacy PETER couldn’t bear.
|
83
|
+
> On SOMERS’ side was turtle, on the shingle lying thick,
|
84
|
+
> Which SOMERS couldn’t eat, because it always made him sick.
|
85
|
+
output: |-
|
86
|
+
> On PETER’S portion oysters grew — a delicacy rare, But
|
87
|
+
> oysters were a delicacy PETER couldn’t bear. On SOMERS’
|
88
|
+
> side was turtle, on the shingle lying thick, Which
|
89
|
+
> SOMERS couldn’t eat, because it always made him sick.
|
90
|
+
|
91
|
+
# email quotes can be of any depth
|
92
|
+
- input: |-
|
93
|
+
>> GRAY gnashed his teeth with envy as he saw a mighty store
|
94
|
+
>> Of turtle unmolested on his fellow-creature’s shore:
|
95
|
+
>> The oysters at his feet aside impatiently he shoved,
|
96
|
+
>> For turtle and his mother were the only things he loved.
|
97
|
+
output: |-
|
98
|
+
>> GRAY gnashed his teeth with envy as he saw a mighty store
|
99
|
+
>> Of turtle unmolested on his fellow-creature’s shore:
|
100
|
+
>> The oysters at his feet aside impatiently he shoved,
|
101
|
+
>> For turtle and his mother were the only things he loved.
|
102
|
+
|
103
|
+
# email quotes are normalised upon wrapping
|
104
|
+
- input: |-
|
105
|
+
> > >And SOMERS sighed in sorrow as he settled in the south,
|
106
|
+
> > >For the thought of PETER’S oysters brought the water to his mouth.
|
107
|
+
> > >He longed to lay him down upon the shelly bed, and stuff:
|
108
|
+
> > >He had often eaten oysters, but had never had enough.
|
109
|
+
output: |-
|
110
|
+
>>> And SOMERS sighed in sorrow as he settled in the south, For
|
111
|
+
>>> the thought of PETER’S oysters brought the water to his mouth.
|
112
|
+
>>> He longed to lay him down upon the shelly bed, and stuff:
|
113
|
+
>>> He had often eaten oysters, but had never had enough.
|
114
|
+
|
115
|
+
# quoted paragraph breaks are cleared
|
116
|
+
- input: |-
|
117
|
+
>> How they wished an introduction to each other they had had
|
118
|
+
>> When on board The Ballyshannon! And it drove them nearly mad
|
119
|
+
>> To think how very friendly with each other they might get,
|
120
|
+
>> If it wasn’t for the arbitrary rule of etiquette!
|
121
|
+
>
|
122
|
+
> One day, when out a-hunting for the mus ridiculus,
|
123
|
+
> GRAY overheard his fellow-man soliloquising thus:
|
124
|
+
> ‘I wonder how the playmates of my youth are getting on,
|
125
|
+
> MCCONNELL, S. B. WALTERS, PADDY BYLES, and ROBINSON?’
|
126
|
+
output: |-
|
127
|
+
>> How they wished an introduction to each other they had had
|
128
|
+
>> When on board The Ballyshannon! And it drove them nearly
|
129
|
+
>> mad To think how very friendly with each other they might
|
130
|
+
>> get, If it wasn’t for the arbitrary rule of etiquette!
|
131
|
+
|
132
|
+
> One day, when out a-hunting for the mus ridiculus, GRAY overheard his
|
133
|
+
> fellow-man soliloquising thus: ‘I wonder how the playmates of my youth
|
134
|
+
> are getting on, MCCONNELL, S. B. WALTERS, PADDY BYLES, and ROBINSON?’
|
135
|
+
|
136
|
+
# code comments are handled like email-quoted text
|
137
|
+
- input: |-
|
138
|
+
// These simple words made PETER as delighted as could be,
|
139
|
+
// Old chummies at the Charterhouse were ROBINSON and he!
|
140
|
+
// He walked straight up to SOMERS, then he turned extremely red,
|
141
|
+
// Hesitated, hummed and hawed a bit, then cleared his throat, and said:
|
142
|
+
//
|
143
|
+
# ‘I beg your pardon—pray forgive me if I seem too bold,
|
144
|
+
# But you have breathed a name I knew familiarly of old.
|
145
|
+
# You spoke aloud of ROBINSON – I happened to be by—
|
146
|
+
# You know him?’ ‘Yes, extremely well.’ ‘Allow me – so do I!’
|
147
|
+
#
|
148
|
+
It was enough: they felt they could more sociably get on,
|
149
|
+
For (ah, the magic of the fact!) they each knew ROBINSON!
|
150
|
+
And MR. SOMERS’ turtle was at PETER’S service quite,
|
151
|
+
And MR. SOMERS punished PETER’S oyster-beds all night.
|
152
|
+
output: |-
|
153
|
+
// These simple words made PETER as delighted as could be, Old chummies
|
154
|
+
// at the Charterhouse were ROBINSON and he! He walked straight
|
155
|
+
// up to SOMERS, then he turned extremely red, Hesitated,
|
156
|
+
// hummed and hawed a bit, then cleared his throat, and said:
|
157
|
+
|
158
|
+
# ‘I beg your pardon—pray forgive me if I seem too bold,
|
159
|
+
# But you have breathed a name I knew familiarly of old.
|
160
|
+
# You spoke aloud of ROBINSON – I happened to be by— You
|
161
|
+
# know him?’ ‘Yes, extremely well.’ ‘Allow me – so do I!’
|
162
|
+
|
163
|
+
It was enough: they felt they could more sociably get on,
|
164
|
+
For (ah, the magic of the fact!) they each knew ROBINSON!
|
165
|
+
And MR. SOMERS’ turtle was at PETER’S service quite,
|
166
|
+
And MR. SOMERS punished PETER’S oyster-beds all night.
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require_relative '../spec_helper'
|
2
|
+
|
3
|
+
module LovelyRufus describe Wrap do
|
4
|
+
describe '.[]' do
|
5
|
+
it 'creates a Wrap with the given text and target width' do
|
6
|
+
Wrap['Ice Ice Baby', width: 7].text.must_equal 'Ice Ice Baby'
|
7
|
+
Wrap['Ice Ice Baby', width: 7].width.must_equal 7
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'defaults to empty text and width of 72' do
|
11
|
+
Wrap[].text.must_equal ''
|
12
|
+
Wrap[].width.must_equal 72
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#text' do
|
17
|
+
it 'accesses the text of the Wrap' do
|
18
|
+
Wrap['Ice Ice Baby', width: 7].text.must_equal 'Ice Ice Baby'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#width' do
|
23
|
+
it 'accesses the target width of the Wrap' do
|
24
|
+
Wrap['Ice Ice Baby', width: 7].width.must_equal 7
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'minitest/focus'
|
4
|
+
require 'minitest/pride'
|
5
|
+
require 'bogus/minitest/spec'
|
6
|
+
require 'yaml'
|
7
|
+
require 'lovely_rufus'
|
8
|
+
|
9
|
+
Bogus.configure { |config| config.search_modules << LovelyRufus }
|
10
|
+
|
11
|
+
class String
|
12
|
+
def dedent
|
13
|
+
gsub(/^#{self[/\A\s*/]}/, '')
|
14
|
+
end
|
15
|
+
end
|
metadata
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lovely_rufus
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Piotr Szotkowski
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-02-17 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bogus
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.1.4
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.1.4
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '5.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '5.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest-focus
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.1'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: reek
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.3'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.3'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rubocop
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.18.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.18.0
|
83
|
+
description: An executable and a Ruby library for wrapping paragraphs of text.
|
84
|
+
email: chastell@chastell.net
|
85
|
+
executables:
|
86
|
+
- lovely-rufus
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- ".rubocop.yml"
|
91
|
+
- ".ruby-version"
|
92
|
+
- Gemfile
|
93
|
+
- Gemfile.lock
|
94
|
+
- LICENCE
|
95
|
+
- README.md
|
96
|
+
- Rakefile
|
97
|
+
- bin/lovely-rufus
|
98
|
+
- config/reek.yml
|
99
|
+
- lib/lovely_rufus.rb
|
100
|
+
- lib/lovely_rufus/basic_wrapper.rb
|
101
|
+
- lib/lovely_rufus/cli_wrapper.rb
|
102
|
+
- lib/lovely_rufus/hangout_wrapper.rb
|
103
|
+
- lib/lovely_rufus/layer.rb
|
104
|
+
- lib/lovely_rufus/one_letter_gluer.rb
|
105
|
+
- lib/lovely_rufus/quote_stripper.rb
|
106
|
+
- lib/lovely_rufus/text_wrapper.rb
|
107
|
+
- lib/lovely_rufus/wrap.rb
|
108
|
+
- lovely_rufus.gemspec
|
109
|
+
- spec/lovely_rufus/basic_wrapper_spec.rb
|
110
|
+
- spec/lovely_rufus/cli_wrapper_spec.rb
|
111
|
+
- spec/lovely_rufus/hangout_wrapper_spec.rb
|
112
|
+
- spec/lovely_rufus/one_letter_gluer_spec.rb
|
113
|
+
- spec/lovely_rufus/quote_stripper_spec.rb
|
114
|
+
- spec/lovely_rufus/text_wrapper_spec.rb
|
115
|
+
- spec/lovely_rufus/text_wrapper_spec.yml
|
116
|
+
- spec/lovely_rufus/wrap_spec.rb
|
117
|
+
- spec/spec_helper.rb
|
118
|
+
homepage: http://github.com/chastell/lovely_rufus
|
119
|
+
licenses:
|
120
|
+
- AGPL-3.0
|
121
|
+
metadata: {}
|
122
|
+
post_install_message:
|
123
|
+
rdoc_options: []
|
124
|
+
require_paths:
|
125
|
+
- lib
|
126
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - ">="
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
136
|
+
requirements: []
|
137
|
+
rubyforge_project:
|
138
|
+
rubygems_version: 2.2.0
|
139
|
+
signing_key:
|
140
|
+
specification_version: 4
|
141
|
+
summary: 'lovely_rufus: text wrapper'
|
142
|
+
test_files:
|
143
|
+
- spec/lovely_rufus/basic_wrapper_spec.rb
|
144
|
+
- spec/lovely_rufus/cli_wrapper_spec.rb
|
145
|
+
- spec/lovely_rufus/hangout_wrapper_spec.rb
|
146
|
+
- spec/lovely_rufus/one_letter_gluer_spec.rb
|
147
|
+
- spec/lovely_rufus/quote_stripper_spec.rb
|
148
|
+
- spec/lovely_rufus/text_wrapper_spec.rb
|
149
|
+
- spec/lovely_rufus/wrap_spec.rb
|
150
|
+
- spec/spec_helper.rb
|