Class: Opal::Rewriters::InlineArgs::Initializer
  
  
  
  
  
    - Inherits:
 
    - 
      Base
      
        
          - Object
 
          
            - Parser::AST::Processor
 
          
            - Base
 
          
            - Opal::Rewriters::InlineArgs::Initializer
 
          
        
        show all
      
     
  
  
  
  
  
  
  
  
  
  
    - Defined in:
 
    - opal/lib/opal/rewriters/inline_args.rb
 
  
  
 
  
    
      Constant Summary
      collapse
    
    
      
        - STEPS =
          
        
 
        %i[
  extract_blockarg
  initialize_shadowargs
  extract_args
  prepare_post_args
  prepare_kwargs
  extract_optargs
  extract_restarg
  extract_post_args
  extract_kwargs
  extract_kwoptargs
  extract_kwrestarg
].freeze
 
      
    
  
  
  
  Constants inherited
     from Base
  Base::DUMMY_LOCATION
  Instance Attribute Summary collapse
  
  
  
  Attributes inherited from Base
  #current_node
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  Methods inherited from Base
  #append_to_body, #begin_with_stmts, #error, #prepend_to_body, #process, #s, s, #stmts_of
  
  Constructor Details
  
    
  
  
    #initialize(args, type:)  ⇒ Initializer 
  
  
  
  
    Returns a new instance of Initializer.
   
 
  
  
    
      
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105 
     | 
    
      # File 'opal/lib/opal/rewriters/inline_args.rb', line 87
def initialize(args, type:)
  @args = Arguments.new(args.children)
  @inline = []
  @initialization = []
  @type = type
  @underscore_found = false
  STEPS.each do |step|
    send(step)
  end
  if @initialization.any?
    @initialization = s(:begin, *@initialization)
  else
    @initialization = nil
  end
end
     | 
  
 
  
 
  
    Instance Attribute Details
    
      
      
      
  
  
    #initialization  ⇒ Object  
  
  
  
  
    Returns the value of attribute initialization.
   
 
  
  
    
      
68
69
70 
     | 
    
      # File 'opal/lib/opal/rewriters/inline_args.rb', line 68
def initialization
  @initialization
end 
     | 
  
 
    
      
      
      
  
  
    #inline  ⇒ Object  
  
  
  
  
    Returns the value of attribute inline.
   
 
  
  
    
      
68
69
70 
     | 
    
      # File 'opal/lib/opal/rewriters/inline_args.rb', line 68
def inline
  @inline
end 
     | 
  
 
    
   
  
    Instance Method Details
    
      
  
  
    #args_to_keep  ⇒ Object 
  
  
  
  
    
      
214
215
216 
     | 
    
      # File 'opal/lib/opal/rewriters/inline_args.rb', line 214
def args_to_keep
  @args.postargs.length
end 
     | 
  
 
    
      
  
  
    
      
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143 
     | 
    
      # File 'opal/lib/opal/rewriters/inline_args.rb', line 119
def 
  @args.args.each do |arg|
    if @type == :iter
                        @initialization << arg.updated(:initialize_iter_arg)
      if arg.children[0] == :_
        if @underscore_found
                                        arg = s(:fake_arg)
        end
        @underscore_found = true
      end
    else
                end
    @inline << arg
  end
end
     | 
  
 
    
      
  
  
    
      
107
108
109
110
111 
     | 
    
      # File 'opal/lib/opal/rewriters/inline_args.rb', line 107
def 
  if (arg = @args.blockarg)
    @initialization << arg.updated(:extract_blockarg)
  end
end
     | 
  
 
    
      
  
  
    
      
164
165
166
167
168 
     | 
    
      # File 'opal/lib/opal/rewriters/inline_args.rb', line 164
def 
  @args.kwargs.each do |arg|
    @initialization << arg.updated(:extract_kwarg)
  end
end
     | 
  
 
    
      
  
  
    
      
170
171
172
173
174 
     | 
    
      # File 'opal/lib/opal/rewriters/inline_args.rb', line 170
def 
  @args.kwoptargs.each do |arg|
    @initialization << arg.updated(:extract_kwoptarg)
  end
end
     | 
  
 
    
      
  
  
    
      
176
177
178
179
180 
     | 
    
      # File 'opal/lib/opal/rewriters/inline_args.rb', line 176
def 
  if (arg = @args.kwrestarg)
    @initialization << arg.updated(:extract_kwrestarg)
  end
end
     | 
  
 
    
      
  
  
    
      
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204 
     | 
    
      # File 'opal/lib/opal/rewriters/inline_args.rb', line 190
def 
  has_post_args = @args.has_post_args?
  @args.optargs.each do |arg|
    if has_post_args
            arg_name, default_value = *arg
      @initialization << arg.updated(:extract_post_optarg, [arg_name, default_value, args_to_keep])
      @inline << s(:fake_arg)
    else
            @inline << arg.updated(:arg)
      @initialization << arg.updated(:extract_optarg)
    end
  end
end
     | 
  
 
    
      
  
  
    
      
182
183
184
185
186
187
188 
     | 
    
      # File 'opal/lib/opal/rewriters/inline_args.rb', line 182
def 
    @args.postargs.each do |arg|
    @initialization << arg.updated(:extract_post_arg)
    @inline << s(:fake_arg)
  end
end
     | 
  
 
    
      
  
  
    
      
206
207
208
209
210
211
212 
     | 
    
      # File 'opal/lib/opal/rewriters/inline_args.rb', line 206
def 
  if (arg = @args.restarg)
    arg_name = arg.children[0]
    @initialization << arg.updated(:extract_restarg, [arg_name, args_to_keep])
    @inline << s(:fake_arg)
  end
end
     | 
  
 
    
      
  
  
    #initialize_shadowargs  ⇒ Object 
  
  
  
  
    
      
113
114
115
116
117 
     | 
    
      # File 'opal/lib/opal/rewriters/inline_args.rb', line 113
def initialize_shadowargs
  @args.shadowargs.each do |arg|
    @initialization << arg.updated(:initialize_shadowarg)
  end
end
     | 
  
 
    
      
  
  
    #prepare_kwargs  ⇒ Object 
  
  
  
  
    
      
151
152
153
154
155
156
157
158
159
160
161
162 
     | 
    
      # File 'opal/lib/opal/rewriters/inline_args.rb', line 151
def prepare_kwargs
  return unless @args.has_any_kwargs?
  if @args.can_inline_kwargs?
    @inline << s(:arg, :'$kwargs')
  else
    @initialization << s(:extract_kwargs)
    @inline << s(:fake_arg)
  end
  @initialization << s(:ensure_kwargs_are_kwargs)
end
     | 
  
 
    
      
  
  
    #prepare_post_args  ⇒ Object 
  
  
  
  
    
      
145
146
147
148
149 
     | 
    
      # File 'opal/lib/opal/rewriters/inline_args.rb', line 145
def prepare_post_args
  if @args.has_post_args?
    @initialization << s(:prepare_post_args, @args.args.length)
  end
end
     |