Module: RuboCop::SketchUp::NamespaceChecker

Instance Method Summary collapse

Instance Method Details

#check_namespace(node) ⇒ Object



69
70
71
72
73
# File 'lib/rubocop/sketchup/namespace_checker.rb', line 69

def check_namespace(node)
  return unless in_namespace?(node)

  add_offense(node, location: :name, severity: :error)
end

#in_namespace?(node) ⇒ Boolean

Returns:

  • (Boolean)


88
89
90
91
92
93
94
95
# File 'lib/rubocop/sketchup/namespace_checker.rb', line 88

def in_namespace?(node)
  # parent_module_name might return nil if for instance a method is
  # defined within a block. (Apparently that is possible...)
  return false if node.parent_module_name.nil?

  namespace = SketchUp::Namespace.new(node.parent_module_name)
  namespaces.include?(namespace.first)
end

#namespacesObject

Raises:

  • (NotImplementedError)


97
98
99
# File 'lib/rubocop/sketchup/namespace_checker.rb', line 97

def namespaces
  raise NotImplementedError
end

#on_casgn(node) ⇒ Object

Constant assignment.



50
51
52
# File 'lib/rubocop/sketchup/namespace_checker.rb', line 50

def on_casgn(node)
  check_namespace(node)
end

#on_class(node) ⇒ Object



36
37
38
# File 'lib/rubocop/sketchup/namespace_checker.rb', line 36

def on_class(node)
  check_namespace(node)
end

#on_def(node) ⇒ Object Also known as: on_defs



44
45
46
# File 'lib/rubocop/sketchup/namespace_checker.rb', line 44

def on_def(node)
  check_namespace(node)
end

#on_module(node) ⇒ Object



40
41
42
# File 'lib/rubocop/sketchup/namespace_checker.rb', line 40

def on_module(node)
  check_namespace(node)
end

#on_send(node) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/rubocop/sketchup/namespace_checker.rb', line 54

def on_send(node)
  klass = klass_include(node) || klass_scope_include(node.parent)

  if klass
    namespace = SketchUp::Namespace.new(klass.to_s)
    return unless namespaces.include?(namespace.first)
  else
    # If klass is `nil` we either don't have a `include` call or we're in
    # global namespace.
    return unless top_level_include?(node)
  end

  add_offense(node, location: :selector, severity: :error)
end

#top_level?(node) ⇒ Boolean

Returns:

  • (Boolean)


75
76
77
78
79
80
81
82
# File 'lib/rubocop/sketchup/namespace_checker.rb', line 75

def top_level?(node)
  # parent_module_name might return nil if for instance a method is
  # defined within a block. (Apparently that is possible...)
  return false if node.parent_module_name.nil?

  namespace = SketchUp::Namespace.new(node.parent_module_name)
  namespace.top_level?
end

#top_level_include?(node) ⇒ Boolean

Returns:

  • (Boolean)


84
85
86
# File 'lib/rubocop/sketchup/namespace_checker.rb', line 84

def top_level_include?(node)
  include_call?(node) && top_level?(node)
end