# Class: YARD::Handlers::Ruby::HandlesExtension

Inherits:
  Object
  - Object
  - YARD::Handlers::Ruby::HandlesExtension
  show all

Defined in:
  lib/yard/handlers/ruby/base.rb

## Overview

To implement a custom handler matcher, subclass this class and implement #matches? to return whether a node matches the handler.

#### Examples:

#####

A Custom Handler Matcher Extension

    # Implements a handler that checks for a specific string
    # in the node's source.
    class MyExtension < HandlesExtension
      def matches?(node) node.source.include?(name) end
    end

    # This handler will handle any node where the source includes 'foo'
    class MyHandler < Handlers::Ruby::Base
      handles MyExtension.new('foo')
    end

## Direct Known Subclasses

MethodCallWrapper, TestNodeWrapper

## Instance Attribute Summary collapse

- #name ⇒ String readonly protected

  The extension matcher value.

## Instance Method Summary collapse

- #initialize(name) ⇒ HandlesExtension constructor

  Creates a new extension with a specific matcher value `name`.

- #matches?(node) ⇒ Boolean

  Tests if the node matches the handler.

## Constructor Details

### #initialize(name) ⇒ `HandlesExtension`

Creates a new extension with a specific matcher value `name`

Parameters:

- name (`Object`) —

  the matcher value to check against #matches?

    22

    # File 'lib/yard/handlers/ruby/base.rb', line 22

    def initialize(name) @name = name end

## Instance Attribute Details

### #name ⇒ `String` (readonly, protected)

Returns the extension matcher value.

Returns:

- (`String`) —

  the extension matcher value

    34
    35
    36

    # File 'lib/yard/handlers/ruby/base.rb', line 34

    def name
      @name
    end

## Instance Method Details

### #matches?(node) ⇒ `Boolean`

Tests if the node matches the handler

Parameters:

- node (`Parser::Ruby::AstNode`) —

  a Ruby node

Returns:

- (`Boolean`) —

  whether the `node` matches the handler

Raises:

- (`NotImplementedError`)

    27
    28
    29

    # File 'lib/yard/handlers/ruby/base.rb', line 27

    def matches?(node) # rubocop:disable Lint/UnusedMethodArgument
      raise NotImplementedError
    end