strings 0.1.4 → 0.2.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 +4 -4
- data/CHANGELOG.md +42 -1
- data/README.md +21 -17
- data/lib/strings.rb +9 -9
- data/lib/strings/align.rb +23 -16
- data/lib/strings/extensions.rb +15 -11
- data/lib/strings/fold.rb +2 -2
- data/lib/strings/pad.rb +13 -11
- data/lib/strings/padder.rb +4 -4
- data/lib/strings/truncate.rb +9 -8
- data/lib/strings/version.rb +1 -1
- data/lib/strings/wrap.rb +63 -53
- metadata +32 -63
- data/Rakefile +0 -8
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/spec/spec_helper.rb +0 -37
- data/spec/unit/align/align_left_spec.rb +0 -62
- data/spec/unit/align/align_right_spec.rb +0 -62
- data/spec/unit/align/align_spec.rb +0 -77
- data/spec/unit/align_spec.rb +0 -18
- data/spec/unit/ansi_spec.rb +0 -7
- data/spec/unit/extensions_spec.rb +0 -51
- data/spec/unit/fold/fold_spec.rb +0 -28
- data/spec/unit/fold_spec.rb +0 -7
- data/spec/unit/pad/pad_spec.rb +0 -63
- data/spec/unit/pad_spec.rb +0 -12
- data/spec/unit/padder/parse_spec.rb +0 -35
- data/spec/unit/sanitize_spec.rb +0 -7
- data/spec/unit/truncate/truncate_spec.rb +0 -70
- data/spec/unit/truncate_spec.rb +0 -8
- data/spec/unit/wrap/wrap_spec.rb +0 -155
- data/spec/unit/wrap_spec.rb +0 -15
- data/strings.gemspec +0 -30
- data/tasks/console.rake +0 -11
- data/tasks/coverage.rake +0 -11
- data/tasks/spec.rake +0 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d112bf8f896e770e61346f4f64c2dff39c1d5ec630321d811fadbcf4a96cb0b
|
4
|
+
data.tar.gz: 58242b6240dc5400dd1262a4e7692574d60fe2415e6957db8bf7ec0fd52d861c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 68e35d997825c8f3f5349236688db5be5b7c1fc8f5b560f53321e666a4e7dc7dd94c837fe6bf13d97c13d22d34010f0201d3a697956b212c157d835a3549fb15
|
7
|
+
data.tar.gz: '087381e615bfa11ddeeacdeca1fbfb866ca4c70977f60df1ad4d02e7fd25b12154e32158e32ada3fe4815ce122288a097112877e85c3ac0cbe4e6bf284b878c0'
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,41 @@
|
|
1
1
|
# Change log
|
2
2
|
|
3
|
+
## [v0.2.0] - 2020-08-11
|
4
|
+
|
5
|
+
### Changed
|
6
|
+
* Change String#wrap to preserve newline character breaks
|
7
|
+
* Change gemspec to remove test artefacts and bundler dev dependency
|
8
|
+
* Change gemspec to require Ruby >= 2.0.0
|
9
|
+
|
10
|
+
## [v0.1.8] - 2019-11-24
|
11
|
+
|
12
|
+
### Fixed
|
13
|
+
* Fix Ruby 2.7 warnings by Ryan Davis(@zenspider)
|
14
|
+
|
15
|
+
## [v0.1.7] - 2019-11-14
|
16
|
+
|
17
|
+
### Added
|
18
|
+
* Add metadata to gemspec
|
19
|
+
|
20
|
+
### Fixed
|
21
|
+
* Fix Truncate#truncate to accept length of 1 by Katelyn Schiesser(@slowbro)
|
22
|
+
|
23
|
+
## [v0.1.6] - 2019-08-28
|
24
|
+
|
25
|
+
### Changed
|
26
|
+
* Change Wrap#wrap, Align#align & Pad#pad to handle different line endings
|
27
|
+
* Change Pad#pad to pad empty lines
|
28
|
+
|
29
|
+
### Fixed
|
30
|
+
* Fix Wrap#wrap to handle adjacent ANSI codes
|
31
|
+
* Fix Wrap#insert_ansi to handle nested ANSI codes
|
32
|
+
|
33
|
+
## [v0.1.5] - 2019-03-29
|
34
|
+
|
35
|
+
### Changed
|
36
|
+
* Change to update unicode-display_width to the latest version
|
37
|
+
* Change to relax development dependencies versions
|
38
|
+
|
3
39
|
## [v0.1.4] - 2018-09-10
|
4
40
|
|
5
41
|
### Fixed
|
@@ -22,8 +58,13 @@
|
|
22
58
|
|
23
59
|
## [v0.1.0] - 2018-01-07
|
24
60
|
|
25
|
-
*
|
61
|
+
* Initial implementation and release
|
26
62
|
|
63
|
+
[v0.2.0]: https://github.com/piotrmurach/strings/compare/v0.1.8...v0.2.0
|
64
|
+
[v0.1.8]: https://github.com/piotrmurach/strings/compare/v0.1.7...v0.1.8
|
65
|
+
[v0.1.7]: https://github.com/piotrmurach/strings/compare/v0.1.6...v0.1.7
|
66
|
+
[v0.1.6]: https://github.com/piotrmurach/strings/compare/v0.1.5...v0.1.6
|
67
|
+
[v0.1.5]: https://github.com/piotrmurach/strings/compare/v0.1.4...v0.1.5
|
27
68
|
[v0.1.4]: https://github.com/piotrmurach/strings/compare/v0.1.3...v0.1.4
|
28
69
|
[v0.1.3]: https://github.com/piotrmurach/strings/compare/v0.1.2...v0.1.3
|
29
70
|
[v0.1.2]: https://github.com/piotrmurach/strings/compare/v0.1.1...v0.1.2
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
<div align="center">
|
2
|
-
<img width="225" src="https://
|
2
|
+
<img width="225" src="https://github.com/piotrmurach/strings/blob/master/assets/strings_logo.png" alt="strings logo" />
|
3
3
|
</div>
|
4
4
|
|
5
5
|
# Strings
|
@@ -18,7 +18,7 @@
|
|
18
18
|
[coverage]: https://coveralls.io/github/piotrmurach/strings?branch=master
|
19
19
|
[inchpages]: http://inch-ci.org/github/piotrmurach/strings
|
20
20
|
|
21
|
-
>
|
21
|
+
> A set of useful methods for working with strings such as align, truncate, wrap, and many more.
|
22
22
|
|
23
23
|
## Installation
|
24
24
|
|
@@ -41,8 +41,9 @@ Or install it yourself as:
|
|
41
41
|
* No monkey-patching String class
|
42
42
|
* Functional API that can be easily wrapped by other objects
|
43
43
|
* Supports multibyte character encodings such as UTF-8, EUC-JP
|
44
|
-
* Handles languages without
|
44
|
+
* Handles languages without white-spaces between words (like Chinese and Japanese)
|
45
45
|
* Supports ANSI escape codes
|
46
|
+
* Flexible by nature, split into [components](#4-components)
|
46
47
|
|
47
48
|
## Contents
|
48
49
|
|
@@ -56,7 +57,7 @@ Or install it yourself as:
|
|
56
57
|
* [2.6 truncate](#26-truncate)
|
57
58
|
* [2.7 wrap](#27-wrap)
|
58
59
|
* [3. Extending String class](#3-extending-string-class)
|
59
|
-
* [4.
|
60
|
+
* [4. Components](#4-components)
|
60
61
|
|
61
62
|
## 1. Usage
|
62
63
|
|
@@ -132,14 +133,14 @@ Strings.align_left(text, 20)
|
|
132
133
|
|
133
134
|
### 2.2 ansi?
|
134
135
|
|
135
|
-
To check if a string includes ANSI escape codes use `ansi?` like so:
|
136
|
+
To check if a string includes ANSI escape codes use `ansi?` method like so:
|
136
137
|
|
137
138
|
```ruby
|
138
139
|
Strings.ansi?("\e[33;44mfoo\e[0m")
|
139
140
|
# => true
|
140
141
|
```
|
141
142
|
|
142
|
-
|
143
|
+
Or fully qualified name:
|
143
144
|
|
144
145
|
```ruby
|
145
146
|
Strings::ANSI.ansi?("\e[33;44mfoo\e[0m")
|
@@ -148,7 +149,7 @@ Strings::ANSI.ansi?("\e[33;44mfoo\e[0m")
|
|
148
149
|
|
149
150
|
### 2.3 fold
|
150
151
|
|
151
|
-
To fold a multiline text into a single line preserving
|
152
|
+
To fold a multiline text into a single line preserving white-space characters use `fold`:
|
152
153
|
|
153
154
|
```ruby
|
154
155
|
Strings.fold("\tfoo \r\n\n bar")
|
@@ -277,7 +278,7 @@ text = 'ラドクリフ、マラソン五輪代表に1万m出場にも含み'
|
|
277
278
|
Strings.truncate(text, 12) # => "ラドクリフ…"
|
278
279
|
```
|
279
280
|
|
280
|
-
**Strings::Truncate** works with ANSI escape
|
281
|
+
**Strings::Truncate** works with ANSI escape codes:
|
281
282
|
|
282
283
|
```ruby
|
283
284
|
text = "I try \e[34mall things\e[0m, I achieve what I can"
|
@@ -287,12 +288,12 @@ Strings.truncate(text, 18)
|
|
287
288
|
|
288
289
|
### 2.7 wrap
|
289
290
|
|
290
|
-
To wrap text into lines no longer than `wrap_at` argument length, the `wrap` method will break either on
|
291
|
+
To wrap text into lines no longer than `wrap_at` argument length, the `wrap` method will break either on white-space character or in case of east Asian characters on character boundaries.
|
291
292
|
|
292
293
|
Given the following text:
|
293
294
|
|
294
295
|
```ruby
|
295
|
-
text "Think not, is my eleventh commandment; and sleep when you can, is my twelfth."
|
296
|
+
text = "Think not, is my eleventh commandment; and sleep when you can, is my twelfth."
|
296
297
|
```
|
297
298
|
|
298
299
|
Then to wrap the text to given length do:
|
@@ -338,7 +339,7 @@ Strings::Wrap.wrap(text, wrap_at)
|
|
338
339
|
|
339
340
|
## 3. Extending String class
|
340
341
|
|
341
|
-
Though it is highly discouraged to
|
342
|
+
Though it is highly discouraged to pollute core Ruby classes, you can add the required methods to `String` class by using refinements.
|
342
343
|
|
343
344
|
For example, if you wish to only extend strings with `wrap` method do:
|
344
345
|
|
@@ -352,7 +353,7 @@ module MyStringExt
|
|
352
353
|
end
|
353
354
|
```
|
354
355
|
|
355
|
-
|
356
|
+
Then `wrap` method will be available for any strings where refinement is applied:
|
356
357
|
|
357
358
|
```ruby
|
358
359
|
using MyStringExt
|
@@ -368,13 +369,16 @@ require 'strings/extensions'
|
|
368
369
|
using Strings::Extensions
|
369
370
|
```
|
370
371
|
|
371
|
-
## 4.
|
372
|
+
## 4. Components
|
372
373
|
|
373
|
-
**Strings** aims to be
|
374
|
+
**Strings** aims to be flexible and allow you to choose only the components that you need. Currently you can choose from:
|
374
375
|
|
375
|
-
|
|
376
|
+
| Component | Description | API docs |
|
376
377
|
| ------------ | ----------- | -------- |
|
377
378
|
| [strings-ansi](https://github.com/piotrmurach/strings-ansi) | Handle ANSI escape codes in strings. | [docs](http://www.rubydoc.info/gems/strings-ansi) |
|
379
|
+
| [strings-case](https://github.com/piotrmurach/strings-case) | Handle case transformations in strings. | [docs](http://www.rubydoc.info/gems/strings-case) |
|
380
|
+
| [strings-inflection](https://github.com/piotrmurach/strings-inflection) | Inflects English nouns and verbs. | [docs](http://www.rubydoc.info/gems/strings-inflection) |
|
381
|
+
| [strings-numeral](https://github.com/piotrmurach/strings-numeral) | Express numbers as word numerals. | [docs](http://www.rubydoc.info/gems/strings-numeral) |
|
378
382
|
|
379
383
|
## Development
|
380
384
|
|
@@ -386,7 +390,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
386
390
|
|
387
391
|
Bug reports and pull requests are welcome on GitHub at https://github.com/piotrmurach/strings. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
388
392
|
|
389
|
-
1. Fork it ( https://github.com/piotrmurach/
|
393
|
+
1. Fork it ( https://github.com/piotrmurach/strings/fork )
|
390
394
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
391
395
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
392
396
|
4. Push to the branch (`git push origin my-new-feature`)
|
@@ -402,4 +406,4 @@ Everyone interacting in the Strings project’s codebases, issue trackers, chat
|
|
402
406
|
|
403
407
|
## Copyright
|
404
408
|
|
405
|
-
Copyright (c) 2017
|
409
|
+
Copyright (c) 2017 Piotr Murach. See LICENSE for further details.
|
data/lib/strings.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "strings-ansi"
|
4
4
|
|
5
|
-
require_relative
|
6
|
-
require_relative
|
7
|
-
require_relative
|
8
|
-
require_relative
|
9
|
-
require_relative
|
10
|
-
require_relative
|
5
|
+
require_relative "strings/align"
|
6
|
+
require_relative "strings/fold"
|
7
|
+
require_relative "strings/pad"
|
8
|
+
require_relative "strings/truncate"
|
9
|
+
require_relative "strings/wrap"
|
10
|
+
require_relative "strings/version"
|
11
11
|
|
12
12
|
module Strings
|
13
13
|
# Align text within the width.
|
@@ -15,8 +15,8 @@ module Strings
|
|
15
15
|
# @see Strings::Align#align
|
16
16
|
#
|
17
17
|
# @api public
|
18
|
-
def align(*args)
|
19
|
-
Align.align(*args)
|
18
|
+
def align(*args, **kws)
|
19
|
+
Align.align(*args, **kws)
|
20
20
|
end
|
21
21
|
module_function :align
|
22
22
|
|
data/lib/strings/align.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "strings-ansi"
|
4
|
+
require "unicode/display_width"
|
5
5
|
|
6
6
|
module Strings
|
7
7
|
# Responsible for text alignment
|
8
8
|
module Align
|
9
|
-
NEWLINE = "\n"
|
10
|
-
|
11
|
-
|
9
|
+
NEWLINE = "\n"
|
10
|
+
SPACE = " "
|
11
|
+
LINE_BREAK = %r{\r\n|\r|\n}.freeze
|
12
12
|
|
13
13
|
# Aligns text within the width.
|
14
14
|
#
|
@@ -23,23 +23,24 @@ module Strings
|
|
23
23
|
# @example
|
24
24
|
# text = "the madness of men"
|
25
25
|
#
|
26
|
-
# Strings::Align.align(22, :left)
|
26
|
+
# Strings::Align.align(text, 22, direction: :left)
|
27
27
|
# # => "the madness of men "
|
28
28
|
#
|
29
|
-
# Strings::Align.align(22, :center)
|
29
|
+
# Strings::Align.align(text, 22, direction: :center)
|
30
30
|
# # => " the madness of men "
|
31
31
|
#
|
32
|
-
# Strings::Align(22, :right)
|
32
|
+
# Strings::Align(text, 22, direction: :right)
|
33
33
|
# # => " the madness of men"
|
34
34
|
#
|
35
|
-
# Strings::Align.align(22, :center, fill:
|
35
|
+
# Strings::Align.align(text, 22, direction: :center, fill: "*")
|
36
36
|
# # => "***the madness of men***"
|
37
37
|
#
|
38
38
|
# @api public
|
39
39
|
def align(text, width, direction: :left, **options)
|
40
40
|
return text if width.nil?
|
41
|
+
|
41
42
|
method = to_alignment(direction)
|
42
|
-
send(method, text, width, options)
|
43
|
+
send(method, text, width, **options)
|
43
44
|
end
|
44
45
|
module_function :align
|
45
46
|
|
@@ -62,9 +63,11 @@ module Strings
|
|
62
63
|
# @return [String]
|
63
64
|
#
|
64
65
|
# @api public
|
65
|
-
def align_left(text, width, fill: SPACE, separator:
|
66
|
+
def align_left(text, width, fill: SPACE, separator: nil)
|
66
67
|
return if width.nil?
|
67
|
-
|
68
|
+
sep = separator || text[LINE_BREAK] || NEWLINE
|
69
|
+
|
70
|
+
each_line(text, sep) do |line|
|
68
71
|
width_diff = width - display_width(line)
|
69
72
|
if width_diff > 0
|
70
73
|
line + fill * width_diff
|
@@ -80,9 +83,11 @@ module Strings
|
|
80
83
|
# @return [String]
|
81
84
|
#
|
82
85
|
# @api public
|
83
|
-
def align_center(text, width, fill: SPACE, separator:
|
86
|
+
def align_center(text, width, fill: SPACE, separator: nil)
|
84
87
|
return text if width.nil?
|
85
|
-
|
88
|
+
sep = separator || text[LINE_BREAK] || NEWLINE
|
89
|
+
|
90
|
+
each_line(text, sep) do |line|
|
86
91
|
width_diff = width - display_width(line)
|
87
92
|
if width_diff > 0
|
88
93
|
right_count = (width_diff.to_f / 2).ceil
|
@@ -100,9 +105,11 @@ module Strings
|
|
100
105
|
# @return [String]
|
101
106
|
#
|
102
107
|
# @api public
|
103
|
-
def align_right(text, width, fill: SPACE, separator:
|
108
|
+
def align_right(text, width, fill: SPACE, separator: nil)
|
104
109
|
return text if width.nil?
|
105
|
-
|
110
|
+
sep = separator || text[LINE_BREAK] || NEWLINE
|
111
|
+
|
112
|
+
each_line(text, sep) do |line|
|
106
113
|
width_diff = width - display_width(line)
|
107
114
|
if width_diff > 0
|
108
115
|
fill * width_diff + line
|
data/lib/strings/extensions.rb
CHANGED
@@ -1,20 +1,24 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
3
|
+
require_relative "../strings"
|
4
4
|
|
5
5
|
module Strings
|
6
6
|
module Extensions
|
7
7
|
refine String do
|
8
|
-
def align(*args)
|
9
|
-
Align.align(self, *args)
|
8
|
+
def align(*args, **kws)
|
9
|
+
Align.align(self, *args, **kws)
|
10
10
|
end
|
11
11
|
|
12
|
-
def align_left(*args)
|
13
|
-
Align.align_left(self, *args)
|
12
|
+
def align_left(*args, **kws)
|
13
|
+
Align.align_left(self, *args, **kws)
|
14
14
|
end
|
15
15
|
|
16
|
-
def
|
17
|
-
Align.
|
16
|
+
def align_center(*args, **kws)
|
17
|
+
Align.align_center(self, *args, **kws)
|
18
|
+
end
|
19
|
+
|
20
|
+
def align_right(*args, **kws)
|
21
|
+
Align.align_right(self, *args, **kws)
|
18
22
|
end
|
19
23
|
|
20
24
|
def ansi?
|
@@ -25,8 +29,8 @@ module Strings
|
|
25
29
|
Fold.fold(self, *args)
|
26
30
|
end
|
27
31
|
|
28
|
-
def pad(*args)
|
29
|
-
Pad.pad(self, *args)
|
32
|
+
def pad(*args, **kws)
|
33
|
+
Pad.pad(self, *args, **kws)
|
30
34
|
end
|
31
35
|
|
32
36
|
def sanitize
|
@@ -37,8 +41,8 @@ module Strings
|
|
37
41
|
Truncate.truncate(self, *args)
|
38
42
|
end
|
39
43
|
|
40
|
-
def wrap(*args)
|
41
|
-
Wrap.wrap(self, *args)
|
44
|
+
def wrap(*args, **kws)
|
45
|
+
Wrap.wrap(self, *args, **kws)
|
42
46
|
end
|
43
47
|
end
|
44
48
|
end # Extensions
|
data/lib/strings/fold.rb
CHANGED
@@ -7,7 +7,7 @@ module Strings
|
|
7
7
|
# Fold a multiline text into a single line string
|
8
8
|
#
|
9
9
|
# @example
|
10
|
-
# fold("\tfoo \r\n\n bar") # => "foo bar"
|
10
|
+
# fold("\tfoo \r\n\n bar") # => " foo bar"
|
11
11
|
#
|
12
12
|
# @param [String] text
|
13
13
|
#
|
@@ -20,7 +20,7 @@ module Strings
|
|
20
20
|
def fold(text, separator = LINE_BREAK)
|
21
21
|
text.gsub(/([ ]+)#{separator}/, "\\1")
|
22
22
|
.gsub(/#{separator}(?<space>[ ]+)/, "\\k<space>")
|
23
|
-
.gsub(/#{separator}/,
|
23
|
+
.gsub(/#{separator}/, " ")
|
24
24
|
end
|
25
25
|
module_function :fold
|
26
26
|
end # Fold
|
data/lib/strings/pad.rb
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "strings-ansi"
|
4
|
+
require "unicode/display_width"
|
5
5
|
|
6
|
-
require_relative
|
6
|
+
require_relative "padder"
|
7
7
|
|
8
8
|
module Strings
|
9
9
|
# Responsible for text padding
|
10
10
|
module Pad
|
11
|
-
NEWLINE = "\n"
|
12
|
-
|
13
|
-
|
11
|
+
NEWLINE = "\n"
|
12
|
+
SPACE = " "
|
13
|
+
LINE_BREAK = %r{\r\n|\r|\n}.freeze
|
14
14
|
|
15
15
|
# Apply padding to multiline text with ANSI codes
|
16
16
|
#
|
@@ -31,10 +31,11 @@ module Strings
|
|
31
31
|
# @return [String]
|
32
32
|
#
|
33
33
|
# @api private
|
34
|
-
def pad(text, padding, fill: SPACE, separator:
|
34
|
+
def pad(text, padding, fill: SPACE, separator: nil)
|
35
35
|
padding = Strings::Padder.parse(padding)
|
36
36
|
text_copy = text.dup
|
37
|
-
|
37
|
+
sep = separator || text[LINE_BREAK] || NEWLINE
|
38
|
+
line_width = max_line_length(text, sep)
|
38
39
|
output = []
|
39
40
|
|
40
41
|
filler_line = fill * line_width
|
@@ -43,7 +44,8 @@ module Strings
|
|
43
44
|
output << pad_around(filler_line, padding, fill: fill)
|
44
45
|
end
|
45
46
|
|
46
|
-
text_copy.split(
|
47
|
+
text_copy.split(sep).each do |line|
|
48
|
+
line = line.empty? ? filler_line : line
|
47
49
|
output << pad_around(line, padding, fill: fill)
|
48
50
|
end
|
49
51
|
|
@@ -51,7 +53,7 @@ module Strings
|
|
51
53
|
output << pad_around(filler_line, padding, fill: fill)
|
52
54
|
end
|
53
55
|
|
54
|
-
output.join(
|
56
|
+
output.join(sep)
|
55
57
|
end
|
56
58
|
module_function :pad
|
57
59
|
|
@@ -77,7 +79,7 @@ module Strings
|
|
77
79
|
# @api private
|
78
80
|
def max_line_length(text, separator)
|
79
81
|
lines = text.split(separator, -1)
|
80
|
-
display_width(lines.max_by { |line| display_width(line) } ||
|
82
|
+
display_width(lines.max_by { |line| display_width(line) } || "")
|
81
83
|
end
|
82
84
|
module_function :max_line_length
|
83
85
|
|