Sha256: 42cc783fccc7fe0667f53bf1a9870e9db4c0b2784072157d3bbe758961c057e0

Contents?: true

Size: 1.96 KB

Versions: 12

Compression:

Stored size: 1.96 KB

Contents

# frozen_string_literal: true

module Synvert::Core
  # Rewriter::Helper provides some helper methods to make it easier to write a snippet.
  module Rewriter::Helper
    # Add receiver to code if necessary.
    #
    # @param code [String] old code
    # @return [String] new code
    #
    # @example
    #
    #   add_receiver_if_necessary("{{message}} {{arguments}}")
    #
    #   if current_node doesn't have a receiver, it returns "{{message}} {{arguments}}"
    #   if current_node has a receiver, it returns "{{receiver}}.{{message}} {{arguments}}"
    def add_receiver_if_necessary(code)
      if node.receiver
        "{{receiver}}.#{code}"
      else
        code
      end
    end

    # Add arguments with parenthesis if necessary.
    #
    # @return [String] return (!{{arguments}}) if node.arguments present, otherwise return nothing.
    #
    # @example
    #
    #   add_arguments_with_parenthesis_if_necessary
    #
    #   if current_node doesn't have an argument, it returns ""
    #   if current_node has argument, it returns "({{arguments}})"
    def add_arguments_with_parenthesis_if_necessary
      if node.arguments.size > 0
        '({{arguments}})'
      else
        ''
      end
    end

    # Add curly brackets to code if necessary.
    #
    # @param code [String] old code
    # @return [String] new code
    #
    # @example
    #
    #   add_curly_brackets_if_necessary("{{arguments}}")
    def add_curly_brackets_if_necessary(code)
      if code.start_with?('{') && code.end_with?('}')
        code
      else
        "{ #{code} }"
      end
    end

    # Remove leading and trailing brackets.
    #
    # @param code [String] old code
    # @return [String] new code
    #
    # @example
    #
    #   strip_brackets("(1..100)") #=> "1..100"
    def strip_brackets(code)
      code.sub(/^\((.*)\)$/) { Regexp.last_match(1) }
          .sub(/^\[(.*)\]$/) { Regexp.last_match(1) }
          .sub(/^{(.*)}$/) {
        Regexp.last_match(1).strip
      }
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
synvert-core-2.2.2 lib/synvert/core/rewriter/helper.rb
synvert-core-2.2.1 lib/synvert/core/rewriter/helper.rb
synvert-core-2.2.0 lib/synvert/core/rewriter/helper.rb
synvert-core-2.1.2 lib/synvert/core/rewriter/helper.rb
synvert-core-2.1.1 lib/synvert/core/rewriter/helper.rb
synvert-core-2.1.0 lib/synvert/core/rewriter/helper.rb
synvert-core-2.0.3 lib/synvert/core/rewriter/helper.rb
synvert-core-2.0.2 lib/synvert/core/rewriter/helper.rb
synvert-core-2.0.1 lib/synvert/core/rewriter/helper.rb
synvert-core-2.0.0 lib/synvert/core/rewriter/helper.rb
synvert-core-1.35.4 lib/synvert/core/rewriter/helper.rb
synvert-core-1.35.3 lib/synvert/core/rewriter/helper.rb