repeatable 1.0.0 → 1.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.
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