Class: Yoda::Model::TypeExpressions::FunctionType::Parameter

Inherits:
Object
  • Object
show all
Defined in:
lib/yoda/model/type_expressions/function_type/parameter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name: nil, type:) ⇒ Parameter

Returns a new instance of Parameter.

Parameters:

  • name (String, nil) (defaults to: nil)
  • type (Base)


14
15
16
17
# File 'lib/yoda/model/type_expressions/function_type/parameter.rb', line 14

def initialize(name: nil, type:)
  @name = name
  @type = type
end

Instance Attribute Details

#nameString? (readonly)

Returns:

  • (String, nil)


7
8
9
# File 'lib/yoda/model/type_expressions/function_type/parameter.rb', line 7

def name
  @name
end

#typeBase (readonly)

Returns:



10
11
12
# File 'lib/yoda/model/type_expressions/function_type/parameter.rb', line 10

def type
  @type
end

Instance Method Details

#==(another) ⇒ Object



29
30
31
# File 'lib/yoda/model/type_expressions/function_type/parameter.rb', line 29

def ==(another)
  eql?(another)
end

#block_expressionString

Returns:

  • (String)


68
69
70
# File 'lib/yoda/model/type_expressions/function_type/parameter.rb', line 68

def block_expression
  positional_expression(block: true)
end

#eql?(another) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/yoda/model/type_expressions/function_type/parameter.rb', line 33

def eql?(another)
  another.is_a?(Parameter) && name == another.name && type == another.type
end

#hashObject



37
38
39
# File 'lib/yoda/model/type_expressions/function_type/parameter.rb', line 37

def hash
  [self.class.name, name, type].hash
end

#keyword_expression(optional: false) ⇒ String

Returns:

  • (String)


42
43
44
45
# File 'lib/yoda/model/type_expressions/function_type/parameter.rb', line 42

def keyword_expression(optional: false)
  prefix = optional ? "?" : ""
  "#{prefix}#{name}: #{type}"
end

#keyword_rest_expressionString

Returns:

  • (String)


53
54
55
# File 'lib/yoda/model/type_expressions/function_type/parameter.rb', line 53

def keyword_rest_expression
  "**#{type} #{name}"
end

#map_type(&block) ⇒ Object



25
26
27
# File 'lib/yoda/model/type_expressions/function_type/parameter.rb', line 25

def map_type(&block)
  self.class.new(name: name, type: block.call(type))
end

#optional_expressionString

Returns:

  • (String)


58
59
60
# File 'lib/yoda/model/type_expressions/function_type/parameter.rb', line 58

def optional_expression
  positional_expression(optional: true)
end

#optional_keyword_expressionString

Returns:

  • (String)


48
49
50
# File 'lib/yoda/model/type_expressions/function_type/parameter.rb', line 48

def optional_keyword_expression
  keyword_expression(optional: true)
end

#positional_expression(optioanl: false, rest: false, block: false) ⇒ String

Returns:

  • (String)


73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/yoda/model/type_expressions/function_type/parameter.rb', line 73

def positional_expression(optioanl: false, rest: false, block: false)
  prefix = begin
    if optional
      "?" 
    elsif rest
      "*"
    elsif block
      "&"
    else
      ""
    end
  end
  if name
    "#{prefix}#{type} #{name}"
  else
    "#{prefix}#{type}"
  end
end

#rest_expressionString

Returns:

  • (String)


63
64
65
# File 'lib/yoda/model/type_expressions/function_type/parameter.rb', line 63

def rest_expression
  positional_expression(rest: true)
end

#to_rbs_param(env) ⇒ RBS::Types::Function::Param

Parameters:

Returns:

  • (RBS::Types::Function::Param)


21
22
23
# File 'lib/yoda/model/type_expressions/function_type/parameter.rb', line 21

def to_rbs_param(env)
  RBS::Types::Function::Param.new(type: type.to_rbs_type(env), name: name.to_sym)
end