Sha256: 2914f932088f89af43c37d26e46c9b1802a52ece055ea2f935ba9ad11fb4bdd8

Contents?: true

Size: 970 Bytes

Versions: 27

Compression:

Stored size: 970 Bytes

Contents

# frozen_string_literal: true

# WrapAction to wrap node within a block, class or module.
#
# Note: if WrapAction is conflicted with another action (start and end are overlapped),
# we have to put those 2 actions into 2 within_file scopes.
class NodeMutation::WrapAction < NodeMutation::Action
  # Initialize a WrapAction.
  #
  # @param node [Node]
  # @param with [String] new code to wrap
  def initialize(node, with:)
    super(node, with)
    @indent = NodeMutation.adapter.get_start_loc(@node).column
  end

  # The rewritten source code.
  #
  # @return [String] rewritten code.
  def new_code
    "#{@code}\n#{' ' * @indent}" +
      NodeMutation.adapter.get_source(@node).split("\n").map { |line| "  #{line}" }
            .join("\n") +
      "\n#{' ' * @indent}end"
  end

  private

  # Calculate the begin the end positions.
  def calculate_position
    @start = NodeMutation.adapter.get_start(@node)
    @end = NodeMutation.adapter.get_end(@node)
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
node_mutation-1.10.0 lib/node_mutation/action/wrap_action.rb
node_mutation-1.9.3 lib/node_mutation/action/wrap_action.rb
node_mutation-1.9.2 lib/node_mutation/action/wrap_action.rb
node_mutation-1.9.1 lib/node_mutation/action/wrap_action.rb
node_mutation-1.9.0 lib/node_mutation/action/wrap_action.rb
node_mutation-1.8.2 lib/node_mutation/action/wrap_action.rb
node_mutation-1.8.1 lib/node_mutation/action/wrap_action.rb
node_mutation-1.8.0 lib/node_mutation/action/wrap_action.rb
node_mutation-1.7.1 lib/node_mutation/action/wrap_action.rb
node_mutation-1.7.0 lib/node_mutation/action/wrap_action.rb
node_mutation-1.6.2 lib/node_mutation/action/wrap_action.rb
node_mutation-1.6.1 lib/node_mutation/action/wrap_action.rb
node_mutation-1.6.0 lib/node_mutation/action/wrap_action.rb
node_mutation-1.5.1 lib/node_mutation/action/wrap_action.rb
node_mutation-1.5.0 lib/node_mutation/action/wrap_action.rb
node_mutation-1.4.4 lib/node_mutation/action/wrap_action.rb
node_mutation-1.4.3 lib/node_mutation/action/wrap_action.rb
node_mutation-1.4.2 lib/node_mutation/action/wrap_action.rb
node_mutation-1.4.1 lib/node_mutation/action/wrap_action.rb
node_mutation-1.4.0 lib/node_mutation/action/wrap_action.rb