Sha256: 4bdd34ba4b38db8018b15cb57d48c4f3c8a9029977e775d47998024191b8eb10

Contents?: true

Size: 1.7 KB

Versions: 24

Compression:

Stored size: 1.7 KB

Contents

# frozen_string_literal: true

module Reek
  module AST
    module SexpExtensions
      # Base module for utility methods for argument nodes.
      module ArgNodeBase
        def name
          children.first
        end

        def marked_unused?
          plain_name.start_with?('_')
        end

        def plain_name
          name.to_s
        end

        def block?
          false
        end

        def optional_argument?
          false
        end

        def anonymous_splat?
          false
        end

        def components
          [self]
        end
      end

      # Utility methods for :arg nodes.
      module ArgNode
        include ArgNodeBase
      end

      # Utility methods for :kwarg nodes.
      module KwargNode
        include ArgNodeBase
      end

      # Utility methods for :optarg nodes.
      module OptargNode
        include ArgNodeBase

        def optional_argument?
          true
        end
      end

      # Utility methods for :kwoptarg nodes.
      module KwoptargNode
        include ArgNodeBase

        def optional_argument?
          true
        end
      end

      # Utility methods for :blockarg nodes.
      module BlockargNode
        include ArgNodeBase

        def block?
          true
        end
      end

      # Utility methods for :restarg nodes.
      module RestargNode
        include ArgNodeBase

        def anonymous_splat?
          !name
        end
      end

      # Utility methods for :kwrestarg nodes.
      module KwrestargNode
        include ArgNodeBase

        def anonymous_splat?
          !name
        end
      end

      # Utility methods for :shadowarg nodes.
      module ShadowargNode
        include ArgNodeBase
      end
    end
  end
end

Version data entries

24 entries across 22 versions & 2 rubygems

Version Path
reek-5.6.0 lib/reek/ast/sexp_extensions/arguments.rb
reek-5.5.0 lib/reek/ast/sexp_extensions/arguments.rb
reek-5.4.1 lib/reek/ast/sexp_extensions/arguments.rb
reek-5.4.0 lib/reek/ast/sexp_extensions/arguments.rb
reek-5.3.2 lib/reek/ast/sexp_extensions/arguments.rb
reek-5.3.1 lib/reek/ast/sexp_extensions/arguments.rb
reek-5.3.0 lib/reek/ast/sexp_extensions/arguments.rb
config_gems_initialization_aim-0.1.4 vendor/bundle/ruby/2.5.0/gems/reek-5.2.0/lib/reek/ast/sexp_extensions/arguments.rb
config_gems_initialization_aim-0.1.4 vendor/bundle/ruby/2.5.0/gems/config_gems_initialization_aim-0.1.1/vendor/bundle/ruby/2.5.0/gems/reek-5.2.0/lib/reek/ast/sexp_extensions/arguments.rb
config_gems_initialization_aim-0.1.3 vendor/bundle/ruby/2.5.0/gems/config_gems_initialization_aim-0.1.1/vendor/bundle/ruby/2.5.0/gems/reek-5.2.0/lib/reek/ast/sexp_extensions/arguments.rb
config_gems_initialization_aim-0.1.3 vendor/bundle/ruby/2.5.0/gems/reek-5.2.0/lib/reek/ast/sexp_extensions/arguments.rb
reek-5.2.0 lib/reek/ast/sexp_extensions/arguments.rb
reek-5.1.0 lib/reek/ast/sexp_extensions/arguments.rb
reek-5.0.2 lib/reek/ast/sexp_extensions/arguments.rb
reek-5.0.1 lib/reek/ast/sexp_extensions/arguments.rb
reek-5.0.0 lib/reek/ast/sexp_extensions/arguments.rb
reek-4.8.2 lib/reek/ast/sexp_extensions/arguments.rb
reek-4.8.1 lib/reek/ast/sexp_extensions/arguments.rb
reek-4.8.0 lib/reek/ast/sexp_extensions/arguments.rb
reek-4.7.3 lib/reek/ast/sexp_extensions/arguments.rb