Sha256: 6c609aa28c4204640a84c6fa8da381f9458315fa02cf6e4a6bac54c0c5b2f524

Contents?: true

Size: 1.01 KB

Versions: 4

Compression:

Stored size: 1.01 KB

Contents

# frozen_string_literal: true

module RubyNext
  module Language
    module Rewriters
      class RightHandAssignment < Base
        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

4 entries across 4 versions & 1 rubygems

Version Path
ruby-next-core-0.9.1 lib/ruby-next/language/rewriters/right_hand_assignment.rb
ruby-next-core-0.9.0 lib/ruby-next/language/rewriters/right_hand_assignment.rb
ruby-next-core-0.9.0.pre lib/ruby-next/language/rewriters/right_hand_assignment.rb
ruby-next-core-0.8.0 lib/ruby-next/language/rewriters/right_hand_assignment.rb