Class: Rubyzen::Declarations::RequireDeclaration

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

Overview

Represents a require, require_relative, or load statement.

Examples:

req = file.requires.first
req.required_path     #=> "json"
req.require?          #=> true
req.require_relative? #=> false

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Providers::LineNumberProvider

#line

Methods included from Providers::FilePathProvider

#file_path

Constructor Details

#initialize(node, parent_file) ⇒ RequireDeclaration

Returns a new instance of RequireDeclaration.

Parameters:

  • node (RuboCop::AST::Node)

    the AST node

  • parent_file (FileDeclaration)

    the parent file declaration



24
25
26
27
# File 'lib/rubyzen/declarations/require_declaration.rb', line 24

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

Instance Attribute Details

#nodeRuboCop::AST::Node (readonly)

Returns:

  • (RuboCop::AST::Node)


16
17
18
# File 'lib/rubyzen/declarations/require_declaration.rb', line 16

def node
  @node
end

#parent_fileFileDeclaration (readonly) Also known as: parent

Returns:



19
20
21
# File 'lib/rubyzen/declarations/require_declaration.rb', line 19

def parent_file
  @parent_file
end

Instance Method Details

#load?Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/rubyzen/declarations/require_declaration.rb', line 56

def load?
  name == 'load'
end

#nameString

Returns the statement type.

Returns:

  • (String)

    one of “require”, “require_relative”, “load”



32
33
34
# File 'lib/rubyzen/declarations/require_declaration.rb', line 32

def name
  node.method_name.to_s
end

#require?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/rubyzen/declarations/require_declaration.rb', line 46

def require?
  name == 'require'
end

#require_relative?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/rubyzen/declarations/require_declaration.rb', line 51

def require_relative?
  name == 'require_relative'
end

#required_pathString?

Returns the required path string.

Returns:

  • (String, nil)


39
40
41
42
43
# File 'lib/rubyzen/declarations/require_declaration.rb', line 39

def required_path
  first_arg = node.arguments.first
  return nil unless first_arg&.type == :str
  first_arg.value
end