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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +77 -0
- data/CHANGELOG.md +27 -1
- data/CODE_OF_CONDUCT.md +128 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +89 -24
- data/README.md +44 -8
- data/Rakefile +5 -1
- data/bin/tapioca +29 -0
- data/lib/repeatable/conversions.rb +7 -2
- data/lib/repeatable/expression/base.rb +27 -11
- data/lib/repeatable/expression/biweekly.rb +15 -6
- data/lib/repeatable/expression/date.rb +11 -6
- data/lib/repeatable/expression/day_in_month.rb +5 -0
- data/lib/repeatable/expression/difference.rb +15 -5
- data/lib/repeatable/expression/exact_date.rb +6 -1
- data/lib/repeatable/expression/intersection.rb +8 -2
- data/lib/repeatable/expression/range_in_year.rb +34 -9
- data/lib/repeatable/expression/set.rb +17 -6
- data/lib/repeatable/expression/union.rb +7 -1
- data/lib/repeatable/expression/weekday.rb +5 -0
- data/lib/repeatable/expression/weekday_in_month.rb +15 -1
- data/lib/repeatable/expression.rb +2 -0
- data/lib/repeatable/last_date_of_month.rb +5 -0
- data/lib/repeatable/parse_error.rb +2 -0
- data/lib/repeatable/parser.rb +8 -1
- data/lib/repeatable/schedule.rb +24 -4
- data/lib/repeatable/types.rb +7 -0
- data/lib/repeatable/version.rb +3 -1
- data/lib/repeatable.rb +5 -0
- data/rbi/repeatable.rbi +316 -0
- data/repeatable.gemspec +3 -0
- data/sorbet/config +4 -0
- data/sorbet/rbi/annotations/.gitattributes +1 -0
- data/sorbet/rbi/annotations/rainbow.rbi +269 -0
- data/sorbet/rbi/gems/.gitattributes +1 -0
- data/sorbet/rbi/gems/ast@2.4.2.rbi +584 -0
- data/sorbet/rbi/gems/coderay@1.1.3.rbi +3426 -0
- data/sorbet/rbi/gems/commander@4.6.0.rbi +8 -0
- data/sorbet/rbi/gems/diff-lcs@1.4.4.rbi +1082 -0
- data/sorbet/rbi/gems/docile@1.4.0.rbi +376 -0
- data/sorbet/rbi/gems/erubi@1.12.0.rbi +145 -0
- data/sorbet/rbi/gems/highline@2.0.3.rbi +8 -0
- data/sorbet/rbi/gems/json@2.7.2.rbi +1561 -0
- data/sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi +14237 -0
- data/sorbet/rbi/gems/lint_roller@1.1.0.rbi +239 -0
- data/sorbet/rbi/gems/method_source@1.0.0.rbi +272 -0
- data/sorbet/rbi/gems/netrc@0.11.0.rbi +158 -0
- data/sorbet/rbi/gems/parallel@1.24.0.rbi +280 -0
- data/sorbet/rbi/gems/parlour@8.1.0.rbi +3053 -0
- data/sorbet/rbi/gems/parser@3.3.1.0.rbi +7320 -0
- data/sorbet/rbi/gems/prism@0.28.0.rbi +37903 -0
- data/sorbet/rbi/gems/pry@0.14.0.rbi +10072 -0
- data/sorbet/rbi/gems/racc@1.7.3.rbi +161 -0
- data/sorbet/rbi/gems/rainbow@3.1.1.rbi +402 -0
- data/sorbet/rbi/gems/rake@13.0.3.rbi +3024 -0
- data/sorbet/rbi/gems/rbi@0.1.13.rbi +3071 -0
- data/sorbet/rbi/gems/regexp_parser@2.9.0.rbi +3771 -0
- data/sorbet/rbi/gems/rexml@3.2.6.rbi +4781 -0
- data/sorbet/rbi/gems/rspec-core@3.10.1.rbi +10837 -0
- data/sorbet/rbi/gems/rspec-expectations@3.10.1.rbi +7930 -0
- data/sorbet/rbi/gems/rspec-mocks@3.10.2.rbi +5247 -0
- data/sorbet/rbi/gems/rspec-support@3.10.2.rbi +1594 -0
- data/sorbet/rbi/gems/rspec@3.10.0.rbi +76 -0
- data/sorbet/rbi/gems/rubocop-ast@1.31.3.rbi +7014 -0
- data/sorbet/rbi/gems/rubocop-performance@1.20.2.rbi +8 -0
- data/sorbet/rbi/gems/rubocop@1.62.1.rbi +57542 -0
- data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1317 -0
- data/sorbet/rbi/gems/simplecov-html@0.12.3.rbi +216 -0
- data/sorbet/rbi/gems/simplecov@0.21.2.rbi +2135 -0
- data/sorbet/rbi/gems/simplecov_json_formatter@0.1.4.rbi +8 -0
- data/sorbet/rbi/gems/spoom@1.3.2.rbi +4420 -0
- data/sorbet/rbi/gems/standard-custom@1.0.2.rbi +8 -0
- data/sorbet/rbi/gems/standard-performance@1.3.1.rbi +8 -0
- data/sorbet/rbi/gems/standard@1.35.1.rbi +850 -0
- data/sorbet/rbi/gems/tapioca@0.13.3.rbi +3527 -0
- data/sorbet/rbi/gems/thor@1.3.1.rbi +4351 -0
- data/sorbet/rbi/gems/unicode-display_width@2.5.0.rbi +65 -0
- data/sorbet/rbi/gems/yard-sorbet@0.8.1.rbi +428 -0
- data/sorbet/rbi/gems/yard@0.9.36.rbi +18220 -0
- data/sorbet/tapioca/config.yml +13 -0
- data/sorbet/tapioca/require.rb +4 -0
- metadata +75 -6
- data/.travis.yml +0 -18
data/rbi/repeatable.rbi
ADDED
|
@@ -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 @@
|
|
|
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
|