Module: Tapioca::RBIHelper
- Extended by:
- T::Sig, 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
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 15 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
83 84 85 86 87 88 89 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 83 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
92 93 94 95 96 97 98 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 92 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
64 65 66 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 64 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
54 55 56 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 54 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
49 50 51 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 49 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
59 60 61 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 59 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
39 40 41 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 39 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
34 35 36 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 34 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
44 45 46 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 44 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
69 70 71 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 69 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
74 75 76 77 78 79 80 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 74 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
101 102 103 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 101 def valid_method_name?(name) Prism.parse_success?("def self.#{name}(a); end") end |
#valid_parameter_name?(name) ⇒ Boolean
: (String name) -> bool
106 107 108 |
# File 'lib/tapioca/helpers/rbi_helper.rb', line 106 def valid_parameter_name?(name) Prism.parse_success?("def sentinel_method_name(#{name}:); end") end |