sord 0.7.1 → 0.8.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/.gitignore +2 -0
- data/README.md +62 -25
- data/Rakefile +72 -0
- data/exe/sord +39 -4
- data/lib/sord/logging.rb +43 -0
- data/lib/sord/rbi_generator.rb +144 -40
- data/lib/sord/resolver.rb +82 -0
- data/lib/sord/type_converter.rb +55 -13
- data/lib/sord/version.rb +1 -1
- data/rbi/sord.rbi +165 -0
- data/sorbet/config +0 -2
- data/sorbet/rbi/gems/colorize.rbi +81 -0
- data/sorbet/rbi/gems/docile.rbi +31 -0
- data/sorbet/rbi/gems/rake.rbi +7 -0
- data/sorbet/rbi/gems/rspec-core.rbi +16 -0
- data/sorbet/rbi/gems/rspec-expectations.rbi +389 -0
- data/sorbet/rbi/gems/rspec-mocks.rbi +823 -0
- data/sorbet/rbi/gems/rspec-support.rbi +143 -1
- data/sorbet/rbi/gems/rspec.rbi +1 -1
- data/sorbet/rbi/gems/simplecov-html.rbi +30 -0
- data/sorbet/rbi/gems/simplecov.rbi +223 -0
- data/sorbet/rbi/gems/sorbet-runtime.rbi +647 -0
- data/sorbet/rbi/gems/yard.rbi +13 -13
- data/sorbet/rbi/hidden-definitions/errors.txt +1579 -2264
- data/sorbet/rbi/hidden-definitions/hidden.rbi +2918 -845
- data/sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi +15 -5
- data/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +1 -1
- data/sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi +1 -1
- metadata +11 -2
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'stringio'
|
2
|
+
|
3
|
+
module Sord
|
4
|
+
module Resolver
|
5
|
+
# @return [void]
|
6
|
+
def self.prepare
|
7
|
+
# Construct a hash of class names to full paths
|
8
|
+
@@names_to_paths ||= YARD::Registry.all(:class)
|
9
|
+
.group_by(&:name)
|
10
|
+
.map { |k, v| [k.to_s, v.map(&:path)] }
|
11
|
+
.to_h
|
12
|
+
.merge(builtin_classes.map { |x| [x, [x]] }.to_h) do |k, a, b|
|
13
|
+
a | b
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# @return [void]
|
18
|
+
def self.clear
|
19
|
+
@@names_to_paths = nil
|
20
|
+
end
|
21
|
+
|
22
|
+
# @param [String] name
|
23
|
+
# @return [Array<String>]
|
24
|
+
def self.paths_for(name)
|
25
|
+
prepare
|
26
|
+
(@@names_to_paths[name.split('::').last] || [])
|
27
|
+
.select { |x| x.end_with?(name) }
|
28
|
+
end
|
29
|
+
|
30
|
+
# @param [String] name
|
31
|
+
# @return [String, nil]
|
32
|
+
def self.path_for(name)
|
33
|
+
paths_for(name).one? ? paths_for(name).first : nil
|
34
|
+
end
|
35
|
+
|
36
|
+
# @return [Array<String>]
|
37
|
+
def self.builtin_classes
|
38
|
+
# This prints some deprecation warnings, so suppress them
|
39
|
+
prev_stderr = $stderr
|
40
|
+
$stderr = StringIO.new
|
41
|
+
|
42
|
+
Object.constants
|
43
|
+
.select { |x| Object.const_get(x).is_a?(Class) }
|
44
|
+
.map(&:to_s)
|
45
|
+
ensure
|
46
|
+
$stderr = prev_stderr
|
47
|
+
end
|
48
|
+
|
49
|
+
# @param [String] name
|
50
|
+
# @param [Object] item
|
51
|
+
# @return [Boolean]
|
52
|
+
def self.resolvable?(name, item)
|
53
|
+
name_parts = name.split('::')
|
54
|
+
|
55
|
+
current_context = item
|
56
|
+
current_context = current_context.parent \
|
57
|
+
until current_context.is_a?(YARD::CodeObjects::NamespaceObject)
|
58
|
+
|
59
|
+
matching_paths = []
|
60
|
+
|
61
|
+
loop do
|
62
|
+
# Try to find that class in this context
|
63
|
+
path_followed_context = current_context
|
64
|
+
name_parts.each do |name_part|
|
65
|
+
path_followed_context = path_followed_context&.child(
|
66
|
+
name: name_part, type: [:class, :method, :module]
|
67
|
+
)
|
68
|
+
end
|
69
|
+
|
70
|
+
# Return true if we found the constant we're looking for here
|
71
|
+
matching_paths |= [path_followed_context.path] if path_followed_context
|
72
|
+
|
73
|
+
# Move up one context
|
74
|
+
break if current_context.root?
|
75
|
+
current_context = current_context.parent
|
76
|
+
end
|
77
|
+
|
78
|
+
return (builtin_classes.include?(name) && matching_paths.empty?) ||
|
79
|
+
(matching_paths.one? && !builtin_classes.include?(name))
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
data/lib/sord/type_converter.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
require 'sord/logging'
|
3
|
+
require 'sord/resolver'
|
3
4
|
|
4
5
|
module Sord
|
5
6
|
# Contains methods to convert YARD types to Sorbet types.
|
@@ -21,14 +22,22 @@ module Sord
|
|
21
22
|
# Match duck types which require the object implement one or more methods,
|
22
23
|
# like '#foo', '#foo & #bar', '#foo&#bar&#baz', and '#foo&#bar&#baz&#foo_bar'.
|
23
24
|
DUCK_TYPE_REGEX =
|
24
|
-
|
25
|
+
/^\#[a-zA-Z_][\w]*(?:[a-zA-Z_][\w=]*)*(?:( ?\& ?\#)*[a-zA-Z_][\w=]*)*$/
|
25
26
|
|
26
27
|
# A regular expression which matches ordered lists in the format of
|
27
28
|
# either "Array(String, Symbol)" or "(String, Symbol)".
|
28
29
|
ORDERED_LIST_REGEX = /^(?:Array|)\((.*)\s*\)$/
|
29
30
|
|
31
|
+
# A regular expression which matches the shorthand Hash syntax,
|
32
|
+
# "{String => Symbol}".
|
33
|
+
SHORTHAND_HASH_SYNTAX = /^{\s*(.*)\s*}$/
|
34
|
+
|
35
|
+
# A regular expression which matches the shorthand Array syntax,
|
36
|
+
# "<String>".
|
37
|
+
SHORTHAND_ARRAY_SYNTAX = /^<\s*(.*)\s*>$/
|
38
|
+
|
30
39
|
# An array of built-in generic types supported by Sorbet.
|
31
|
-
SORBET_SUPPORTED_GENERIC_TYPES = %w{Array Set Enumerable Enumerator Range Hash}
|
40
|
+
SORBET_SUPPORTED_GENERIC_TYPES = %w{Array Set Enumerable Enumerator Range Hash Class}
|
32
41
|
SORBET_SINGLE_ARG_GENERIC_TYPES = %w{Array Set Enumerable Enumerator Range}
|
33
42
|
|
34
43
|
# Given a string of YARD type parameters (without angle brackets), splits
|
@@ -85,7 +94,11 @@ module Sord
|
|
85
94
|
# @param [YARD::CodeObjects::Base] item The CodeObject which the YARD type
|
86
95
|
# is associated with. This is used for logging and can be nil, but this
|
87
96
|
# will lead to less informative log messages.
|
88
|
-
|
97
|
+
# @param [Integer] indent_level
|
98
|
+
# @param [Boolean] replace_errors_with_untyped If true, T.untyped is used
|
99
|
+
# instead of SORD_ERROR_ constants for unknown types.
|
100
|
+
# @return [String]
|
101
|
+
def self.yard_to_sorbet(yard, item = nil, indent_level = 0, replace_errors_with_untyped = false)
|
89
102
|
case yard
|
90
103
|
when nil # Type not specified
|
91
104
|
"T.untyped"
|
@@ -98,7 +111,7 @@ module Sord
|
|
98
111
|
# selection of any of the types
|
99
112
|
types = yard
|
100
113
|
.reject { |x| x == 'nil' }
|
101
|
-
.map { |x| yard_to_sorbet(x, item) }
|
114
|
+
.map { |x| yard_to_sorbet(x, item, indent_level, replace_errors_with_untyped) }
|
102
115
|
.uniq
|
103
116
|
result = types.length == 1 ? types.first : "T.any(#{types.join(', ')})"
|
104
117
|
result = "T.nilable(#{result})" if yard.include?('nil')
|
@@ -106,11 +119,26 @@ module Sord
|
|
106
119
|
when /^#{SIMPLE_TYPE_REGEX}$/
|
107
120
|
# If this doesn't begin with an uppercase letter, warn
|
108
121
|
if /^[_a-z]/ === yard
|
109
|
-
Logging.warn("#{yard} is probably not a type, but using anyway", item)
|
122
|
+
Logging.warn("#{yard} is probably not a type, but using anyway", item, indent_level)
|
123
|
+
end
|
124
|
+
|
125
|
+
# Check if whatever has been specified is actually resolvable; if not,
|
126
|
+
# do some inference to replace it
|
127
|
+
if item && !Resolver.resolvable?(yard, item)
|
128
|
+
if Resolver.path_for(yard)
|
129
|
+
new_path = Resolver.path_for(yard)
|
130
|
+
Logging.infer("#{yard} was resolved to #{new_path}", item, indent_level) \
|
131
|
+
unless yard == new_path
|
132
|
+
new_path
|
133
|
+
else
|
134
|
+
Logging.warn("#{yard} wasn't able to be resolved to a constant in this project", item, indent_level)
|
135
|
+
yard
|
136
|
+
end
|
137
|
+
else
|
138
|
+
yard
|
110
139
|
end
|
111
|
-
yard
|
112
140
|
when DUCK_TYPE_REGEX
|
113
|
-
Logging.duck("#{yard} looks like a duck type, replacing with T.untyped", item)
|
141
|
+
Logging.duck("#{yard} looks like a duck type, replacing with T.untyped", item, indent_level)
|
114
142
|
'T.untyped'
|
115
143
|
when /^#{GENERIC_TYPE_REGEX}$/
|
116
144
|
generic_type = $1
|
@@ -118,31 +146,45 @@ module Sord
|
|
118
146
|
|
119
147
|
if SORBET_SUPPORTED_GENERIC_TYPES.include?(generic_type)
|
120
148
|
parameters = split_type_parameters(type_parameters)
|
121
|
-
.map { |x| yard_to_sorbet(x, item) }
|
149
|
+
.map { |x| yard_to_sorbet(x, item, indent_level, replace_errors_with_untyped) }
|
122
150
|
if SORBET_SINGLE_ARG_GENERIC_TYPES.include?(generic_type) && parameters.length > 1
|
123
151
|
"T::#{generic_type}[T.any(#{parameters.join(', ')})]"
|
152
|
+
elsif generic_type == 'Class' && parameters.length == 1
|
153
|
+
"T.class_of(#{parameters.first})"
|
124
154
|
else
|
125
155
|
"T::#{generic_type}[#{parameters.join(', ')}]"
|
126
156
|
end
|
127
157
|
else
|
128
|
-
Logging.warn("unsupported generic type #{generic_type.inspect} in #{yard.inspect}", item)
|
129
|
-
"SORD_ERROR_#{generic_type.gsub(/[^0-9A-Za-z_]/i, '')}"
|
158
|
+
Logging.warn("unsupported generic type #{generic_type.inspect} in #{yard.inspect}", item, indent_level)
|
159
|
+
replace_errors_with_untyped ? "T.untyped" : "SORD_ERROR_#{generic_type.gsub(/[^0-9A-Za-z_]/i, '')}"
|
130
160
|
end
|
131
161
|
# Converts ordered lists like Array(Symbol, String) or (Symbol, String)
|
132
162
|
# into Sorbet Tuples like [Symbol, String].
|
133
163
|
when ORDERED_LIST_REGEX
|
134
164
|
type_parameters = $1
|
135
165
|
parameters = split_type_parameters(type_parameters)
|
136
|
-
.map { |x| yard_to_sorbet(x, item) }
|
166
|
+
.map { |x| yard_to_sorbet(x, item, indent_level, replace_errors_with_untyped) }
|
137
167
|
"[#{parameters.join(', ')}]"
|
168
|
+
when SHORTHAND_HASH_SYNTAX
|
169
|
+
type_parameters = $1
|
170
|
+
parameters = split_type_parameters(type_parameters)
|
171
|
+
.map { |x| yard_to_sorbet(x, item, indent_level, replace_errors_with_untyped) }
|
172
|
+
"T::Hash<#{parameters.join(', ')}>"
|
173
|
+
when SHORTHAND_ARRAY_SYNTAX
|
174
|
+
type_parameters = $1
|
175
|
+
parameters = split_type_parameters(type_parameters)
|
176
|
+
.map { |x| yard_to_sorbet(x, item, indent_level, replace_errors_with_untyped) }
|
177
|
+
parameters.one? \
|
178
|
+
? "T::Array<#{parameters.first}>"
|
179
|
+
: "T::Array<T.any(#{parameters.join(', ')})>"
|
138
180
|
else
|
139
181
|
# Check for literals
|
140
182
|
from_yaml = YAML.load(yard) rescue nil
|
141
183
|
return from_yaml.class.to_s \
|
142
184
|
if [Symbol, Float, Integer].include?(from_yaml.class)
|
143
185
|
|
144
|
-
Logging.warn("#{yard.inspect} does not appear to be a type", item)
|
145
|
-
"SORD_ERROR_#{yard.gsub(/[^0-9A-Za-z_]/i, '')}"
|
186
|
+
Logging.warn("#{yard.inspect} does not appear to be a type", item, indent_level)
|
187
|
+
replace_errors_with_untyped ? "T.untyped" : "SORD_ERROR_#{yard.gsub(/[^0-9A-Za-z_]/i, '')}"
|
146
188
|
end
|
147
189
|
end
|
148
190
|
end
|
data/lib/sord/version.rb
CHANGED
data/rbi/sord.rbi
ADDED
@@ -0,0 +1,165 @@
|
|
1
|
+
# typed: strong
|
2
|
+
module Sord
|
3
|
+
module Logging
|
4
|
+
sig { returns(T::Array[Proc]) }
|
5
|
+
def self.hooks(); end
|
6
|
+
|
7
|
+
sig { returns(T::Boolean) }
|
8
|
+
def self.silent?(); end
|
9
|
+
|
10
|
+
sig { params(value: T::Boolean).void }
|
11
|
+
def self.silent=(value); end
|
12
|
+
|
13
|
+
sig { params(value: T::Array[Symbol]).void }
|
14
|
+
def self.enabled_types=(value); end
|
15
|
+
|
16
|
+
sig { returns(T::Array[Symbol]) }
|
17
|
+
def self.enabled_types(); end
|
18
|
+
|
19
|
+
sig { params(value: T::Array[Symbol]).void }
|
20
|
+
def self.valid_types?(value); end
|
21
|
+
|
22
|
+
# sord warn - YARD::CodeObjects::Base wasn't able to be resolved to a constant in this project
|
23
|
+
sig do
|
24
|
+
params(
|
25
|
+
kind: Symbol,
|
26
|
+
header: String,
|
27
|
+
msg: String,
|
28
|
+
item: YARD::CodeObjects::Base,
|
29
|
+
indent_level: Integer
|
30
|
+
).void
|
31
|
+
end
|
32
|
+
def self.generic(kind, header, msg, item, indent_level = 0); end
|
33
|
+
|
34
|
+
# sord warn - YARD::CodeObjects::Base wasn't able to be resolved to a constant in this project
|
35
|
+
sig { params(msg: String, item: YARD::CodeObjects::Base, indent_level: Integer).void }
|
36
|
+
def self.warn(msg, item = nil, indent_level = 0); end
|
37
|
+
|
38
|
+
# sord warn - YARD::CodeObjects::Base wasn't able to be resolved to a constant in this project
|
39
|
+
sig { params(msg: String, item: YARD::CodeObjects::Base, indent_level: Integer).void }
|
40
|
+
def self.info(msg, item = nil, indent_level = 0); end
|
41
|
+
|
42
|
+
# sord warn - YARD::CodeObjects::Base wasn't able to be resolved to a constant in this project
|
43
|
+
sig { params(msg: String, item: YARD::CodeObjects::Base, indent_level: Integer).void }
|
44
|
+
def self.duck(msg, item = nil, indent_level = 0); end
|
45
|
+
|
46
|
+
# sord warn - YARD::CodeObjects::Base wasn't able to be resolved to a constant in this project
|
47
|
+
sig { params(msg: String, item: YARD::CodeObjects::Base, indent_level: Integer).void }
|
48
|
+
def self.error(msg, item = nil, indent_level = 0); end
|
49
|
+
|
50
|
+
# sord warn - YARD::CodeObjects::Base wasn't able to be resolved to a constant in this project
|
51
|
+
sig { params(msg: String, item: YARD::CodeObjects::Base, indent_level: Integer).void }
|
52
|
+
def self.infer(msg, item = nil, indent_level = 0); end
|
53
|
+
|
54
|
+
# sord warn - YARD::CodeObjects::Base wasn't able to be resolved to a constant in this project
|
55
|
+
sig { params(msg: String, item: YARD::CodeObjects::Base, indent_level: Integer).void }
|
56
|
+
def self.omit(msg, item = nil, indent_level = 0); end
|
57
|
+
|
58
|
+
# sord warn - YARD::CodeObjects::Base wasn't able to be resolved to a constant in this project
|
59
|
+
sig { params(msg: String, item: YARD::CodeObjects::Base, indent_level: Integer).void }
|
60
|
+
def self.done(msg, item = nil, indent_level = 0); end
|
61
|
+
|
62
|
+
# sord warn - YARD::CodeObjects::Base wasn't able to be resolved to a constant in this project
|
63
|
+
sig do
|
64
|
+
params(
|
65
|
+
kind: Symbol,
|
66
|
+
msg: String,
|
67
|
+
item: YARD::CodeObjects::Base,
|
68
|
+
indent_level: Integer
|
69
|
+
).void
|
70
|
+
end
|
71
|
+
def self.invoke_hooks(kind, msg, item, indent_level = 0); end
|
72
|
+
|
73
|
+
# sord warn - YARD::CodeObjects::Base wasn't able to be resolved to a constant in this project
|
74
|
+
sig { params(blk: T.proc.params(kind: Symbol, msg: String, item: YARD::CodeObjects::Base, indent_level: Integer).void).void }
|
75
|
+
def self.add_hook(&blk); end
|
76
|
+
end
|
77
|
+
|
78
|
+
module Resolver
|
79
|
+
sig { void }
|
80
|
+
def self.prepare(); end
|
81
|
+
|
82
|
+
sig { void }
|
83
|
+
def self.clear(); end
|
84
|
+
|
85
|
+
sig { params(name: String).returns(T::Array[String]) }
|
86
|
+
def self.paths_for(name); end
|
87
|
+
|
88
|
+
sig { params(name: String).returns(T.nilable(String)) }
|
89
|
+
def self.path_for(name); end
|
90
|
+
|
91
|
+
sig { returns(T::Array[String]) }
|
92
|
+
def self.builtin_classes(); end
|
93
|
+
|
94
|
+
sig { params(name: String, item: Object).returns(T::Boolean) }
|
95
|
+
def self.resolvable?(name, item); end
|
96
|
+
end
|
97
|
+
|
98
|
+
class RbiGenerator
|
99
|
+
sig { returns(T::Array[String]) }
|
100
|
+
def rbi_contents(); end
|
101
|
+
|
102
|
+
sig { returns(Integer) }
|
103
|
+
def object_count(); end
|
104
|
+
|
105
|
+
# sord warn - YARD::CodeObjects::Base wasn't able to be resolved to a constant in this project
|
106
|
+
sig { returns(T::Array[[String, YARD::CodeObjects::Base, Integer]]) }
|
107
|
+
def warnings(); end
|
108
|
+
|
109
|
+
sig { returns(T::Boolean) }
|
110
|
+
def next_item_is_first_in_namespace(); end
|
111
|
+
|
112
|
+
# sord infer - inferred type of parameter "value" as T::Boolean using getter's return type
|
113
|
+
sig { params(value: T::Boolean).returns(T::Boolean) }
|
114
|
+
def next_item_is_first_in_namespace=(value); end
|
115
|
+
|
116
|
+
sig { params(options: Hash).void }
|
117
|
+
def initialize(options); end
|
118
|
+
|
119
|
+
sig { void }
|
120
|
+
def count_namespace(); end
|
121
|
+
|
122
|
+
sig { void }
|
123
|
+
def count_method(); end
|
124
|
+
|
125
|
+
sig { void }
|
126
|
+
def add_blank(); end
|
127
|
+
|
128
|
+
# sord warn - YARD::CodeObjects::Base wasn't able to be resolved to a constant in this project
|
129
|
+
sig { params(item: YARD::CodeObjects::Base, indent_level: Integer).returns(Integer) }
|
130
|
+
def add_mixins(item, indent_level); end
|
131
|
+
|
132
|
+
sig { params(params: T::Array[String], returns: String, indent_level: Integer).void }
|
133
|
+
def add_signature(params, returns, indent_level); end
|
134
|
+
|
135
|
+
# sord warn - YARD::CodeObjects::NamespaceObject wasn't able to be resolved to a constant in this project
|
136
|
+
sig { params(item: YARD::CodeObjects::NamespaceObject, indent_level: Integer).void }
|
137
|
+
def add_methods(item, indent_level); end
|
138
|
+
|
139
|
+
# sord warn - YARD::CodeObjects::NamespaceObject wasn't able to be resolved to a constant in this project
|
140
|
+
sig { params(item: YARD::CodeObjects::NamespaceObject, indent_level: Integer).void }
|
141
|
+
def add_namespace(item, indent_level = 0); end
|
142
|
+
|
143
|
+
sig { returns(String) }
|
144
|
+
def generate(); end
|
145
|
+
|
146
|
+
sig { params(filename: T.nilable(String)).void }
|
147
|
+
def run(filename); end
|
148
|
+
end
|
149
|
+
|
150
|
+
module TypeConverter
|
151
|
+
sig { params(params: String).returns(T::Array[String]) }
|
152
|
+
def self.split_type_parameters(params); end
|
153
|
+
|
154
|
+
# sord warn - YARD::CodeObjects::Base wasn't able to be resolved to a constant in this project
|
155
|
+
sig do
|
156
|
+
params(
|
157
|
+
yard: T.any(T::Boolean, Array, String),
|
158
|
+
item: YARD::CodeObjects::Base,
|
159
|
+
indent_level: Integer,
|
160
|
+
replace_errors_with_untyped: T::Boolean
|
161
|
+
).returns(String)
|
162
|
+
end
|
163
|
+
def self.yard_to_sorbet(yard, item = nil, indent_level = 0, replace_errors_with_untyped = false); end
|
164
|
+
end
|
165
|
+
end
|
data/sorbet/config
CHANGED
@@ -0,0 +1,81 @@
|
|
1
|
+
# This file is autogenerated. Do not edit it by hand. Regenerate it with:
|
2
|
+
# srb rbi gems
|
3
|
+
|
4
|
+
# typed: true
|
5
|
+
#
|
6
|
+
# If you would like to make changes to this file, great! Please create the gem's shim here:
|
7
|
+
#
|
8
|
+
# https://github.com/sorbet/sorbet-typed/new/master?filename=lib/colorize/all/colorize.rbi
|
9
|
+
#
|
10
|
+
# colorize-0.8.1
|
11
|
+
module Colorize
|
12
|
+
end
|
13
|
+
module Colorize::ClassMethods
|
14
|
+
def color_codes; end
|
15
|
+
def color_matrix(_ = nil); end
|
16
|
+
def color_methods; end
|
17
|
+
def color_samples; end
|
18
|
+
def colors; end
|
19
|
+
def disable_colorization(value = nil); end
|
20
|
+
def disable_colorization=(value); end
|
21
|
+
def mode_codes; end
|
22
|
+
def modes; end
|
23
|
+
def modes_methods; end
|
24
|
+
end
|
25
|
+
module Colorize::InstanceMethods
|
26
|
+
def background_color(color); end
|
27
|
+
def color(color); end
|
28
|
+
def color_from_symbol(match, symbol); end
|
29
|
+
def colorize(params); end
|
30
|
+
def colorized?; end
|
31
|
+
def colors_from_hash(match, hash); end
|
32
|
+
def colors_from_params(match, params); end
|
33
|
+
def defaults_colors(match); end
|
34
|
+
def mode(mode); end
|
35
|
+
def require_windows_libs; end
|
36
|
+
def scan_for_colors; end
|
37
|
+
def split_colors(match); end
|
38
|
+
def uncolorize; end
|
39
|
+
end
|
40
|
+
class String
|
41
|
+
def black; end
|
42
|
+
def blink; end
|
43
|
+
def blue; end
|
44
|
+
def bold; end
|
45
|
+
def cyan; end
|
46
|
+
def green; end
|
47
|
+
def hide; end
|
48
|
+
def italic; end
|
49
|
+
def light_black; end
|
50
|
+
def light_blue; end
|
51
|
+
def light_cyan; end
|
52
|
+
def light_green; end
|
53
|
+
def light_magenta; end
|
54
|
+
def light_red; end
|
55
|
+
def light_white; end
|
56
|
+
def light_yellow; end
|
57
|
+
def magenta; end
|
58
|
+
def on_black; end
|
59
|
+
def on_blue; end
|
60
|
+
def on_cyan; end
|
61
|
+
def on_green; end
|
62
|
+
def on_light_black; end
|
63
|
+
def on_light_blue; end
|
64
|
+
def on_light_cyan; end
|
65
|
+
def on_light_green; end
|
66
|
+
def on_light_magenta; end
|
67
|
+
def on_light_red; end
|
68
|
+
def on_light_white; end
|
69
|
+
def on_light_yellow; end
|
70
|
+
def on_magenta; end
|
71
|
+
def on_red; end
|
72
|
+
def on_white; end
|
73
|
+
def on_yellow; end
|
74
|
+
def red; end
|
75
|
+
def swap; end
|
76
|
+
def underline; end
|
77
|
+
def white; end
|
78
|
+
def yellow; end
|
79
|
+
extend Colorize::ClassMethods
|
80
|
+
include Colorize::InstanceMethods
|
81
|
+
end
|