Class: Rbs2ts::Converter::Members::MethodDefinition
- Defined in:
- lib/rbs2ts/converter/members.rb
Instance Method Summary collapse
- #arg_name(arg) ⇒ Object
- #args_to_ts ⇒ Object
- #has_rest_after_arguments ⇒ Object
-
#initialize(member) ⇒ MethodDefinition
constructor
A new instance of MethodDefinition.
- #keyword_args_to_ts ⇒ Object
- #method_type ⇒ Object
- #next_default_arg_name ⇒ Object
- #optional_positional_to_ts ⇒ Object
- #optional_ts_code ⇒ Object
- #required_positional_to_ts ⇒ Object
- #rest_positionals_to_ts ⇒ Object
- #return_type_to_ts ⇒ Object
- #to_ts ⇒ Object
- #trailing_positionals_to_ts ⇒ Object
Methods inherited from Base
Constructor Details
#initialize(member) ⇒ MethodDefinition
Returns a new instance of MethodDefinition.
47 48 49 50 |
# File 'lib/rbs2ts/converter/members.rb', line 47 def initialize(member) super @args_count = 0 end |
Instance Method Details
#arg_name(arg) ⇒ Object
66 67 68 69 |
# File 'lib/rbs2ts/converter/members.rb', line 66 def arg_name(arg) name = arg.name.nil? ? next_default_arg_name : arg.name.to_s CaseTransform.camel_lower(name) end |
#args_to_ts ⇒ Object
56 57 58 59 60 61 62 63 64 |
# File 'lib/rbs2ts/converter/members.rb', line 56 def args_to_ts [ *required_positional_to_ts, *optional_positional_to_ts, *rest_positionals_to_ts, *trailing_positionals_to_ts, *keyword_args_to_ts ].join(", ") end |
#has_rest_after_arguments ⇒ Object
138 139 140 141 142 |
# File 'lib/rbs2ts/converter/members.rb', line 138 def has_rest_after_arguments method_type.trailing_positionals.present? || method_type.required_keywords.present? || method_type.optional_keywords.present? end |
#keyword_args_to_ts ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/rbs2ts/converter/members.rb', line 104 def keyword_args_to_ts required_keywords_ts = method_type.required_keywords.map {|key, value| "#{CaseTransform.camel_lower(key.to_s)}: #{Converter::Types::Resolver.to_ts(value.type)}" } optional_keywords_ts = method_type.optional_keywords.map {|key, value| "#{CaseTransform.camel_lower(key.to_s)}?: #{Converter::Types::Resolver.to_ts(value.type)}" } rest_keywords_ts = method_type.rest_keywords.nil? ? [] : ["[key: string]: unknown;"] ts_array = [ *required_keywords_ts, *optional_keywords_ts, *rest_keywords_ts ] return [] if ts_array.empty? ts = ts_array.join(', ') ["#{next_default_arg_name}#{optional_ts_code}: { #{ts} }"] end |
#method_type ⇒ Object
126 127 128 |
# File 'lib/rbs2ts/converter/members.rb', line 126 def method_type member.types.first.type end |
#next_default_arg_name ⇒ Object
71 72 73 74 |
# File 'lib/rbs2ts/converter/members.rb', line 71 def next_default_arg_name @args_count = @args_count + 1 "arg#{@args_count.to_s}" end |
#optional_positional_to_ts ⇒ Object
82 83 84 85 86 |
# File 'lib/rbs2ts/converter/members.rb', line 82 def optional_positional_to_ts method_type.optional_positionals.map {|arg| "#{arg_name(arg)}?: #{Converter::Types::Resolver.to_ts(arg.type)}" } end |
#optional_ts_code ⇒ Object
134 135 136 |
# File 'lib/rbs2ts/converter/members.rb', line 134 def optional_ts_code method_type.optional_positionals.present? ? '?' : '' end |
#required_positional_to_ts ⇒ Object
76 77 78 79 80 |
# File 'lib/rbs2ts/converter/members.rb', line 76 def required_positional_to_ts method_type.required_positionals.map {|arg| "#{arg_name(arg)}: #{Converter::Types::Resolver.to_ts(arg.type)}" } end |
#rest_positionals_to_ts ⇒ Object
88 89 90 91 92 93 94 95 96 |
# File 'lib/rbs2ts/converter/members.rb', line 88 def rest_positionals_to_ts arg = method_type.rest_positionals return [] if arg.nil? has_rest_after_arguments ? ["#{arg_name(arg)}#{optional_ts_code}: #{Converter::Types::Resolver.to_ts(arg.type)}[]"] : ["...#{arg_name(arg)}#{optional_ts_code}: #{Converter::Types::Resolver.to_ts(arg.type)}[]"] end |
#return_type_to_ts ⇒ Object
130 131 132 |
# File 'lib/rbs2ts/converter/members.rb', line 130 def return_type_to_ts Converter::Types::Resolver.to_ts(method_type.return_type) end |
#to_ts ⇒ Object
52 53 54 |
# File 'lib/rbs2ts/converter/members.rb', line 52 def to_ts "#{name}(#{args_to_ts}): #{return_type_to_ts};" end |