verse 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +12 -10
- data/CHANGELOG.md +38 -4
- data/Gemfile +8 -4
- data/README.md +12 -12
- data/benchmarks/speed_profile.rb +26 -0
- data/lib/verse.rb +1 -2
- data/lib/verse/alignment.rb +11 -10
- data/lib/verse/padder.rb +3 -1
- data/lib/verse/padding.rb +1 -2
- data/lib/verse/sanitizer.rb +8 -5
- data/lib/verse/truncation.rb +4 -5
- data/lib/verse/version.rb +1 -1
- data/lib/verse/wrapping.rb +16 -8
- data/spec/unit/padder/parse_spec.rb +1 -1
- data/spec/unit/sanitizer/ansi_spec.rb +1 -1
- data/spec/unit/sanitizer/replace_spec.rb +1 -1
- data/spec/unit/sanitizer/sanitize_spec.rb +1 -1
- data/verse.gemspec +3 -2
- metadata +28 -14
- data/.ruby-version +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b480b85987f2de41f4570f5a0522d2acb3f7e78d
|
4
|
+
data.tar.gz: 030f669b31afcf4329a79d906d4bb630ee447ad3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1944945843174ee5c0e2c91c7698c1b1ef7ea06759c2a1cca1917740bbffc3a77dc828bcc547218c30a40a127bf64360e423563b11f379d9af65de5b93bbd8a3
|
7
|
+
data.tar.gz: 6e48975ef2b03f0aacbfddb9bb7c01da0a04c588ffb74aa2e3e8d569d9ec15bc7bc4b7ea2b9e627c675eebcc320d1a30a35831f69560f321ce30576a6fe66450
|
data/.travis.yml
CHANGED
@@ -1,22 +1,24 @@
|
|
1
|
+
---
|
1
2
|
language: ruby
|
2
|
-
|
3
|
+
sudo: false
|
4
|
+
cache: bundler
|
5
|
+
language: ruby
|
6
|
+
bundler_args: --without benchmarks
|
3
7
|
script: "bundle exec rake ci"
|
4
8
|
rvm:
|
5
|
-
- 1.9.3
|
6
9
|
- 2.0.0
|
7
10
|
- 2.1.0
|
8
|
-
- 2.2.
|
11
|
+
- 2.2.5
|
12
|
+
- 2.3.1
|
13
|
+
- jruby-9.1.1.0
|
14
|
+
- jruby-head
|
9
15
|
- ruby-head
|
10
16
|
matrix:
|
11
|
-
include:
|
12
|
-
- rvm: jruby-19mode
|
13
|
-
- rvm: jruby-20mode
|
14
|
-
- rvm: jruby-21mode
|
15
|
-
- rvm: jruby-head
|
16
|
-
- rvm: rbx-2
|
17
17
|
allow_failures:
|
18
|
-
- rvm: ruby-head
|
19
18
|
- rvm: jruby-head
|
19
|
+
- rvm: ruby-head
|
20
20
|
fast_finish: true
|
21
21
|
branches:
|
22
22
|
only: master
|
23
|
+
notifications:
|
24
|
+
email: false
|
data/CHANGELOG.md
CHANGED
@@ -1,25 +1,59 @@
|
|
1
|
-
|
1
|
+
# Change log
|
2
2
|
|
3
|
+
## [v0.5.0] - 2016-10-25
|
4
|
+
|
5
|
+
### Added
|
6
|
+
* Add ParseError to Padder
|
7
|
+
|
8
|
+
### Changed
|
9
|
+
* Change Sanitizer to module
|
10
|
+
* Replaces UnicodeUtils.display_width with Unicode::DisplayWidth.of by @MichaelBaker
|
11
|
+
|
12
|
+
## [v0.4.0] - 2015-03-28
|
13
|
+
|
14
|
+
### Added
|
3
15
|
* Add Sanitizer#ansi? to check for ANSI codes
|
16
|
+
|
17
|
+
### Changed
|
4
18
|
* Change Alignment to work with ANSI codes
|
5
19
|
* Change Truncation to work with ANSI codes
|
6
20
|
* Change Wrapping to work with ANSI codes
|
7
21
|
* Chnage Padding to work with ANSI codes
|
8
22
|
|
9
|
-
|
23
|
+
## [v0.3.0] - 2015-02-28
|
10
24
|
|
25
|
+
### Added
|
11
26
|
* Add Sanitizer#replace for substitutiong linebreaks
|
12
27
|
* Add Padder for parsing padding values
|
13
28
|
* Add Padding for padding content around
|
29
|
+
|
30
|
+
### Changed
|
14
31
|
* Change Wrapping#wrap to preserve whitespace characters
|
15
32
|
|
16
|
-
|
33
|
+
## [v0.2.1] - 2015-02-15
|
17
34
|
|
35
|
+
### Fixed
|
18
36
|
* Fix empty string alignment
|
19
37
|
* Fix alignment to stop modifying original content
|
20
38
|
|
21
|
-
|
39
|
+
## [v0.2.0] - 2015-02-15
|
22
40
|
|
41
|
+
### Added
|
23
42
|
* Add unicode support
|
43
|
+
|
44
|
+
### Changed
|
24
45
|
* Change wrap, truncate and align to work with unicode characters
|
46
|
+
|
47
|
+
### Removed
|
25
48
|
* Remove padding and indent from Verse::Wrapping
|
49
|
+
|
50
|
+
## [v0.1.0] - 2015-02-07
|
51
|
+
|
52
|
+
* Inital implementation and release
|
53
|
+
|
54
|
+
[v0.5.0]: https://github.com/piotrmurach/verse/compare/v0.4.0...v0.5.0
|
55
|
+
[v0.4.0]: https://github.com/piotrmurach/verse/compare/v0.3.0...v0.4.0
|
56
|
+
[v0.3.0]: https://github.com/piotrmurach/verse/compare/v0.2.1...v0.3.0
|
57
|
+
[v0.2.1]: https://github.com/piotrmurach/verse/compare/v0.2.0...v0.2.1
|
58
|
+
[v0.2.0]: https://github.com/piotrmurach/verse/compare/v0.1.0...v0.2.0
|
59
|
+
[v0.1.0]: https://github.com/piotrmurach/verse/compare/v0.1.0
|
data/Gemfile
CHANGED
@@ -3,13 +3,17 @@ source 'https://rubygems.org'
|
|
3
3
|
gemspec
|
4
4
|
|
5
5
|
group :development do
|
6
|
-
gem 'rake', '~>
|
7
|
-
gem 'rspec', '~> 3.
|
6
|
+
gem 'rake', '~> 11.1.1'
|
7
|
+
gem 'rspec', '~> 3.5.0'
|
8
8
|
gem 'yard', '~> 0.8.7'
|
9
9
|
end
|
10
10
|
|
11
11
|
group :metrics do
|
12
|
-
gem 'coveralls', '~> 0.
|
13
|
-
gem 'simplecov', '~> 0.
|
12
|
+
gem 'coveralls', '~> 0.8.2'
|
13
|
+
gem 'simplecov', '~> 0.10.0'
|
14
14
|
gem 'yardstick', '~> 0.9.9'
|
15
15
|
end
|
16
|
+
|
17
|
+
group :benchmarks do
|
18
|
+
gem 'benchmark-ips'
|
19
|
+
end
|
data/README.md
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# Verse
|
2
|
-
[![Gem Version](https://badge.fury.io/rb/verse.
|
3
|
-
[![Build Status](https://secure.travis-ci.org/
|
4
|
-
[![Code Climate](https://codeclimate.com/github/
|
5
|
-
[![Coverage Status](https://coveralls.io/repos/
|
6
|
-
[![Inline docs](http://inch-ci.org/github/
|
2
|
+
[![Gem Version](https://badge.fury.io/rb/verse.svg)][gem]
|
3
|
+
[![Build Status](https://secure.travis-ci.org/piotrmurach/verse.svg?branch=master)][travis]
|
4
|
+
[![Code Climate](https://codeclimate.com/github/piotrmurach/verse/badges/gpa.png)][codeclimate]
|
5
|
+
[![Coverage Status](https://coveralls.io/repos/piotrmurach/verse/badge.svg)][coverage]
|
6
|
+
[![Inline docs](http://inch-ci.org/github/piotrmurach/verse.svg)][inchpages]
|
7
7
|
|
8
8
|
[gem]: http://badge.fury.io/rb/verse
|
9
|
-
[travis]: http://travis-ci.org/
|
10
|
-
[codeclimate]: https://codeclimate.com/github/
|
11
|
-
[coverage]: https://coveralls.io/r/
|
12
|
-
[inchpages]: http://inch-ci.org/github/
|
9
|
+
[travis]: http://travis-ci.org/piotrmurach/verse
|
10
|
+
[codeclimate]: https://codeclimate.com/github/piotrmurach/verse
|
11
|
+
[coverage]: https://coveralls.io/r/piotrmurach/verse
|
12
|
+
[inchpages]: http://inch-ci.org/github/piotrmurach/verse
|
13
13
|
|
14
14
|
> Text transformations such as truncation, wrapping, aligning, indentation and grouping of words.
|
15
15
|
|
@@ -66,7 +66,7 @@ alignment = Verse::Alignment.new "for there is no folly of the beast\n" +
|
|
66
66
|
Then using direction out of `:right`, `:left` or `:center` methods and passing width you can align the text:
|
67
67
|
|
68
68
|
```ruby
|
69
|
-
|
69
|
+
alignment.align(40, :right) # =>
|
70
70
|
" for there is no folly of the beast\n" +
|
71
71
|
" of the earth which\n" +
|
72
72
|
" is not infinitely\n" +
|
@@ -245,7 +245,7 @@ Verse.wrap(text, wrap_at)
|
|
245
245
|
|
246
246
|
## Contributing
|
247
247
|
|
248
|
-
1. Fork it ( https://github.com/
|
248
|
+
1. Fork it ( https://github.com/piotrmurach/verse/fork )
|
249
249
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
250
250
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
251
251
|
4. Push to the branch (`git push origin my-new-feature`)
|
@@ -253,4 +253,4 @@ Verse.wrap(text, wrap_at)
|
|
253
253
|
|
254
254
|
## Copyright
|
255
255
|
|
256
|
-
Copyright (c) 2015 Piotr Murach. See LICENSE for further details.
|
256
|
+
Copyright (c) 2015-2016 Piotr Murach. See LICENSE for further details.
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'benchmark/ips'
|
2
|
+
require 'verse'
|
3
|
+
|
4
|
+
text = "Ignorance is the parent of fear."
|
5
|
+
|
6
|
+
Benchmark.ips do |x|
|
7
|
+
x.report('wrap') do
|
8
|
+
Verse::Wrapping.wrap(text, 10)
|
9
|
+
end
|
10
|
+
|
11
|
+
x.report('truncate') do
|
12
|
+
Verse::Truncation.truncate(text, 10)
|
13
|
+
end
|
14
|
+
|
15
|
+
x.compare!
|
16
|
+
end
|
17
|
+
|
18
|
+
# Warming up --------------------------------------
|
19
|
+
# wrap 178.000 i/100ms
|
20
|
+
# truncate 262.000 i/100ms
|
21
|
+
# Calculating -------------------------------------
|
22
|
+
# wrap 1.812k (± 1.9%) i/s - 9.078k in 5.010776s
|
23
|
+
# truncate 2.625k (± 1.9%) i/s - 13.362k in 5.092305s
|
24
|
+
# Comparison:
|
25
|
+
# truncate: 2624.9 i/s
|
26
|
+
# wrap: 1812.3 i/s - 1.45x slower
|
data/lib/verse.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'unicode/display_width'
|
4
4
|
require 'unicode_utils/each_grapheme'
|
5
5
|
|
6
6
|
require 'verse/alignment'
|
@@ -14,7 +14,6 @@ require 'verse/version'
|
|
14
14
|
module Verse
|
15
15
|
SPACE = ' '.freeze
|
16
16
|
NEWLINE = "\n".freeze
|
17
|
-
TAB = "\n".freeze
|
18
17
|
RESET = "\e[0m".freeze
|
19
18
|
ANSI = "\033".freeze
|
20
19
|
|
data/lib/verse/alignment.rb
CHANGED
@@ -3,7 +3,6 @@
|
|
3
3
|
module Verse
|
4
4
|
# A class responsible for text alignment
|
5
5
|
class Alignment
|
6
|
-
|
7
6
|
attr_reader :fill
|
8
7
|
|
9
8
|
attr_reader :direction
|
@@ -13,7 +12,6 @@ module Verse
|
|
13
12
|
# @api public
|
14
13
|
def initialize(text, options = {})
|
15
14
|
@text = text
|
16
|
-
@sanitizer = Sanitizer.new
|
17
15
|
@fill = options.fetch(:fill) { SPACE }
|
18
16
|
@direction = options.fetch(:direction) { :left }
|
19
17
|
end
|
@@ -82,6 +80,11 @@ module Verse
|
|
82
80
|
|
83
81
|
protected
|
84
82
|
|
83
|
+
# The text to align
|
84
|
+
#
|
85
|
+
# @ api private
|
86
|
+
attr_reader :text
|
87
|
+
|
85
88
|
# @api private
|
86
89
|
def convert_to_method(direction)
|
87
90
|
case direction.to_sym
|
@@ -89,7 +92,7 @@ module Verse
|
|
89
92
|
when :right then :right_justify
|
90
93
|
when :center then :center_justify
|
91
94
|
else
|
92
|
-
|
95
|
+
raise ArgumentError, "Unknown alignment `#{direction}`."
|
93
96
|
end
|
94
97
|
end
|
95
98
|
|
@@ -104,7 +107,7 @@ module Verse
|
|
104
107
|
|
105
108
|
# @api private
|
106
109
|
def left_justify(text, width, filler)
|
107
|
-
width_diff = width -
|
110
|
+
width_diff = width - display_width(text)
|
108
111
|
if width_diff > 0
|
109
112
|
text + filler * width_diff
|
110
113
|
else
|
@@ -114,7 +117,7 @@ module Verse
|
|
114
117
|
|
115
118
|
# @api private
|
116
119
|
def right_justify(text, width, filler)
|
117
|
-
width_diff = width -
|
120
|
+
width_diff = width - display_width(text)
|
118
121
|
if width_diff > 0
|
119
122
|
filler * width_diff + text
|
120
123
|
else
|
@@ -124,7 +127,7 @@ module Verse
|
|
124
127
|
|
125
128
|
# @api private
|
126
129
|
def center_justify(text, width, filler)
|
127
|
-
text_width =
|
130
|
+
text_width = display_width(text)
|
128
131
|
width_diff = width - text_width
|
129
132
|
if width_diff > 0
|
130
133
|
right_count = (width_diff.to_f / 2).ceil
|
@@ -136,10 +139,8 @@ module Verse
|
|
136
139
|
end
|
137
140
|
|
138
141
|
# @api private
|
139
|
-
def
|
140
|
-
|
142
|
+
def display_width(text)
|
143
|
+
Unicode::DisplayWidth.of(Sanitizer.sanitize(text))
|
141
144
|
end
|
142
|
-
|
143
|
-
attr_reader :text
|
144
145
|
end # Alignment
|
145
146
|
end # Verse
|
data/lib/verse/padder.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
3
|
module Verse
|
4
|
+
ParseError = Class.new(ArgumentError)
|
5
|
+
|
4
6
|
# A class responsible for parsing padding value
|
5
7
|
#
|
6
8
|
# Used internally by {Verse::Padding}
|
@@ -55,7 +57,7 @@ module Verse
|
|
55
57
|
elsif value.size == 4
|
56
58
|
value
|
57
59
|
else
|
58
|
-
fail
|
60
|
+
fail ParseError, 'Wrong :padding parameter, must be an array'
|
59
61
|
end
|
60
62
|
end
|
61
63
|
|
data/lib/verse/padding.rb
CHANGED
@@ -9,7 +9,6 @@ module Verse
|
|
9
9
|
def initialize(text, options = {})
|
10
10
|
@text = text
|
11
11
|
@padding = Padder.parse(options[:padding])
|
12
|
-
@sanitizer = Sanitizer.new
|
13
12
|
end
|
14
13
|
|
15
14
|
# Pad content out
|
@@ -89,7 +88,7 @@ module Verse
|
|
89
88
|
end
|
90
89
|
|
91
90
|
def display_width(string)
|
92
|
-
|
91
|
+
Unicode::DisplayWidth.of(Sanitizer.sanitize(string))
|
93
92
|
end
|
94
93
|
end # Padding
|
95
94
|
end # Verse
|
data/lib/verse/sanitizer.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
3
|
module Verse
|
4
|
-
|
5
|
-
ANSI_MATCHER = /(\[)?\033(\[)?[;?\d]*[\dA-Za-z](\])
|
4
|
+
module Sanitizer
|
5
|
+
ANSI_MATCHER = /(\[)?\033(\[)?[;?\d]*[\dA-Za-z](\])?/
|
6
6
|
|
7
7
|
LINE_BREAK = "(\r\n+|\r+|\n+|\t+)".freeze
|
8
8
|
|
@@ -16,6 +16,7 @@ module Verse
|
|
16
16
|
def sanitize(text)
|
17
17
|
text.gsub(ANSI_MATCHER, '')
|
18
18
|
end
|
19
|
+
module_function :sanitize
|
19
20
|
|
20
21
|
# Check if string is an ANSI code
|
21
22
|
#
|
@@ -28,6 +29,7 @@ module Verse
|
|
28
29
|
def ansi?(string)
|
29
30
|
!!(string =~ /^(\[)?\033(\[)?[;?\d]*[\dA-Za-z]([\];])?$/)
|
30
31
|
end
|
32
|
+
module_function :ansi?
|
31
33
|
|
32
34
|
# Replace separator with whitespace
|
33
35
|
#
|
@@ -43,9 +45,10 @@ module Verse
|
|
43
45
|
#
|
44
46
|
# @api public
|
45
47
|
def replace(text, separator = LINE_BREAK)
|
46
|
-
text.gsub(/([ ]+)#{separator}/, "\\1")
|
47
|
-
|
48
|
-
|
48
|
+
text.gsub(/([ ]+)#{separator}/, "\\1")
|
49
|
+
.gsub(/#{separator}(?<space>[ ]+)/, "\\k<space>")
|
50
|
+
.gsub(/#{separator}/, ' ')
|
49
51
|
end
|
52
|
+
module_function :replace
|
50
53
|
end # Sanitizer
|
51
54
|
end # Verse
|
data/lib/verse/truncation.rb
CHANGED
@@ -5,7 +5,7 @@ module Verse
|
|
5
5
|
class Truncation
|
6
6
|
DEFAULT_TRAILING = '…'.freeze
|
7
7
|
|
8
|
-
DEFAULT_LENGTH = 30
|
8
|
+
DEFAULT_LENGTH = 30
|
9
9
|
|
10
10
|
attr_reader :separator
|
11
11
|
|
@@ -23,7 +23,6 @@ module Verse
|
|
23
23
|
# @api public
|
24
24
|
def initialize(text, options = {})
|
25
25
|
@text = text.dup.freeze
|
26
|
-
@sanitizer = Sanitizer.new
|
27
26
|
@separator = options.fetch(:separator) { nil }
|
28
27
|
@trailing = options.fetch(:trailing) { DEFAULT_TRAILING }
|
29
28
|
end
|
@@ -63,7 +62,7 @@ module Verse
|
|
63
62
|
trail = options.fetch(:trailing) { trailing }
|
64
63
|
separation = options.fetch(:separator) { separator }
|
65
64
|
width = display_width(text)
|
66
|
-
sanitized_text =
|
65
|
+
sanitized_text = Sanitizer.sanitize(text)
|
67
66
|
|
68
67
|
return text if width <= truncate_at
|
69
68
|
|
@@ -107,12 +106,12 @@ module Verse
|
|
107
106
|
|
108
107
|
# @api private
|
109
108
|
def to_chars(text)
|
110
|
-
UnicodeUtils.each_grapheme(text)
|
109
|
+
UnicodeUtils.each_grapheme(text)
|
111
110
|
end
|
112
111
|
|
113
112
|
# @api private
|
114
113
|
def display_width(string)
|
115
|
-
|
114
|
+
Unicode::DisplayWidth.of(Sanitizer.sanitize(string))
|
116
115
|
end
|
117
116
|
end # Truncation
|
118
117
|
end # Verse
|
data/lib/verse/version.rb
CHANGED
data/lib/verse/wrapping.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
module Verse
|
4
4
|
# A class responsible for text wrapping
|
5
5
|
class Wrapping
|
6
|
-
DEFAULT_WIDTH = 80
|
6
|
+
DEFAULT_WIDTH = 80
|
7
7
|
|
8
8
|
# Initialize a Wrapping
|
9
9
|
#
|
@@ -15,9 +15,8 @@ module Verse
|
|
15
15
|
#
|
16
16
|
# @api public
|
17
17
|
def initialize(text, options = {})
|
18
|
-
@text
|
18
|
+
@text = text
|
19
19
|
@line_width = options.fetch(:line_width) { DEFAULT_WIDTH }
|
20
|
-
@sanitizer = Sanitizer.new
|
21
20
|
end
|
22
21
|
|
23
22
|
# Wrap a text into lines no longer than wrap_at
|
@@ -68,10 +67,10 @@ module Verse
|
|
68
67
|
#
|
69
68
|
# @api private
|
70
69
|
def format_paragraph(paragraph, wrap_at, ansi_stack)
|
71
|
-
cleared_para =
|
70
|
+
cleared_para = Sanitizer.replace(paragraph)
|
72
71
|
lines = []
|
73
72
|
line = ''
|
74
|
-
word
|
73
|
+
word = ''
|
75
74
|
word_length = 0
|
76
75
|
line_length = 0
|
77
76
|
char_length = 0 # visible char length
|
@@ -79,14 +78,14 @@ module Verse
|
|
79
78
|
total_length = 0
|
80
79
|
ansi = ''
|
81
80
|
matched = nil
|
82
|
-
|
81
|
+
to_chars(cleared_para) do |char|
|
83
82
|
if char == ANSI # found ansi
|
84
83
|
ansi << char && next
|
85
84
|
end
|
86
85
|
|
87
86
|
if ansi.length > 0
|
88
87
|
ansi << char
|
89
|
-
if
|
88
|
+
if Sanitizer.ansi?(ansi) # we found ansi let's consume
|
90
89
|
matched = ansi
|
91
90
|
elsif matched
|
92
91
|
ansi_stack << [matched[0...-1], line_length + word_length]
|
@@ -173,11 +172,20 @@ module Verse
|
|
173
172
|
output
|
174
173
|
end
|
175
174
|
|
175
|
+
# @api private
|
176
|
+
def to_chars(text, &block)
|
177
|
+
if block_given?
|
178
|
+
UnicodeUtils.each_grapheme(text, &block)
|
179
|
+
else
|
180
|
+
UnicodeUtils.each_grapheme(text)
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
176
184
|
# Visible width of string
|
177
185
|
#
|
178
186
|
# @api private
|
179
187
|
def display_width(string)
|
180
|
-
|
188
|
+
Unicode::DisplayWidth.of(Sanitizer.sanitize(string))
|
181
189
|
end
|
182
190
|
end # Wrapping
|
183
191
|
end # Verse
|
data/verse.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = [""]
|
11
11
|
spec.summary = %q{Text transformations such as truncation, wrapping, aligning, indentation and grouping of words.}
|
12
12
|
spec.description = %q{Text transformations such as truncation, wrapping, aligning, indentation and grouping of words.}
|
13
|
-
spec.homepage = "https://github.com/
|
13
|
+
spec.homepage = "https://github.com/piotrmurach/verse"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0")
|
@@ -18,7 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(spec)/})
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_dependency 'unicode_utils',
|
21
|
+
spec.add_dependency 'unicode_utils', '~> 1.4.0'
|
22
|
+
spec.add_dependency 'unicode-display_width','~> 1.1.0'
|
22
23
|
|
23
24
|
spec.add_development_dependency 'bundler', '~> 1.5'
|
24
25
|
end
|
metadata
CHANGED
@@ -1,41 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: verse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Murach
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-10-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: unicode_utils
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 1.4.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.4.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: unicode-display_width
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.1.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.1.0
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
|
-
- - ~>
|
45
|
+
- - "~>"
|
32
46
|
- !ruby/object:Gem::Version
|
33
47
|
version: '1.5'
|
34
48
|
type: :development
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
|
-
- - ~>
|
52
|
+
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
54
|
version: '1.5'
|
41
55
|
description: Text transformations such as truncation, wrapping, aligning, indentation
|
@@ -46,15 +60,15 @@ executables: []
|
|
46
60
|
extensions: []
|
47
61
|
extra_rdoc_files: []
|
48
62
|
files:
|
49
|
-
- .gitignore
|
50
|
-
- .rspec
|
51
|
-
- .
|
52
|
-
- .travis.yml
|
63
|
+
- ".gitignore"
|
64
|
+
- ".rspec"
|
65
|
+
- ".travis.yml"
|
53
66
|
- CHANGELOG.md
|
54
67
|
- Gemfile
|
55
68
|
- LICENSE.txt
|
56
69
|
- README.md
|
57
70
|
- Rakefile
|
71
|
+
- benchmarks/speed_profile.rb
|
58
72
|
- lib/verse.rb
|
59
73
|
- lib/verse/alignment.rb
|
60
74
|
- lib/verse/padder.rb
|
@@ -84,7 +98,7 @@ files:
|
|
84
98
|
- tasks/coverage.rake
|
85
99
|
- tasks/spec.rake
|
86
100
|
- verse.gemspec
|
87
|
-
homepage: https://github.com/
|
101
|
+
homepage: https://github.com/piotrmurach/verse
|
88
102
|
licenses:
|
89
103
|
- MIT
|
90
104
|
metadata: {}
|
@@ -94,17 +108,17 @@ require_paths:
|
|
94
108
|
- lib
|
95
109
|
required_ruby_version: !ruby/object:Gem::Requirement
|
96
110
|
requirements:
|
97
|
-
- -
|
111
|
+
- - ">="
|
98
112
|
- !ruby/object:Gem::Version
|
99
113
|
version: '0'
|
100
114
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
115
|
requirements:
|
102
|
-
- -
|
116
|
+
- - ">="
|
103
117
|
- !ruby/object:Gem::Version
|
104
118
|
version: '0'
|
105
119
|
requirements: []
|
106
120
|
rubyforge_project:
|
107
|
-
rubygems_version: 2.
|
121
|
+
rubygems_version: 2.5.1
|
108
122
|
signing_key:
|
109
123
|
specification_version: 4
|
110
124
|
summary: Text transformations such as truncation, wrapping, aligning, indentation
|
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2.0.0
|