Sha256: a6adfa836cde6557adc1c4c9f6e30e40fa9d5656eb8d3741d86728dee9fdd5e7

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

# frozen_string_literal: true
require 'parser'
require 'opal/ast/node'

module Opal
  module Rewriters
    class Base < ::Parser::AST::Processor
      def s(type, *children)
        ::Opal::AST::Node.new(type, children)
      end

      def self.s(type, *children)
        ::Opal::AST::Node.new(type, children)
      end

      alias on_iter process_regular_node
      alias on_top  process_regular_node

      # TODO: remove patches above after releasing
      # https://github.com/whitequark/parser/commit/cd8d5db
      def on_vasgn(node)
        name, value_node = *node

        if !value_node.nil?
          node.updated(nil, [
            name, process(value_node)
          ])
        else
          node
        end
      end

      def on_casgn(node)
        scope_node, name, value_node = *node

        if !value_node.nil?
          node.updated(nil, [
            process(scope_node), name, process(value_node)
          ])
        else
          node.updated(nil, [
            process(scope_node), name
          ])
        end
      end

      def on_argument(node)
        arg_name, value_node = *node

        if !value_node.nil?
          node.updated(nil, [
            arg_name, process(value_node)
          ])
        else
          node
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
opal-0.11.0.rc1 lib/opal/rewriters/base.rb