repeatable 1.0.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +77 -0
  3. data/CHANGELOG.md +27 -1
  4. data/CODE_OF_CONDUCT.md +128 -0
  5. data/Gemfile +3 -0
  6. data/Gemfile.lock +89 -24
  7. data/README.md +44 -8
  8. data/Rakefile +5 -1
  9. data/bin/tapioca +29 -0
  10. data/lib/repeatable/conversions.rb +7 -2
  11. data/lib/repeatable/expression/base.rb +27 -11
  12. data/lib/repeatable/expression/biweekly.rb +15 -6
  13. data/lib/repeatable/expression/date.rb +11 -6
  14. data/lib/repeatable/expression/day_in_month.rb +5 -0
  15. data/lib/repeatable/expression/difference.rb +15 -5
  16. data/lib/repeatable/expression/exact_date.rb +6 -1
  17. data/lib/repeatable/expression/intersection.rb +8 -2
  18. data/lib/repeatable/expression/range_in_year.rb +34 -9
  19. data/lib/repeatable/expression/set.rb +17 -6
  20. data/lib/repeatable/expression/union.rb +7 -1
  21. data/lib/repeatable/expression/weekday.rb +5 -0
  22. data/lib/repeatable/expression/weekday_in_month.rb +15 -1
  23. data/lib/repeatable/expression.rb +2 -0
  24. data/lib/repeatable/last_date_of_month.rb +5 -0
  25. data/lib/repeatable/parse_error.rb +2 -0
  26. data/lib/repeatable/parser.rb +8 -1
  27. data/lib/repeatable/schedule.rb +24 -4
  28. data/lib/repeatable/types.rb +7 -0
  29. data/lib/repeatable/version.rb +3 -1
  30. data/lib/repeatable.rb +5 -0
  31. data/rbi/repeatable.rbi +316 -0
  32. data/repeatable.gemspec +3 -0
  33. data/sorbet/config +4 -0
  34. data/sorbet/rbi/annotations/.gitattributes +1 -0
  35. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  36. data/sorbet/rbi/gems/.gitattributes +1 -0
  37. data/sorbet/rbi/gems/ast@2.4.2.rbi +584 -0
  38. data/sorbet/rbi/gems/coderay@1.1.3.rbi +3426 -0
  39. data/sorbet/rbi/gems/commander@4.6.0.rbi +8 -0
  40. data/sorbet/rbi/gems/diff-lcs@1.4.4.rbi +1082 -0
  41. data/sorbet/rbi/gems/docile@1.4.0.rbi +376 -0
  42. data/sorbet/rbi/gems/erubi@1.12.0.rbi +145 -0
  43. data/sorbet/rbi/gems/highline@2.0.3.rbi +8 -0
  44. data/sorbet/rbi/gems/json@2.7.2.rbi +1561 -0
  45. data/sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi +14237 -0
  46. data/sorbet/rbi/gems/lint_roller@1.1.0.rbi +239 -0
  47. data/sorbet/rbi/gems/method_source@1.0.0.rbi +272 -0
  48. data/sorbet/rbi/gems/netrc@0.11.0.rbi +158 -0
  49. data/sorbet/rbi/gems/parallel@1.24.0.rbi +280 -0
  50. data/sorbet/rbi/gems/parlour@8.1.0.rbi +3053 -0
  51. data/sorbet/rbi/gems/parser@3.3.1.0.rbi +7320 -0
  52. data/sorbet/rbi/gems/prism@0.28.0.rbi +37903 -0
  53. data/sorbet/rbi/gems/pry@0.14.0.rbi +10072 -0
  54. data/sorbet/rbi/gems/racc@1.7.3.rbi +161 -0
  55. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +402 -0
  56. data/sorbet/rbi/gems/rake@13.0.3.rbi +3024 -0
  57. data/sorbet/rbi/gems/rbi@0.1.13.rbi +3071 -0
  58. data/sorbet/rbi/gems/regexp_parser@2.9.0.rbi +3771 -0
  59. data/sorbet/rbi/gems/rexml@3.2.6.rbi +4781 -0
  60. data/sorbet/rbi/gems/rspec-core@3.10.1.rbi +10837 -0
  61. data/sorbet/rbi/gems/rspec-expectations@3.10.1.rbi +7930 -0
  62. data/sorbet/rbi/gems/rspec-mocks@3.10.2.rbi +5247 -0
  63. data/sorbet/rbi/gems/rspec-support@3.10.2.rbi +1594 -0
  64. data/sorbet/rbi/gems/rspec@3.10.0.rbi +76 -0
  65. data/sorbet/rbi/gems/rubocop-ast@1.31.3.rbi +7014 -0
  66. data/sorbet/rbi/gems/rubocop-performance@1.20.2.rbi +8 -0
  67. data/sorbet/rbi/gems/rubocop@1.62.1.rbi +57542 -0
  68. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1317 -0
  69. data/sorbet/rbi/gems/simplecov-html@0.12.3.rbi +216 -0
  70. data/sorbet/rbi/gems/simplecov@0.21.2.rbi +2135 -0
  71. data/sorbet/rbi/gems/simplecov_json_formatter@0.1.4.rbi +8 -0
  72. data/sorbet/rbi/gems/spoom@1.3.2.rbi +4420 -0
  73. data/sorbet/rbi/gems/standard-custom@1.0.2.rbi +8 -0
  74. data/sorbet/rbi/gems/standard-performance@1.3.1.rbi +8 -0
  75. data/sorbet/rbi/gems/standard@1.35.1.rbi +850 -0
  76. data/sorbet/rbi/gems/tapioca@0.13.3.rbi +3527 -0
  77. data/sorbet/rbi/gems/thor@1.3.1.rbi +4351 -0
  78. data/sorbet/rbi/gems/unicode-display_width@2.5.0.rbi +65 -0
  79. data/sorbet/rbi/gems/yard-sorbet@0.8.1.rbi +428 -0
  80. data/sorbet/rbi/gems/yard@0.9.36.rbi +18220 -0
  81. data/sorbet/tapioca/config.yml +13 -0
  82. data/sorbet/tapioca/require.rb +4 -0
  83. metadata +75 -6
  84. data/.travis.yml +0 -18
