Class: RuboCop::Cask::AST::CaskHeader

Inherits:
Object
  • Object
show all
Defined in:
lib/rubocop/cask/ast/cask_header.rb

Overview

This class wraps the AST method node that represents the cask header. It includes various helper methods to aid cops in their analysis.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(method_node) ⇒ CaskHeader

Returns a new instance of CaskHeader.



7
8
9
# File 'lib/rubocop/cask/ast/cask_header.rb', line 7

def initialize(method_node)
  @method_node = method_node
end

Instance Attribute Details

#method_nodeObject (readonly)

Returns the value of attribute method_node.



11
12
13
# File 'lib/rubocop/cask/ast/cask_header.rb', line 11

def method_node
  @method_node
end

Instance Method Details

#cask_tokenObject



45
46
47
# File 'lib/rubocop/cask/ast/cask_header.rb', line 45

def cask_token
  @cask_token ||= pair_node.val_node.children.first
end

#dsl_versionObject



41
42
43
# File 'lib/rubocop/cask/ast/cask_header.rb', line 41

def dsl_version
  @dsl_version ||= pair_node.key_node.children.first
end

#dsl_version?Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/rubocop/cask/ast/cask_header.rb', line 13

def dsl_version?
  hash_node
end

#hash_nodeObject



49
50
51
# File 'lib/rubocop/cask/ast/cask_header.rb', line 49

def hash_node
  @hash_node ||= method_node.each_child_node(:hash).first
end

#header_method_nameObject



37
38
39
# File 'lib/rubocop/cask/ast/cask_header.rb', line 37

def header_method_name
  @header_method_name ||= method_node.method_name
end

#header_strObject



21
22
23
# File 'lib/rubocop/cask/ast/cask_header.rb', line 21

def header_str
  @header_str ||= source_range.source
end

#pair_nodeObject



53
54
55
# File 'lib/rubocop/cask/ast/cask_header.rb', line 53

def pair_node
  @pair_node ||= hash_node.each_child_node(:pair).first
end

#preferred_header_method_nameObject



33
34
35
# File 'lib/rubocop/cask/ast/cask_header.rb', line 33

def preferred_header_method_name
  test_cask? ? :test_cask : :cask
end

#preferred_header_strObject



29
30
31
# File 'lib/rubocop/cask/ast/cask_header.rb', line 29

def preferred_header_str
  "#{preferred_header_method_name} '#{cask_token}'"
end

#source_rangeObject



25
26
27
# File 'lib/rubocop/cask/ast/cask_header.rb', line 25

def source_range
  @source_range ||= method_node.loc.expression
end

#test_cask?Boolean

Returns:

  • (Boolean)


17
18
19
# File 'lib/rubocop/cask/ast/cask_header.rb', line 17

def test_cask?
  header_method_name == :test_cask || dsl_version.to_s.include?('test')
end