Class: Code::Node::FunctionParameter

Inherits:
Code::Node show all
Defined in:
lib/code/node/function_parameter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Code::Node

#evaluate, #resolve

Constructor Details

#initialize(parsed) ⇒ FunctionParameter

Returns a new instance of FunctionParameter.



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/code/node/function_parameter.rb', line 8

def initialize(parsed)
  return if parsed.blank?

  @name = parsed.delete(:name).presence
  @keyword = parsed.delete(:keyword).present?
  @regular_splat = parsed.delete(:regular_splat).present?
  @keyword_splat = parsed.delete(:keyword_splat).present?
  @spread = parsed.delete(:spread).present?
  @block = parsed.delete(:block).present?
  @blocks = parsed.delete(:blocks).present?
  @default = Code.new(parsed.delete(:default)) if parsed.key?(:default)
end

Instance Attribute Details

#defaultObject (readonly)

Returns the value of attribute default.



6
7
8
# File 'lib/code/node/function_parameter.rb', line 6

def default
  @default
end

Instance Method Details

#block?Boolean

Returns:



45
46
47
# File 'lib/code/node/function_parameter.rb', line 45

def block?
  !!@block
end

#blocks?Boolean

Returns:



49
50
51
# File 'lib/code/node/function_parameter.rb', line 49

def blocks?
  !!@blocks
end

#keyword?Boolean

Returns:



29
30
31
# File 'lib/code/node/function_parameter.rb', line 29

def keyword?
  !!@keyword
end

#keyword_splat?Boolean

Returns:



37
38
39
# File 'lib/code/node/function_parameter.rb', line 37

def keyword_splat?
  !!@keyword_splat
end

#nameObject



21
22
23
# File 'lib/code/node/function_parameter.rb', line 21

def name
  Object::String.new(@name)
end

#regular?Boolean

Returns:



25
26
27
# File 'lib/code/node/function_parameter.rb', line 25

def regular?
  !@keyword
end

#regular_splat?Boolean

Returns:



33
34
35
# File 'lib/code/node/function_parameter.rb', line 33

def regular_splat?
  !!@regular_splat
end

#spread?Boolean

Returns:



41
42
43
# File 'lib/code/node/function_parameter.rb', line 41

def spread?
  !!@spread
end

#to_codeObject



67
68
69
# File 'lib/code/node/function_parameter.rb', line 67

def to_code
  to_h.to_code
end

#to_hObject



53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/code/node/function_parameter.rb', line 53

def to_h
  {
    name: name,
    regular?: regular?,
    keyword?: keyword?,
    regular_splat?: regular_splat?,
    keyword_splat?: keyword_splat?,
    spread?: spread?,
    block?: block?,
    blocks?: blocks?,
    default: default
  }
end