Class: Rubydex::Signature

Inherits:
Object
  • Object
show all
Defined in:
lib/rubydex/signature.rb,
ext/rubydex/signature.c

Defined Under Namespace

Classes: BlockParameter, ForwardParameter, KeywordParameter, OptionalKeywordParameter, OptionalPositionalParameter, Parameter, PositionalParameter, PostParameter, RestKeywordParameter, RestPositionalParameter

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parameters) ⇒ Signature

: (Array) -> void



33
34
35
# File 'lib/rubydex/signature.rb', line 33

def initialize(parameters)
  @parameters = parameters
end

Instance Attribute Details

#parametersObject (readonly)

: Array



30
31
32
# File 'lib/rubydex/signature.rb', line 30

def parameters
  @parameters
end

Instance Method Details

#block_parameterObject

: () -> BlockParameter?



128
# File 'lib/rubydex/signature.rb', line 128

def block_parameter = deconstruct[8]

#deconstructObject

: () -> [Array, Array, RestPositionalParameter?, Array, Array, Array, RestKeywordParameter?, ForwardParameter?, BlockParameter?]



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/rubydex/signature.rb', line 38

def deconstruct
  positionals = [] #: Array[PositionalParameter]
  optional_positionals = [] #: Array[OptionalPositionalParameter]
  rest_positional = nil #: RestPositionalParameter?
  posts = [] #: Array[PostParameter]
  keywords = [] #: Array[KeywordParameter]
  optional_keywords = [] #: Array[OptionalKeywordParameter]
  rest_keyword = nil #: RestKeywordParameter?
  forward = nil #: ForwardParameter?
  block = nil #: BlockParameter?

  parameters.each do |param|
    case param
    when PositionalParameter then positionals << param
    when OptionalPositionalParameter then optional_positionals << param
    when RestPositionalParameter then rest_positional = param
    when PostParameter then posts << param
    when KeywordParameter then keywords << param
    when OptionalKeywordParameter then optional_keywords << param
    when RestKeywordParameter then rest_keyword = param
    when ForwardParameter then forward = param
    when BlockParameter then block = param
    end
  end

  [positionals, optional_positionals, rest_positional, posts, keywords, optional_keywords, rest_keyword, forward, block]
end

#deconstruct_keys(keys) ⇒ Object

: (Array?) -> Hash[Symbol, untyped]



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/rubydex/signature.rb', line 80

def deconstruct_keys(keys)
  keys = DECONSTRUCT_KEYS if keys.nil?

  positionals, optional_positionals, rest_positional, posts,
    keywords, optional_keywords, rest_keyword, forward, block = deconstruct

  result = {} #: Hash[Symbol, untyped]
  keys.each do |key|
    case key
    when :positional_parameters then result[key] = positionals
    when :optional_positional_parameters then result[key] = optional_positionals
    when :rest_positional_parameter then result[key] = rest_positional
    when :post_parameters then result[key] = posts
    when :keyword_parameters then result[key] = keywords
    when :optional_keyword_parameters then result[key] = optional_keywords
    when :rest_keyword_parameter then result[key] = rest_keyword
    when :forward_parameter then result[key] = forward
    when :block_parameter then result[key] = block
    end
  end
  result
end

#forward_parameterObject

: () -> ForwardParameter?



125
# File 'lib/rubydex/signature.rb', line 125

def forward_parameter = deconstruct[7]

#keyword_parametersObject

: () -> Array



116
# File 'lib/rubydex/signature.rb', line 116

def keyword_parameters = deconstruct[4]

#optional_keyword_parametersObject

: () -> Array



119
# File 'lib/rubydex/signature.rb', line 119

def optional_keyword_parameters = deconstruct[5]

#optional_positional_parametersObject

: () -> Array



107
# File 'lib/rubydex/signature.rb', line 107

def optional_positional_parameters = deconstruct[1]

#positional_parametersObject

: () -> Array



104
# File 'lib/rubydex/signature.rb', line 104

def positional_parameters = deconstruct[0]

#post_parametersObject

: () -> Array



113
# File 'lib/rubydex/signature.rb', line 113

def post_parameters = deconstruct[3]

#rest_keyword_parameterObject

: () -> RestKeywordParameter?



122
# File 'lib/rubydex/signature.rb', line 122

def rest_keyword_parameter = deconstruct[6]

#rest_positional_parameterObject

: () -> RestPositionalParameter?



110
# File 'lib/rubydex/signature.rb', line 110

def rest_positional_parameter = deconstruct[2]