Sha256: f097b464f106beb1bc9f3ac4498e05d795e5a9082716d8b68d4844afdab84bf3

Contents?: true

Size: 1.05 KB

Versions: 1

Compression:

Stored size: 1.05 KB

Contents

# frozen_string_literal: true

module RubyNext
  module Language
    module Rewriters
      class RightHandAssignment < Base
        NAME = "right-hand-assignment"
        SYNTAX_PROBE = "1 + 2 => a"
        MIN_SUPPORTED_VERSION = Gem::Version.new("2.8.0")

        def on_rasgn(node)
          context.track! self

          val_node, asgn_node = *node

          remove(val_node.loc.expression.end.join(asgn_node.loc.expression))
          insert_before(val_node.loc.expression, "#{asgn_node.loc.expression.source} = ")

          process(
            asgn_node.updated(
              nil,
              asgn_node.children + [val_node]
            )
          )
        end

        def on_mrasgn(node)
          context.track! self

          lhs, rhs = *node

          replace(lhs.loc.expression.end.join(rhs.loc.expression), ")")
          insert_before(lhs.loc.expression, "#{rhs.loc.expression.source} = (")

          process(
            node.updated(
              :masgn,
              [rhs, lhs]
            )
          )
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ruby-next-core-0.9.2 lib/ruby-next/language/rewriters/right_hand_assignment.rb