Module: Tapioca::RBIHelper
- Extended by:
- RBIHelper, SorbetHelper
- Includes:
- SorbetHelper
- Included in:
- Dsl::Compiler, Dsl::Helpers::ActiveRecordColumnTypeHelper, Gem::Listeners::Methods, Gem::Listeners::SorbetProps, Gem::Listeners::SorbetSignatures, Gem::Pipeline, RBIHelper
- Defined in:
- lib/tapioca/helpers/rbi_helper.rb
Constant Summary
Constants included from SorbetHelper
SorbetHelper::FEATURE_REQUIREMENTS, SorbetHelper::SORBET_BIN, SorbetHelper::SORBET_EXE_PATH_ENV_VAR, SorbetHelper::SORBET_GEM_SPEC, SorbetHelper::SORBET_PAYLOAD_URL, SorbetHelper::SPOOM_CONTEXT
Class Method Summary collapse
-
.serialize_type_variable(type, variance, fixed, upper, lower) ⇒ Object
: (String type, Symbol variance, String? fixed, String? upper, String? lower) -> String.
Instance Method Summary collapse
-
#as_nilable_type(type) ⇒ Object
: (String type) -> String.
-
#as_non_nilable_type(type) ⇒ Object
: (String type) -> String.
-
#create_block_param(name, type:) ⇒ Object
: (String name, type: String) -> RBI::TypedParam.
-
#create_kw_opt_param(name, type:, default:) ⇒ Object
: (String name, type: String, default: String) -> RBI::TypedParam.
-
#create_kw_param(name, type:) ⇒ Object
: (String name, type: String) -> RBI::TypedParam.
-
#create_kw_rest_param(name, type:) ⇒ Object
: (String name, type: String) -> RBI::TypedParam.
-
#create_opt_param(name, type:, default:) ⇒ Object
: (String name, type: String, default: String) -> RBI::TypedParam.
-
#create_param(name, type:) ⇒ Object
: (String name, type: String) -> RBI::TypedParam.
-
#create_rest_param(name, type:) ⇒ Object
: (String name, type: String) -> RBI::TypedParam.
-
#create_typed_param(param, type) ⇒ Object
: (RBI::Param param, String type) -> RBI::TypedParam.
-
#sanitize_signature_types(sig_string) ⇒ Object
: (String sig_string) -> String.
-
#valid_method_name?(name) ⇒ Boolean
: (String name) -> bool.
-
#valid_parameter_name?(name) ⇒ Boolean
: (String name) -> bool.
Methods included from SorbetHelper
sorbet, sorbet_path, sorbet_supports?
Class Method Details
.serialize_type_variable(type, variance, fixed, upper, lower) ⇒ Object
: (String type, Symbol variance, String? fixed, String? upper, String? lower) -> String
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 12 def serialize_type_variable(type, variance, fixed, upper, lower) variance = nil if variance == :invariant block = [] block << "fixed: #{fixed}" if fixed block << "lower: #{lower}" if lower block << "upper: #{upper}" if upper parameters = [] parameters << ":#{variance}" if variance serialized = type.dup serialized << "(#{parameters.join(", ")})" unless parameters.empty? serialized << " { { #{block.join(", ")} } }" unless block.empty? serialized end |
Instance Method Details
#as_nilable_type(type) ⇒ Object
: (String type) -> String
80 81 82 83 84 85 86 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 80 def as_nilable_type(type) if type.start_with?("T.nilable(", "::T.nilable(") || type == "T.untyped" || type == "::T.untyped" type else "T.nilable(#{type})" end end |
#as_non_nilable_type(type) ⇒ Object
: (String type) -> String
89 90 91 92 93 94 95 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 89 def as_non_nilable_type(type) if type.match(/\A(?:::)?T.nilable\((.+)\)\z/) T.must(::Regexp.last_match(1)) else type end end |
#create_block_param(name, type:) ⇒ Object
: (String name, type: String) -> RBI::TypedParam
61 62 63 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 61 def create_block_param(name, type:) create_typed_param(RBI::BlockParam.new(name), type) end |
#create_kw_opt_param(name, type:, default:) ⇒ Object
: (String name, type: String, default: String) -> RBI::TypedParam
51 52 53 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 51 def create_kw_opt_param(name, type:, default:) create_typed_param(RBI::KwOptParam.new(name, default), type) end |
#create_kw_param(name, type:) ⇒ Object
: (String name, type: String) -> RBI::TypedParam
46 47 48 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 46 def create_kw_param(name, type:) create_typed_param(RBI::KwParam.new(name), type) end |
#create_kw_rest_param(name, type:) ⇒ Object
: (String name, type: String) -> RBI::TypedParam
56 57 58 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 56 def create_kw_rest_param(name, type:) create_typed_param(RBI::KwRestParam.new(name), type) end |
#create_opt_param(name, type:, default:) ⇒ Object
: (String name, type: String, default: String) -> RBI::TypedParam
36 37 38 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 36 def create_opt_param(name, type:, default:) create_typed_param(RBI::OptParam.new(name, default), type) end |
#create_param(name, type:) ⇒ Object
: (String name, type: String) -> RBI::TypedParam
31 32 33 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 31 def create_param(name, type:) create_typed_param(RBI::ReqParam.new(name), type) end |
#create_rest_param(name, type:) ⇒ Object
: (String name, type: String) -> RBI::TypedParam
41 42 43 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 41 def create_rest_param(name, type:) create_typed_param(RBI::RestParam.new(name), type) end |
#create_typed_param(param, type) ⇒ Object
: (RBI::Param param, String type) -> RBI::TypedParam
66 67 68 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 66 def create_typed_param(param, type) RBI::TypedParam.new(param: param, type: sanitize_signature_types(type)) end |
#sanitize_signature_types(sig_string) ⇒ Object
: (String sig_string) -> String
71 72 73 74 75 76 77 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 71 def sanitize_signature_types(sig_string) sig_string .gsub(".returns(<VOID>)", ".void") .gsub("<VOID>", "void") .gsub("<NOT-TYPED>", "T.untyped") .gsub(".params()", "") end |
#valid_method_name?(name) ⇒ Boolean
: (String name) -> bool
98 99 100 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 98 def valid_method_name?(name) Prism.parse_success?("def self.#{name}(a); end") end |
#valid_parameter_name?(name) ⇒ Boolean
: (String name) -> bool
103 104 105 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 103 def valid_parameter_name?(name) Prism.parse_success?("def sentinel_method_name(#{name}:); end") end |