Class: Rubyzen::Declarations::MacroDeclaration

Inherits:
Object
  • Object
show all
Includes:
Providers::ClassNameProvider, Providers::FilePathProvider, Providers::LineNumberProvider, Providers::SourceCodeProvider
Defined in:
lib/rubyzen/declarations/macro_declaration.rb

Overview

Represents a class-level macro call (e.g. validates_required, belongs_to).

Examples:

macro = klass.macros.first
macro.name          #=> "validates_required"
macro.symbols       #=> [:name, :email]
macro.keyword_args  #=> [:foreign_key, :optional]

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Providers::SourceCodeProvider

#source_code

Methods included from Providers::LineNumberProvider

#line

Methods included from Providers::ClassNameProvider

#class_name

Methods included from Providers::FilePathProvider

#file_path

Constructor Details

#initialize(node, parent) ⇒ MacroDeclaration

Returns a new instance of MacroDeclaration.

Parameters:

  • node (RuboCop::AST::Node)

    the AST node

  • parent (ClassDeclaration)

    the parent declaration



25
26
27
28
# File 'lib/rubyzen/declarations/macro_declaration.rb', line 25

def initialize(node, parent)
  @node = node
  @parent = parent
end

Instance Attribute Details

#nodeRuboCop::AST::Node (readonly)

Returns:

  • (RuboCop::AST::Node)


18
19
20
# File 'lib/rubyzen/declarations/macro_declaration.rb', line 18

def node
  @node
end

#parentClassDeclaration (readonly)

Returns:



21
22
23
# File 'lib/rubyzen/declarations/macro_declaration.rb', line 21

def parent
  @parent
end

Instance Method Details

#keyword_argsArray<Symbol>

Returns keyword argument keys.

Returns:

  • (Array<Symbol>)


54
55
56
# File 'lib/rubyzen/declarations/macro_declaration.rb', line 54

def keyword_args
  extract_keyword_args(node)
end

#nameString

Returns the macro method name.

Returns:

  • (String)

    e.g. “validates_required”, “belongs_to”



33
34
35
# File 'lib/rubyzen/declarations/macro_declaration.rb', line 33

def name
  node.method_name.to_s
end

#receiverString?

Returns the constant receiver, if any.

Returns:

  • (String, nil)

    e.g. “Config” for Config.setting



61
62
63
# File 'lib/rubyzen/declarations/macro_declaration.rb', line 61

def receiver
  node.receiver&.type == :const ? node.receiver.const_name : nil
end

#stringsArray<String>

Returns positional string arguments.

Returns:

  • (Array<String>)


47
48
49
# File 'lib/rubyzen/declarations/macro_declaration.rb', line 47

def strings
  node.arguments.select { |arg| arg.type == :str }.map(&:value)
end

#symbolsArray<Symbol>

Returns positional symbol arguments.

Returns:

  • (Array<Symbol>)


40
41
42
# File 'lib/rubyzen/declarations/macro_declaration.rb', line 40

def symbols
  node.arguments.select { |arg| arg.type == :sym }.map(&:value)
end