Sha256: 8576a48824dbcc4f13a0eaafcc1ee4a83bcf89ee44b77de20ed8d3a097f42a17

Contents?: true

Size: 1.21 KB

Versions: 21

Compression:

Stored size: 1.21 KB

Contents

# frozen_string_literal: true

# InsertAction to add code to the node.
class NodeMutation::InsertAction < NodeMutation::Action
  # Initialize an InsertAction.
  #
  # @param ndoe [Node]
  # @param code [String] to be inserted
  # @param at [String] position to insert, beginning or end
  # @param to [<nil|String>] name of child node
  # @param and_comma [Boolean] insert extra comma.
  def initialize(node, code, at: 'end', to: nil, and_comma: false)
    super(node, code)
    @at = at
    @to = to
    @and_comma = and_comma
    @type = :insert
  end

  # The rewritten source code.
  #
  # @return [String] rewritten code.
  def new_code
    if @and_comma
      @at == 'end' ? ", #{rewritten_source}" : "#{rewritten_source}, "
    else
      rewritten_source
    end
  end

  private

  # Calculate the begin and end positions.
  def calculate_position
    @start =
      if @at == 'end'
        if @to
          NodeMutation.adapter.child_node_range(@node, @to).end
        else
          NodeMutation.adapter.get_end(@node)
        end
      else
        if @to
          NodeMutation.adapter.child_node_range(@node, @to).start
        else
          NodeMutation.adapter.get_start(@node)
        end
      end
    @end = @start
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
node_mutation-1.21.6 lib/node_mutation/action/insert_action.rb
node_mutation-1.21.5 lib/node_mutation/action/insert_action.rb
node_mutation-1.21.4 lib/node_mutation/action/insert_action.rb
node_mutation-1.21.3 lib/node_mutation/action/insert_action.rb
node_mutation-1.21.2 lib/node_mutation/action/insert_action.rb
node_mutation-1.21.1 lib/node_mutation/action/insert_action.rb
node_mutation-1.21.0 lib/node_mutation/action/insert_action.rb
node_mutation-1.20.0 lib/node_mutation/action/insert_action.rb
node_mutation-1.19.4 lib/node_mutation/action/insert_action.rb
node_mutation-1.19.3 lib/node_mutation/action/insert_action.rb
node_mutation-1.19.2 lib/node_mutation/action/insert_action.rb
node_mutation-1.19.1 lib/node_mutation/action/insert_action.rb
node_mutation-1.19.0 lib/node_mutation/action/insert_action.rb
node_mutation-1.18.3 lib/node_mutation/action/insert_action.rb
node_mutation-1.18.2 lib/node_mutation/action/insert_action.rb
node_mutation-1.18.1 lib/node_mutation/action/insert_action.rb
node_mutation-1.18.0 lib/node_mutation/action/insert_action.rb
node_mutation-1.17.1 lib/node_mutation/action/insert_action.rb
node_mutation-1.17.0 lib/node_mutation/action/insert_action.rb
node_mutation-1.16.0 lib/node_mutation/action/insert_action.rb