Class: Yard::Lint::Validators::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/yard/lint/validators/base.rb

Overview

Base YARD validator class

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config, selection) ⇒ Base

Returns a new instance of Base.

Parameters:

  • config (Yard::Lint::Config)

    configuration object

  • selection (Array<String>)

    array with ruby files we want to check



60
61
62
63
# File 'lib/yard/lint/validators/base.rb', line 60

def initialize(config, selection)
  @config = config
  @selection = selection
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



14
15
16
# File 'lib/yard/lint/validators/base.rb', line 14

def config
  @config
end

#selectionObject (readonly)

Returns the value of attribute selection.



14
15
16
# File 'lib/yard/lint/validators/base.rb', line 14

def selection
  @selection
end

Class Method Details

.in_process(visibility: :public) ⇒ void

This method returns an undefined value.

Declare that this validator supports in-process execution

Examples:

class Validator < Base
  in_process visibility: :all
end

Parameters:

  • visibility (Symbol) (defaults to: :public)

    visibility filter for objects (:public or :all) :public - only include public methods (default, no –private/–protected) :all - include all methods (equivalent to –private –protected)



26
27
28
29
# File 'lib/yard/lint/validators/base.rb', line 26

def in_process(visibility: :public)
  @in_process_enabled = true
  @in_process_visibility = visibility
end

.in_process?Boolean

Check if this validator supports in-process execution

Returns:

  • (Boolean)


33
34
35
# File 'lib/yard/lint/validators/base.rb', line 33

def in_process?
  @in_process_enabled == true
end

.in_process_visibilitySymbol?

Get the visibility setting for in-process execution

Returns:

  • (Symbol, nil)

    :public, :all, or nil if not set



39
40
41
# File 'lib/yard/lint/validators/base.rb', line 39

def in_process_visibility
  @in_process_visibility
end

.validator_nameString?

Get the validator name from the class namespace

Examples:

Yard::Lint::Validators::Tags::Order::Validator.validator_name
# => 'Tags/Order'

Returns:

  • (String, nil)

    validator name like ‘Tags/Order’ or nil



48
49
50
51
52
53
54
55
# File 'lib/yard/lint/validators/base.rb', line 48

def validator_name
  name&.split('::')&.then do |parts|
    idx = parts.index('Validators')
    return nil unless idx && parts[idx + 1] && parts[idx + 2]

    "#{parts[idx + 1]}/#{parts[idx + 2]}"
  end
end

Instance Method Details

#in_process_query(object, collector) ⇒ void

This method returns an undefined value.

Execute query for a single object during in-process execution. Override this method in validators that support in-process execution.

Examples:

def in_process_query(object, collector)
  return unless object.docstring.all.empty?
  collector.puts "#{object.file}:#{object.line}: #{object.title}"
end

Parameters:

  • object (YARD::CodeObjects::Base)

    the code object to query

  • collector (Executor::ResultCollector)

    collector for output

Raises:

  • (NotImplementedError)


75
76
77
# File 'lib/yard/lint/validators/base.rb', line 75

def in_process_query(object, collector)
  raise NotImplementedError, "#{self.class} must implement in_process_query for in-process execution"
end