tty_string 0.2.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -0
- data/README.md +57 -36
- data/lib/tty_string.rb +12 -3
- data/lib/tty_string/code.rb +4 -2
- data/lib/tty_string/code_definitions.rb +5 -5
- data/lib/tty_string/csi_code.rb +8 -5
- data/lib/tty_string/csi_code_definitions.rb +28 -16
- data/lib/tty_string/cursor.rb +0 -1
- data/lib/tty_string/version.rb +1 -1
- data/tty_string.gemspec +14 -4
- metadata +73 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce94f319deb6062d8492d19e856f93d1e4b7fb1ef454e31e6824a1814b59a319
|
4
|
+
data.tar.gz: '05826ce61d59609df5db320f5e4bf83084b494a9f045f90b13cf8a3c18f07b40'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4299d0e7ffca36bf56f6899cb971a882e0646a71777cdbf0fd34a4569cfe3986d057fb0b10137815747b163d2e4da44b6243692d36ab8bee0141695df93416b1
|
7
|
+
data.tar.gz: 81e5f9aeee83e5b65df853dcfe94f41398eb5de0d690acafeded7aa896cfe80ba5c1cb09fad9ed4ff0a84edeb495cf6b4185a832261ce7ca9a248508015d0de9
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
# v1.1.1
|
2
|
+
- i forgot how arity works
|
3
|
+
|
4
|
+
# v1.1.0
|
5
|
+
- suppress bracketed paste mode codes
|
6
|
+
|
7
|
+
# v1.0.1
|
8
|
+
- test push to rubygems, no functional changes
|
9
|
+
|
10
|
+
# v1.0.0
|
11
|
+
- added TTYString.parse as a shortcut for .new#to_s
|
12
|
+
- added TTYString.to_proc for lols
|
13
|
+
- added jruby to travis matrix, fortunately it just works™
|
14
|
+
|
15
|
+
# v0.2.1
|
16
|
+
- fixed a bug with ignoring \a
|
17
|
+
|
1
18
|
# v0.2.0
|
2
19
|
- Stricter rendering because it turns out terminals are randomly permissive
|
3
20
|
- removed support for ruby 2.3
|
data/README.md
CHANGED
@@ -1,42 +1,49 @@
|
|
1
1
|
# TTYString
|
2
2
|
|
3
|
-
[![Build Status](https://travis-ci.
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
3
|
+
[![Build Status](https://travis-ci.com/robotdana/tty_string.svg?branch=main)](https://travis-ci.com/robotdana/tty_string)
|
4
|
+
[![Gem Version](https://badge.fury.io/rb/tty_string.svg)](https://rubygems.org/gems/tty_string)
|
5
|
+
|
6
|
+
Render to a string like your terminal does by (narrowly) parsing ANSI TTY codes.
|
7
|
+
Intended for use in tests of command line interfaces.
|
8
|
+
|
9
|
+
## Features
|
10
|
+
|
11
|
+
- supports ruby 2.4 - 3.0.0.preview1, and jruby
|
12
|
+
- has no dependencies outside ruby stdlib
|
13
|
+
|
14
|
+
## Supported codes
|
15
|
+
|
16
|
+
| Code | Description | Default |
|
17
|
+
|------|-------------|---------|
|
18
|
+
| `\a` | bell: suppressed | |
|
19
|
+
| `\b` | backspace: clear the character to the left of the cursor and move the cursor back one column | |
|
20
|
+
| `\n` | newline: move the cursor to the start of the next line | |
|
21
|
+
| `\r` | return: move the cursor to the start of the current line | |
|
22
|
+
| `\t` | tab: move the cursor to the next multiple-of-8 column | |
|
23
|
+
| `\e[nA` | move the cursor up _n_ lines | _n_=`1` |
|
24
|
+
| `\e[nB` | move the cursor down _n_ lines | _n_=`1` |
|
25
|
+
| `\e[nC` | move the cursor right _n_ columns | _n_=`1` |
|
26
|
+
| `\e[nD` | move the cursor left _n_ columns | _n_=`1` |
|
27
|
+
| `\e[nE` | move the cursor down _n_ lines, and to the start of the line | _n_=`1` |
|
28
|
+
| `\e[nF` | move the cursor up _n_ lines, and to the start of the line | _n_=`1` |
|
29
|
+
| `\e[nG` | move the cursor to column _n_. `1` is left-most column | _n_=`1` |
|
30
|
+
| `\e[n;mH` <br> `\e[n;mf` | move the cursor to row _n_, column _m_. `1;1` is top left corner | _n_=`1` _m_=`1` |
|
31
|
+
| `\e[nJ` | _n_=`0`: clear the screen from the cursor forward <br>_n_=`1`: clear the screen from the cursor backward <br>_n_=`2` or _n_=`3`: clear the screen | _n_=`0` |
|
32
|
+
| `\e[nK` | _n_=`0`: clear the line from the cursor forward <br>_n_=`1`: clear the line from the cursor backward <br>_n_=`2`: clear the line | _n_=`0` |
|
33
|
+
| `\e[nS` | scroll up _n_ rows | _n_=`1` |
|
34
|
+
| `\e[nT` | scroll down _n_ rows | _n_=`1` |
|
35
|
+
| `\e[m` | styling codes: optionally suppressed with `clear_style: false` | |
|
36
|
+
| `\e[?2004h` | enabled bracketed paste: suppressed | |
|
37
|
+
| `\e[?2004l` | disable bracketed paste: suppressed | |
|
38
|
+
| `\e[200~` | bracketed paste start: suppressed | |
|
39
|
+
| `\e[201~` | bracketed paste end: suppressed | |
|
33
40
|
|
34
41
|
## Installation
|
35
42
|
|
36
43
|
Add this line to your application's Gemfile:
|
37
44
|
|
38
45
|
```ruby
|
39
|
-
gem 'tty_string'
|
46
|
+
gem 'tty_string', '~> 1.0'
|
40
47
|
```
|
41
48
|
|
42
49
|
And then execute:
|
@@ -50,26 +57,40 @@ Or install it yourself as:
|
|
50
57
|
## Usage
|
51
58
|
|
52
59
|
```ruby
|
53
|
-
TTYString.
|
60
|
+
TTYString.parse("th\ta string\e[3Gis is")
|
54
61
|
=> "this is a string"
|
55
62
|
```
|
56
63
|
|
57
64
|
Styling information is suppressed by default:
|
58
65
|
```ruby
|
59
|
-
TTYString.
|
66
|
+
TTYString.parse("th\ta \e[31mstring\e[0m\e[3Gis is")
|
60
67
|
=> "this is a string"
|
61
68
|
```
|
62
69
|
But can be passed through:
|
63
70
|
```ruby
|
64
|
-
TTYString.
|
71
|
+
TTYString.parse("th\ta \e[31mstring\e[0m\e[3Gis is", clear_style: false)
|
65
72
|
=> "this is a \e[31mstring\e[0m"
|
66
73
|
```
|
67
74
|
|
75
|
+
Just for fun TTYString.to_proc provides the `parse` method as a lambda, so:
|
76
|
+
```ruby
|
77
|
+
["th\ta string\e[3Gis is"].each(&TTYString)
|
78
|
+
=> ["this is a string"]
|
79
|
+
```
|
80
|
+
|
81
|
+
## Limitations
|
82
|
+
|
83
|
+
- Various terminals are wildly variously permissive with what they accept,
|
84
|
+
so this doesn't even try to cover all possible cases,
|
85
|
+
instead it covers the narrowest possible case, and leaves the codes in place when unrecognized
|
86
|
+
|
87
|
+
- `clear_style: false` treats the style codes as regular text which may work differently when rendering codes that move the cursor.
|
88
|
+
|
68
89
|
## Development
|
69
90
|
|
70
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake
|
91
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake` to run the tests and linters. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
71
92
|
|
72
|
-
To install this gem onto your local machine, run `bundle exec rake install`.
|
93
|
+
To install this gem onto your local machine, run `bundle exec rake install`.
|
73
94
|
|
74
95
|
## Contributing
|
75
96
|
|
data/lib/tty_string.rb
CHANGED
@@ -3,8 +3,18 @@
|
|
3
3
|
require_relative 'tty_string/parser'
|
4
4
|
|
5
5
|
# Renders a string taking into ANSI escape codes and \t\r\n etc
|
6
|
-
# Usage: TTYString.
|
6
|
+
# Usage: TTYString.parse("This\r\e[KThat") => "That"
|
7
7
|
class TTYString
|
8
|
+
class << self
|
9
|
+
def parse(input_string, clear_style: true)
|
10
|
+
new(input_string, clear_style: clear_style).to_s
|
11
|
+
end
|
12
|
+
|
13
|
+
def to_proc
|
14
|
+
method(:parse).to_proc
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
8
18
|
def initialize(input_string, clear_style: true)
|
9
19
|
@parser = Parser.new(input_string)
|
10
20
|
@parser.clear_style = clear_style
|
@@ -16,6 +26,5 @@ class TTYString
|
|
16
26
|
|
17
27
|
private
|
18
28
|
|
19
|
-
attr_reader :clear_style
|
20
|
-
attr_reader :parser
|
29
|
+
attr_reader :clear_style, :parser
|
21
30
|
end
|
data/lib/tty_string/code.rb
CHANGED
@@ -11,6 +11,8 @@ class TTYString
|
|
11
11
|
@@descendants ||= [] # rubocop:disable Style/ClassVars I want it to be shared between subclasses.
|
12
12
|
@@descendants << klass
|
13
13
|
@@descendants.uniq!
|
14
|
+
|
15
|
+
super
|
14
16
|
end
|
15
17
|
|
16
18
|
def render(parser)
|
@@ -45,12 +47,12 @@ class TTYString
|
|
45
47
|
@parser = parser
|
46
48
|
end
|
47
49
|
|
50
|
+
def action; end
|
51
|
+
|
48
52
|
private
|
49
53
|
|
50
54
|
attr_reader :parser
|
51
55
|
|
52
|
-
def action; end
|
53
|
-
|
54
56
|
def screen
|
55
57
|
parser.screen
|
56
58
|
end
|
@@ -5,11 +5,11 @@ require_relative 'csi_code'
|
|
5
5
|
|
6
6
|
class TTYString
|
7
7
|
class Code
|
8
|
-
class SlashA < TTYString::Code
|
8
|
+
class SlashA < TTYString::Code # leftovers:allow
|
9
9
|
char "\a"
|
10
10
|
end
|
11
11
|
|
12
|
-
class SlashB < TTYString::Code
|
12
|
+
class SlashB < TTYString::Code # leftovers:allow
|
13
13
|
char "\b"
|
14
14
|
|
15
15
|
def self.match?(scanner)
|
@@ -26,7 +26,7 @@ class TTYString
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
class SlashN < TTYString::Code
|
29
|
+
class SlashN < TTYString::Code # leftovers:allow
|
30
30
|
char "\n"
|
31
31
|
|
32
32
|
def action
|
@@ -36,7 +36,7 @@ class TTYString
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
class SlashR < TTYString::Code
|
39
|
+
class SlashR < TTYString::Code # leftovers:allow
|
40
40
|
char "\r"
|
41
41
|
|
42
42
|
def action
|
@@ -44,7 +44,7 @@ class TTYString
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
-
class SlashT < TTYString::Code
|
47
|
+
class SlashT < TTYString::Code # leftovers:allow
|
48
48
|
char "\t"
|
49
49
|
|
50
50
|
def action
|
data/lib/tty_string/csi_code.rb
CHANGED
@@ -17,18 +17,21 @@ class TTYString
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def args(parser)
|
20
|
-
parser.matched.slice(2..-2).split(';')
|
21
|
-
|
20
|
+
a = parser.matched.slice(2..-2).split(';')
|
21
|
+
a = a.slice(0, max_args) unless max_args == -1
|
22
|
+
a.map! { |n| n.empty? ? default_arg : n.to_i }
|
23
|
+
a
|
22
24
|
end
|
23
25
|
|
24
26
|
def re
|
25
27
|
@re ||= /\e\[#{args_re}#{char}/
|
26
28
|
end
|
27
29
|
|
28
|
-
def args_re
|
30
|
+
def args_re # rubocop:disable Metrics/MethodLength
|
29
31
|
case max_args
|
32
|
+
when 0 then nil
|
30
33
|
when 1 then /#{arg_re}?/
|
31
|
-
when
|
34
|
+
when -1 then /(#{arg_re}?(;#{arg_re})*)?/
|
32
35
|
else /(#{arg_re}?(;#{arg_re}){0,#{max_args - 1}})?/
|
33
36
|
end
|
34
37
|
end
|
@@ -40,7 +43,7 @@ class TTYString
|
|
40
43
|
def max_args
|
41
44
|
@max_args ||= begin
|
42
45
|
params = instance_method(:action).parameters
|
43
|
-
return if params.assoc(:rest)
|
46
|
+
return -1 if params.assoc(:rest)
|
44
47
|
|
45
48
|
params.length
|
46
49
|
end
|
@@ -4,52 +4,52 @@ require_relative 'csi_code'
|
|
4
4
|
|
5
5
|
class TTYString
|
6
6
|
class CSICode
|
7
|
-
class A < TTYString::CSICode
|
7
|
+
class A < TTYString::CSICode # leftovers:allow
|
8
8
|
def action(rows = 1)
|
9
9
|
cursor.up(rows)
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
class B < TTYString::CSICode
|
13
|
+
class B < TTYString::CSICode # leftovers:allow
|
14
14
|
def action(rows = 1)
|
15
15
|
cursor.down(rows)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
class C < TTYString::CSICode
|
19
|
+
class C < TTYString::CSICode # leftovers:allow
|
20
20
|
def action(cols = 1)
|
21
21
|
cursor.right(cols)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
class D < TTYString::CSICode
|
25
|
+
class D < TTYString::CSICode # leftovers:allow
|
26
26
|
def action(cols = 1)
|
27
27
|
cursor.left(cols)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
class E < TTYString::CSICode
|
31
|
+
class E < TTYString::CSICode # leftovers:allow
|
32
32
|
def action(rows = 1)
|
33
33
|
cursor.down(rows)
|
34
34
|
cursor.col = 0
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
class F < TTYString::CSICode
|
38
|
+
class F < TTYString::CSICode # leftovers:allow
|
39
39
|
def action(rows = 1)
|
40
40
|
cursor.up(rows)
|
41
41
|
cursor.col = 0
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
-
class G < TTYString::CSICode
|
45
|
+
class G < TTYString::CSICode # leftovers:allow
|
46
46
|
def action(col = 1)
|
47
47
|
# cursor is zero indexed, arg is 1 indexed
|
48
48
|
cursor.col = col.to_i - 1
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
-
class H < TTYString::CSICode
|
52
|
+
class H < TTYString::CSICode # leftovers:allow
|
53
53
|
def action(row = 1, col = 1)
|
54
54
|
# cursor is zero indexed, arg is 1 indexed
|
55
55
|
cursor.row = row.to_i - 1
|
@@ -57,14 +57,18 @@ class TTYString
|
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
class
|
60
|
+
class LowH < TTYString::CSICode # leftovers:allow
|
61
|
+
char(/\?2004h/)
|
62
|
+
end
|
63
|
+
|
64
|
+
class LowF < TTYString::CSICode::H # leftovers:allow
|
61
65
|
char 'f'
|
62
66
|
end
|
63
67
|
|
64
|
-
class J < TTYString::CSICode
|
68
|
+
class J < TTYString::CSICode # leftovers:allow
|
65
69
|
default_arg 0
|
66
70
|
|
67
|
-
def self.
|
71
|
+
def self.arg_re
|
68
72
|
/[0-3]?/
|
69
73
|
end
|
70
74
|
|
@@ -79,7 +83,7 @@ class TTYString
|
|
79
83
|
end
|
80
84
|
end
|
81
85
|
|
82
|
-
class K < TTYString::CSICode
|
86
|
+
class K < TTYString::CSICode # leftovers:allow
|
83
87
|
default_arg 0
|
84
88
|
|
85
89
|
def self.arg_re
|
@@ -97,12 +101,16 @@ class TTYString
|
|
97
101
|
end
|
98
102
|
end
|
99
103
|
|
100
|
-
class
|
104
|
+
class LowL < TTYString::CSICode # leftovers:allow
|
105
|
+
char(/\?2004l/)
|
106
|
+
end
|
107
|
+
|
108
|
+
class LowM < TTYString::CSICode # leftovers:allow
|
101
109
|
char 'm'
|
102
110
|
|
103
111
|
def self.arg_re
|
104
112
|
# 0-255
|
105
|
-
/(
|
113
|
+
/(?:\d|\d\d|1\d\d|2[0-4]\d|25[0-5])?/
|
106
114
|
end
|
107
115
|
|
108
116
|
def self.render(renderer)
|
@@ -112,16 +120,20 @@ class TTYString
|
|
112
120
|
def action(*args); end
|
113
121
|
end
|
114
122
|
|
115
|
-
class S < TTYString::CSICode
|
123
|
+
class S < TTYString::CSICode # leftovers:allow
|
116
124
|
def action(rows = 1)
|
117
125
|
rows.times { screen.scroll_up }
|
118
126
|
end
|
119
127
|
end
|
120
128
|
|
121
|
-
class T < TTYString::CSICode
|
129
|
+
class T < TTYString::CSICode # leftovers:allow
|
122
130
|
def action(rows = 1)
|
123
131
|
rows.times { screen.scroll_down }
|
124
132
|
end
|
125
133
|
end
|
134
|
+
|
135
|
+
class Tilde < TTYString::CSICode # leftovers:allow
|
136
|
+
char(/(?:200|201)~/)
|
137
|
+
end
|
126
138
|
end
|
127
139
|
end
|
data/lib/tty_string/cursor.rb
CHANGED
data/lib/tty_string/version.rb
CHANGED
data/tty_string.gemspec
CHANGED
@@ -14,6 +14,12 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.homepage = 'https://github.com/robotdana/tty_string'
|
15
15
|
spec.license = 'MIT'
|
16
16
|
|
17
|
+
if spec.respond_to?(:metadata)
|
18
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
19
|
+
spec.metadata['source_code_uri'] = spec.homepage
|
20
|
+
spec.metadata['changelog_uri'] = "#{spec.homepage}/blob/main/CHANGELOG.md"
|
21
|
+
end
|
22
|
+
|
17
23
|
spec.files = Dir.glob('{lib}/**/*') + %w{
|
18
24
|
CHANGELOG.md
|
19
25
|
Gemfile
|
@@ -25,11 +31,15 @@ Gem::Specification.new do |spec|
|
|
25
31
|
spec.require_paths = ['lib']
|
26
32
|
|
27
33
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
34
|
+
spec.add_development_dependency 'fast_ignore', '>= 0.15.1'
|
35
|
+
spec.add_development_dependency 'leftovers', '>= 0.2.0'
|
28
36
|
spec.add_development_dependency 'pry', '~> 0.12'
|
29
|
-
spec.add_development_dependency 'rake', '
|
37
|
+
spec.add_development_dependency 'rake', '>= 12.3.3'
|
30
38
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
31
|
-
spec.add_development_dependency 'rubocop', '~> 0.
|
32
|
-
spec.add_development_dependency 'rubocop-performance', '~> 1.
|
33
|
-
spec.add_development_dependency 'rubocop-rspec', '~> 1.
|
39
|
+
spec.add_development_dependency 'rubocop', '~> 0.93.1'
|
40
|
+
spec.add_development_dependency 'rubocop-performance', '~> 1.8.1'
|
41
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 1.44.1'
|
34
42
|
spec.add_development_dependency 'simplecov', '~> 0.18.5'
|
43
|
+
spec.add_development_dependency 'simplecov-console'
|
44
|
+
spec.add_development_dependency 'spellr', '>= 0.8.1'
|
35
45
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tty_string
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dana Sherson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -24,6 +24,34 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: fast_ignore
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.15.1
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.15.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: leftovers
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.2.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.2.0
|
27
55
|
- !ruby/object:Gem::Dependency
|
28
56
|
name: pry
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -42,16 +70,16 @@ dependencies:
|
|
42
70
|
name: rake
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
44
72
|
requirements:
|
45
|
-
- - "
|
73
|
+
- - ">="
|
46
74
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
75
|
+
version: 12.3.3
|
48
76
|
type: :development
|
49
77
|
prerelease: false
|
50
78
|
version_requirements: !ruby/object:Gem::Requirement
|
51
79
|
requirements:
|
52
|
-
- - "
|
80
|
+
- - ">="
|
53
81
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
82
|
+
version: 12.3.3
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: rspec
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,42 +100,42 @@ dependencies:
|
|
72
100
|
requirements:
|
73
101
|
- - "~>"
|
74
102
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
103
|
+
version: 0.93.1
|
76
104
|
type: :development
|
77
105
|
prerelease: false
|
78
106
|
version_requirements: !ruby/object:Gem::Requirement
|
79
107
|
requirements:
|
80
108
|
- - "~>"
|
81
109
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
110
|
+
version: 0.93.1
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
112
|
name: rubocop-performance
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
86
114
|
requirements:
|
87
115
|
- - "~>"
|
88
116
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
117
|
+
version: 1.8.1
|
90
118
|
type: :development
|
91
119
|
prerelease: false
|
92
120
|
version_requirements: !ruby/object:Gem::Requirement
|
93
121
|
requirements:
|
94
122
|
- - "~>"
|
95
123
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
124
|
+
version: 1.8.1
|
97
125
|
- !ruby/object:Gem::Dependency
|
98
126
|
name: rubocop-rspec
|
99
127
|
requirement: !ruby/object:Gem::Requirement
|
100
128
|
requirements:
|
101
129
|
- - "~>"
|
102
130
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
131
|
+
version: 1.44.1
|
104
132
|
type: :development
|
105
133
|
prerelease: false
|
106
134
|
version_requirements: !ruby/object:Gem::Requirement
|
107
135
|
requirements:
|
108
136
|
- - "~>"
|
109
137
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
138
|
+
version: 1.44.1
|
111
139
|
- !ruby/object:Gem::Dependency
|
112
140
|
name: simplecov
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,6 +150,34 @@ dependencies:
|
|
122
150
|
- - "~>"
|
123
151
|
- !ruby/object:Gem::Version
|
124
152
|
version: 0.18.5
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: simplecov-console
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: spellr
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 0.8.1
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 0.8.1
|
125
181
|
description:
|
126
182
|
email:
|
127
183
|
- robot@dana.sh
|
@@ -146,7 +202,10 @@ files:
|
|
146
202
|
homepage: https://github.com/robotdana/tty_string
|
147
203
|
licenses:
|
148
204
|
- MIT
|
149
|
-
metadata:
|
205
|
+
metadata:
|
206
|
+
homepage_uri: https://github.com/robotdana/tty_string
|
207
|
+
source_code_uri: https://github.com/robotdana/tty_string
|
208
|
+
changelog_uri: https://github.com/robotdana/tty_string/blob/main/CHANGELOG.md
|
150
209
|
post_install_message:
|
151
210
|
rdoc_options: []
|
152
211
|
require_paths:
|
@@ -162,7 +221,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
162
221
|
- !ruby/object:Gem::Version
|
163
222
|
version: '0'
|
164
223
|
requirements: []
|
165
|
-
rubygems_version: 3.
|
224
|
+
rubygems_version: 3.0.3
|
166
225
|
signing_key:
|
167
226
|
specification_version: 4
|
168
227
|
summary: Render a string using ANSI TTY codes
|