Sha256: 35838414b83fea0fe727f6d36097d2eed3882b43ddba5b2123bfe597fc4299b0

Contents?: true

Size: 1.29 KB

Versions: 12

Compression:

Stored size: 1.29 KB

Contents

# frozen_string_literal: true

module Synvert::Core
  # ReplaceErbStmtWithExprAction to replace erb stmt code to expr,
  # @example
  #   e.g. <% form_for ... %> => <%= form_for ... %>.
  class Rewriter::ReplaceErbStmtWithExprAction < Rewriter::Action
    # Initialize a ReplaceErbStmtWithExprAction.
    #
    # @param instance [Synvert::Core::Rewriter::Instance]
    def initialize(instance)
      super(instance, nil)
    end

    # The rewritten erb expr code.
    #
    # @return [String] rewritten code.
    def rewritten_code
      @node.loc.expression.source_buffer.source[begin_pos...end_pos]
           .sub(Engine::ERUBY_STMT_SPLITTER, '@output_buffer.append= ')
           .sub(Engine::ERUBY_STMT_SPLITTER, Engine::ERUBY_EXPR_SPLITTER)
    end

    private

    # Calculate the begin the end positions.
    def calculate_position
      node_begin_pos = @node.loc.expression.begin_pos
      while @node.loc.expression.source_buffer.source[node_begin_pos -= 1] == ' '
      end
      @begin_pos = node_begin_pos - Engine::ERUBY_STMT_SPLITTER.length + 1

      node_begin_pos = @node.loc.expression.begin_pos
      node_begin_pos += @node.loc.expression.source.index 'do'
      while @node.loc.expression.source_buffer.source[node_begin_pos += 1] != '@'
      end
      @end_pos = node_begin_pos
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
synvert-core-1.4.0 lib/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action.rb
synvert-core-1.3.1 lib/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action.rb
synvert-core-1.3.0 lib/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action.rb
synvert-core-1.2.1 lib/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action.rb
synvert-core-1.2.0 lib/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action.rb
synvert-core-1.1.1 lib/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action.rb
synvert-core-1.1.0 lib/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action.rb
synvert-core-1.0.5 lib/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action.rb
synvert-core-1.0.4 lib/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action.rb
synvert-core-1.0.3 lib/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action.rb
synvert-core-1.0.2 lib/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action.rb
synvert-core-1.0.1 lib/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action.rb