Sha256: c2d2bd6d4cc93c39c9fd5551da9a24cb71c0b1b5c47550e769dd387eb4f331d0
Contents?: true
Size: 1.05 KB
Versions: 13
Compression:
Stored size: 1.05 KB
Contents
# frozen_string_literal: true require 'opal/nodes/base' module Opal module Nodes module Args # This node is responsible for extracting a splat argument from post-arguments # # args_to_keep is the number of required post-arguments # # def m(*a, b, c, d); end # becomes something like: # a = post_args[0..-3] # post_args = post_args[-3..-1] # class ExtractRestarg < Base handle :extract_restarg children :name, :args_to_keep def compile if name add_temp name if args_to_keep == 0 # no post-args, we are free to grab everything line "#{name} = $post_args;" else line "#{name} = $post_args.splice(0, $post_args.length - #{args_to_keep});" end elsif args_to_keep != 0 # def m(*, a) # We still have to "cut" our splat line "$post_args.splice(0, $post_args.length - #{args_to_keep});" end end end end end end
Version data entries
13 entries across 13 versions & 1 rubygems