Class: RuboCop::Cop::SketchupRequirements::ExtensionNamespace
Constant Summary
collapse
- @@namespace =
Class variables are normally frowned upon since they leak through all instances. However, in this case this is exactly what we want. The Cop picks up the first top level namespace it encounters and then keep track of whether it detects more top level namespaces.
nil
Constants included
from SketchUp
SketchUp::CONFIG, SketchUp::VERSION
SketchUp::Config::DEFAULT_CONFIGURATION
Instance Method Summary
collapse
inherited, #relevant_file?
Instance Method Details
#check_class_or_module(node) ⇒ Object
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/rubocop/sketchup/cop/requirements/extension_namespace.rb', line 23
def check_class_or_module(node)
name = node.defined_module_name
parent = Namespace.new(node.parent_module_name)
namespace = parent.join(name)
return unless parent.top_level?
return if exempted?(namespace)
check_namespace(node, namespace)
end
|
#check_namespace(node, namespace) ⇒ Object
39
40
41
42
43
44
45
46
47
48
49
|
# File 'lib/rubocop/sketchup/cop/requirements/extension_namespace.rb', line 39
def check_namespace(node, namespace)
return if reserved?(namespace)
top = namespace.first
@@namespace ||= top
return if @@namespace == top
add_offense(node, location: :name, severity: :error)
end
|
#exempted?(namespace) ⇒ Boolean
64
65
66
|
# File 'lib/rubocop/sketchup/cop/requirements/extension_namespace.rb', line 64
def exempted?(namespace)
namespace_exceptions.include?(namespace.first)
end
|
#message(node) ⇒ Object
59
60
61
62
|
# File 'lib/rubocop/sketchup/cop/requirements/extension_namespace.rb', line 59
def message(node)
namespace = Namespace.new(node.defined_module_name).from_root
format('Use a single root namespace. (Found `%s`; Previously found `%s`)', namespace, @@namespace)
end
|
#namespace_exceptions ⇒ Object
68
69
70
71
72
73
|
# File 'lib/rubocop/sketchup/cop/requirements/extension_namespace.rb', line 68
def namespace_exceptions
exceptions = cop_config['Exceptions'] || []
return exceptions if exceptions.is_a?(Array)
raise 'exceptions needs to be an array of strings!'
end
|
#on_class(node) ⇒ Object
15
16
17
|
# File 'lib/rubocop/sketchup/cop/requirements/extension_namespace.rb', line 15
def on_class(node)
check_class_or_module(node)
end
|
#on_module(node) ⇒ Object
19
20
21
|
# File 'lib/rubocop/sketchup/cop/requirements/extension_namespace.rb', line 19
def on_module(node)
check_class_or_module(node)
end
|
#reserved?(namespace) ⇒ Boolean