@@ -0,0 +1,316 @@
1
+ # typed: strong
2
+ module Repeatable
3
+ VERSION = "1.2.0"
4
+
5
+ module Conversions
6
+ extend T::Sig
7
+
8
+ sig { params(arg: Object).returns(::Date) }
9
+ def Date(arg); end
10
+ end
11
+
12
+ module LastDateOfMonth
13
+ extend T::Sig
14
+
15
+ sig { params(date: ::Date).returns(::Date) }
16
+ def last_date_of_month(date); end
17
+ end
18
+
19
+ class ParseError < StandardError
20
+ end
21
+
22
+ class Parser
23
+ extend T::Sig
24
+
25
+ sig { params(hash: T::Hash[T.any(String, Symbol), T.untyped]).void }
26
+ def initialize(hash); end
27
+
28
+ sig { params(hash: T::Hash[T.any(String, Symbol), T.untyped]).returns(Expression::Base) }
29
+ def self.call(hash); end
30
+
31
+ sig { returns(Expression::Base) }
32
+ def call; end
33
+
34
+ sig { returns(T.untyped) }
35
+ attr_reader :hash
36
+
37
+ sig { params(hash: T.untyped).returns(T.untyped) }
38
+ def build_expression(hash); end
39
+
40
+ sig { params(key: T.untyped, value: T.untyped).returns(T.untyped) }
41
+ def expression_for(key, value); end
42
+
43
+ sig { params(hash: T.untyped).returns(T.untyped) }
44
+ def symbolize_keys(hash); end
45
+
46
+ sig { params(string: T.untyped).returns(T.untyped) }
47
+ def expression_klass(string); end
48
+ end
49
+
50
+ class Schedule
51
+ extend T::Sig
52
+
53
+ sig { params(arg: Object).void }
54
+ def initialize(arg); end
55
+
56
+ sig { params(start_date: Object, end_date: Object).returns(T::Array[::Date]) }
57
+ def occurrences(start_date, end_date); end
58
+
59
+ sig { params(start_date: Object, include_start: T::Boolean, limit: Integer).returns(T.nilable(::Date)) }
60
+ def next_occurrence(start_date = Date.today, include_start: false, limit: 36525); end
61
+
62
+ sig { params(date: Object).returns(T::Boolean) }
63
+ def include?(date = Date.today); end
64
+
65
+ sig { returns(T::Hash[Symbol, T.any(Types::SymbolHash, T::Array[Types::SymbolHash])]) }
66
+ def to_h; end
67
+
68
+ sig { params(_keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.any(Types::SymbolHash, T::Array[Types::SymbolHash])]) }
69
+ def deconstruct_keys(_keys); end
70
+
71
+ sig { params(other: Object).returns(T::Boolean) }
72
+ def ==(other); end
73
+
74
+ sig { returns(Expression::Base) }
75
+ attr_reader :expression
76
+ end
77
+
78
+ module Types
79
+ SymbolHash = T.type_alias { T::Hash[Symbol, T.untyped] }
80
+ end
81
+
82
+ module Expression
83
+ class Base
84
+ abstract!
85
+
86
+ extend T::Sig
87
+ extend T::Helpers
88
+
89
+ sig { params(other: Object).returns(T::Boolean) }
90
+ def self.===(other); end
91
+
92
+ sig { abstract.params(date: ::Date).returns(T::Boolean) }
93
+ def include?(date); end
94
+
95
+ sig { returns(T::Hash[Symbol, T.any(Types::SymbolHash, T::Array[Types::SymbolHash])]) }
96
+ def to_h; end
97
+
98
+ sig { params(_keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.any(Types::SymbolHash, T::Array[Types::SymbolHash])]) }
99
+ def deconstruct_keys(_keys); end
100
+
101
+ sig { params(other: Expression::Base).returns(Expression::Union) }
102
+ def union(other); end
103
+
104
+ sig { params(other: Expression::Base).returns(Expression::Intersection) }
105
+ def intersection(other); end
106
+
107
+ sig { params(other: T.untyped).returns(Expression::Difference) }
108
+ def difference(other); end
109
+
110
+ sig { returns(Symbol) }
111
+ def hash_key; end
112
+
113
+ sig { abstract.returns(T.any(Types::SymbolHash, T::Array[Types::SymbolHash])) }
114
+ def hash_value; end
115
+ end
116
+
117
+ class Biweekly < Date
118
+ sig { params(weekday: Integer, start_after: Object).void }
119
+ def initialize(weekday:, start_after: ::Date.today); end
120
+
121
+ sig { override.params(date: ::Date).returns(T::Boolean) }
122
+ def include?(date); end
123
+
124
+ sig { returns(Integer) }
125
+ attr_reader :weekday
126
+
127
+ sig { returns(::Date) }
128
+ attr_reader :start_after
129
+
130
+ sig { returns(::Date) }
131
+ attr_reader :_first_occurrence
132
+
133
+ sig { returns(::Date) }
134
+ def find_first_occurrence; end
135
+ end
136
+
137
+ class Date < Base
138
+ abstract!
139
+
140
+ sig { params(other: Object).returns(T::Boolean) }
141
+ def ==(other); end
142
+
143
+ sig { returns(Integer) }
144
+ def hash; end
145
+
146
+ sig { returns(Types::SymbolHash) }
147
+ def attributes; end
148
+
149
+ sig { params(value: BasicObject).returns(T.untyped) }
150
+ def normalize_attribute_value(value); end
151
+ end
152
+
153
+ class DayInMonth < Date
154
+ include LastDateOfMonth
155
+
156
+ sig { params(day: Integer).void }
157
+ def initialize(day:); end
158
+
159
+ sig { override.params(date: ::Date).returns(T::Boolean) }
160
+ def include?(date); end
161
+
162
+ sig { returns(Integer) }
163
+ attr_reader :day
164
+ end
165
+
166
+ class Difference < Base
167
+ sig { params(included: Expression::Base, excluded: Expression::Base).void }
168
+ def initialize(included:, excluded:); end
169
+
170
+ sig { override.params(date: ::Date).returns(T::Boolean) }
171
+ def include?(date); end
172
+
173
+ sig { params(other: Object).returns(T::Boolean) }
174
+ def ==(other); end
175
+
176
+ sig { returns(Expression::Base) }
177
+ attr_reader :included
178
+
179
+ sig { returns(Expression::Base) }
180
+ attr_reader :excluded
181
+
182
+ sig { override.returns(Types::SymbolHash) }
183
+ def hash_value; end
184
+ end
185
+
186
+ class ExactDate < Date
187
+ sig { params(date: Object).void }
188
+ def initialize(date:); end
189
+
190
+ sig { override.params(other_date: ::Date).returns(T::Boolean) }
191
+ def include?(other_date); end
192
+
193
+ sig { returns(::Date) }
194
+ attr_reader :date
195
+ end
196
+
197
+ class Intersection < Set
198
+ sig { params(elements: T.any(Expression::Base, T::Array[Expression::Base])).void }
199
+ def initialize(*elements); end
200
+
201
+ sig { override.params(date: ::Date).returns(T::Boolean) }
202
+ def include?(date); end
203
+ end
204
+
205
+ class RangeInYear < Date
206
+ sig do
207
+ params(
208
+ start_month: Integer,
209
+ end_month: Integer,
210
+ start_day: Integer,
211
+ end_day: Integer
212
+ ).void
213
+ end
214
+ def initialize(start_month:, end_month: start_month, start_day: 0, end_day: 0); end
215
+
216
+ sig { override.params(date: ::Date).returns(T::Boolean) }
217
+ def include?(date); end
218
+
219
+ sig { returns(Integer) }
220
+ attr_reader :start_month
221
+
222
+ sig { returns(Integer) }
223
+ attr_reader :end_month
224
+
225
+ sig { returns(Integer) }
226
+ attr_reader :start_day
227
+
228
+ sig { returns(Integer) }
229
+ attr_reader :end_day
230
+
231
+ sig { params(date: ::Date).returns(T::Boolean) }
232
+ def months_include?(date); end
233
+
234
+ sig { params(date: ::Date).returns(T::Boolean) }
235
+ def start_month_include?(date); end
236
+
237
+ sig { params(date: ::Date).returns(T::Boolean) }
238
+ def end_month_include?(date); end
239
+
240
+ sig { override.returns(T::Hash[Symbol, Integer]) }
241
+ def hash_value; end
242
+ end
243
+
244
+ class Set < Base
245
+ abstract!
246
+
247
+ sig { returns(T::Array[Expression::Base]) }
248
+ attr_reader :elements
249
+
250
+ sig { params(elements: T::Array[Expression::Base]).void }
251
+ def initialize(elements); end
252
+
253
+ sig { params(element: T.untyped).returns(Repeatable::Expression::Set) }
254
+ def <<(element); end
255
+
256
+ sig { params(other: Object).returns(T::Boolean) }
257
+ def ==(other); end
258
+
259
+ sig { override.returns(T::Array[Types::SymbolHash]) }
260
+ def hash_value; end
261
+ end
262
+
263
+ class Union < Set
264
+ sig { params(elements: T.any(Expression::Base, T::Array[Expression::Base])).void }
265
+ def initialize(*elements); end
266
+
267
+ sig { override.params(date: ::Date).returns(T::Boolean) }
268
+ def include?(date); end
269
+ end
270
+
271
+ class Weekday < Date
272
+ sig { params(weekday: Integer).void }
273
+ def initialize(weekday:); end
274
+
275
+ sig { override.params(date: ::Date).returns(T::Boolean) }
276
+ def include?(date); end
277
+
278
+ sig { returns(Integer) }
279
+ attr_reader :weekday
280
+ end
281
+
282
+ class WeekdayInMonth < Date
283
+ include LastDateOfMonth
284
+
285
+ sig { params(weekday: Integer, count: Integer).void }
286
+ def initialize(weekday:, count:); end
287
+
288
+ sig { override.params(date: ::Date).returns(T::Boolean) }
289
+ def include?(date); end
290
+
291
+ sig { returns(Integer) }
292
+ attr_reader :weekday
293
+
294
+ sig { returns(Integer) }
295
+ attr_reader :count
296
+
297
+ sig { params(date: ::Date).returns(T::Boolean) }
298
+ def day_matches?(date); end
299
+
300
+ sig { params(date: ::Date).returns(T::Boolean) }
301
+ def week_matches?(date); end
302
+
303
+ sig { params(date: ::Date).returns(Integer) }
304
+ def week_from_beginning(date); end
305
+
306
+ sig { params(date: ::Date).returns(Integer) }
307
+ def week_from_end(date); end
308
+
309
+ sig { params(zero_indexed_day: Integer).returns(Integer) }
310
+ def week_in_month(zero_indexed_day); end
311
+
312
+ sig { returns(T::Boolean) }
313
+ def negative_count?; end
314
+ end
315
+ end
316
+ end
data/repeatable.gemspec CHANGED
@@ -12,8 +12,11 @@ Gem::Specification.new do |spec|
12
12
  spec.description = "Ruby implementation of Martin Fowler's 'Recurring Events for Calendars' paper."
