class AstTraverser
def extract_arguments(node, name)
def extract_arguments(node, name) args = node.arguments res = {} return res if args.empty? kwargs = args.last if kwargs.respond_to?(:pairs) res = kwargs.pairs.each_with_object({}) do |pair, h| h.merge!(extract_values(pair)) end end # Heroicon is the only component that accepts positional arguments. res[:icon] = args.first.source if name == "Ariadne::HeroiconComponent" && args.size > 1 res end