13
13
  spec.homepage = "https://github.com/molawson/repeatable"
14
14
  spec.license = "MIT"
15
+ spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/main/CHANGELOG.md"
15
16
  spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
16
17
 
17
18
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
19
  spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "sorbet-runtime"
19
22
  end
data/sorbet/config ADDED
@@ -0,0 +1,4 @@
1
+ --dir
2
+ .
3
+ --ignore=tmp/
4
+ --ignore=vendor/
@@ -0,0 +1 @@
1
+ **/*.rbi linguist-vendored=true
@@ -0,0 +1,269 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This file was pulled from a central RBI files repository.
5
+ # Please run `bin/tapioca annotations` to update it.
6
+
7
+ module Rainbow
8
+ # @shim: https://github.com/sickill/rainbow/blob/master/lib/rainbow.rb#L10-L12
9
+ sig { returns(T::Boolean) }
10
+ attr_accessor :enabled
11
+
12
+ class Color
13
+ sig { returns(Symbol) }
14
+ attr_reader :ground
15
+
16
+ sig { params(ground: Symbol, values: T.any([Integer], [Integer, Integer, Integer])).returns(Color) }
17
+ def self.build(ground, values); end
18
+
19
+ sig { params(hex: String).returns([Integer, Integer, Integer]) }
20
+ def self.parse_hex_color(hex); end
21
+
22
+ class Indexed < Rainbow::Color
23
+ sig { returns(Integer) }
24
+ attr_reader :num
25
+
26
+ sig { params(ground: Symbol, num: Integer).void }
27
+ def initialize(ground, num); end
28
+
29
+ sig { returns(T::Array[Integer]) }
30
+ def codes; end
31
+ end
32
+
33
+ class Named < Rainbow::Color::Indexed
34
+ NAMES = T.let(nil, T::Hash[Symbol, Integer])
35
+
36
+ sig { params(ground: Symbol, name: Symbol).void }
37
+ def initialize(ground, name); end
38
+
39
+ sig { returns(T::Array[Symbol]) }
40
+ def self.color_names; end
41
+
42
+ sig { returns(String) }
43
+ def self.valid_names; end
44
+ end
45
+
46
+ class RGB < Rainbow::Color::Indexed
47
+ sig { returns(Integer) }
48
+ attr_reader :r, :g, :b
49
+
50
+ sig { params(ground: Symbol, values: Integer).void }
51
+ def initialize(ground, *values); end
52
+
53
+ sig { returns(T::Array[Integer]) }
54
+ def codes; end
55
+
56
+ sig { params(value: Numeric).returns(Integer) }
57
+ def self.to_ansi_domain(value); end
58
+ end
59
+
60
+ class X11Named < Rainbow::Color::RGB
61
+ include Rainbow::X11ColorNames
62
+
63
+ sig { params(ground: Symbol, name: Symbol).void }
64
+ def initialize(ground, name); end
65
+
66
+ sig { returns(T::Array[Symbol]) }
67
+ def self.color_names; end
68
+
69
+ sig { returns(String) }
70
+ def self.valid_names; end
71
+ end
72
+ end
73
+
74
+ sig { returns(Wrapper) }
75
+ def self.global; end
76
+
77
+ sig { returns(T::Boolean) }
78
+ def self.enabled; end
79
+
80
+ sig { params(value: T::Boolean).returns(T::Boolean) }
81
+ def self.enabled=(value); end
82
+
83
+ sig { params(string: String).returns(String) }
84
+ def self.uncolor(string); end
85
+
86
+ class NullPresenter < String
87
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
88
+ def color(*values); end
89
+
90
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
91
+ def foreground(*values); end
92
+
93
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
94
+ def fg(*values); end
95
+
96
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
97
+ def background(*values); end
98
+
99
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
100
+ def bg(*values); end
101
+
102
+ sig { returns(NullPresenter) }
103
+ def reset; end
104
+
105
+ sig { returns(NullPresenter) }
106
+ def bright; end
107
+
108
+ sig { returns(NullPresenter) }
109
+ def faint; end
110
+
111
+ sig { returns(NullPresenter) }
112
+ def italic; end
113
+
114
+ sig { returns(NullPresenter) }
115
+ def underline; end
116
+
117
+ sig { returns(NullPresenter) }
118
+ def blink; end
119
+
120
+ sig { returns(NullPresenter) }
121
+ def inverse; end
122
+
123
+ sig { returns(NullPresenter) }
124
+ def hide; end
125
+
126
+ sig { returns(NullPresenter) }
127
+ def cross_out; end
128
+
129
+ sig { returns(NullPresenter) }
130
+ def black; end
131
+
132
+ sig { returns(NullPresenter) }
133
+ def red; end
134
+
135
+ sig { returns(NullPresenter) }
136
+ def green; end
137
+
138
+ sig { returns(NullPresenter) }
139
+ def yellow; end
140
+
141
+ sig { returns(NullPresenter) }
142
+ def blue; end
143
+
144
+ sig { returns(NullPresenter) }
145
+ def magenta; end
146
+
147
+ sig { returns(NullPresenter) }
148
+ def cyan; end
149
+
150
+ sig { returns(NullPresenter) }
151
+ def white; end
152
+
153
+ sig { returns(NullPresenter) }
154
+ def bold; end
155
+
156
+ sig { returns(NullPresenter) }
157
+ def dark; end
158
+
159
+ sig { returns(NullPresenter) }
160
+ def strike; end
161
+ end
162
+
163
+ class Presenter < String
164
+ TERM_EFFECTS = T.let(nil, T::Hash[Symbol, Integer])
165
+
166
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
167
+ def color(*values); end
168
+
169
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
170
+ def foreground(*values); end
171
+
172
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
173
+ def fg(*values); end
174
+
175
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
176
+ def background(*values); end
177
+
178
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
179
+ def bg(*values); end
180
+
181
+ sig { returns(Presenter) }
182
+ def reset; end
183
+
184
+ sig { returns(Presenter) }
185
+ def bright; end
186
+
187
+ sig { returns(Presenter) }
188
+ def faint; end
189
+
190
+ sig { returns(Presenter) }
191
+ def italic; end
192
+
193
+ sig { returns(Presenter) }
194
+ def underline; end
195
+
196
+ sig { returns(Presenter) }
197
+ def blink; end
198
+
199
+ sig { returns(Presenter) }
200
+ def inverse; end
201
+
202
+ sig { returns(Presenter) }
203
+ def hide; end
204
+
205
+ sig { returns(Presenter) }
206
+ def cross_out; end
207
+
208
+ sig { returns(Presenter) }
209
+ def black; end
210
+
211
+ sig { returns(Presenter) }
212
+ def red; end
213
+
214
+ sig { returns(Presenter) }
215
+ def green; end
216
+
217
+ sig { returns(Presenter) }
218
+ def yellow; end
219
+
220
+ sig { returns(Presenter) }
221
+ def blue; end
222
+
223
+ sig { returns(Presenter) }
224
+ def magenta; end
225
+
226
+ sig { returns(Presenter) }
227
+ def cyan; end
228
+
229
+ sig { returns(Presenter) }
230
+ def white; end
231
+
232
+ sig { returns(Presenter) }
233
+ def bold; end
234
+
235
+ sig { returns(Presenter) }
236
+ def dark; end
237
+
238
+ sig { returns(Presenter) }
239
+ def strike; end
240
+ end
241
+
242
+ class StringUtils
243
+ sig { params(string: String, codes: T::Array[Integer]).returns(String) }
244
+ def self.wrap_with_sgr(string, codes); end
245
+
246
+ sig { params(string: String).returns(String) }
247
+ def self.uncolor(string); end
248
+ end
249
+
250
+ VERSION = T.let(nil, String)
251
+
252
+ class Wrapper
253
+ sig { returns(T::Boolean) }
254
+ attr_accessor :enabled
255
+
256
+ sig { params(enabled: T::Boolean).void }
257
+ def initialize(enabled = true); end
258
+
259
+ sig { params(string: String).returns(T.any(Rainbow::Presenter, Rainbow::NullPresenter)) }
260
+ def wrap(string); end
261
+ end
262
+
263
+ module X11ColorNames
264
+ NAMES = T.let(nil, T::Hash[Symbol, [Integer, Integer, Integer]])
265
+ end
266
+ end
267
+
268
+ sig { params(string: String).returns(Rainbow::Presenter) }
269
+ def Rainbow(string); end
@@ -0,0 +1 @@
1
+ **/*.rbi linguist-generated=true