Module: RuboCop::SketchUp::NamespaceChecker
- Extended by:
- NodePattern::Macros
- Included in:
- Cop::SketchupRequirements::ApiNamespace, Cop::SketchupRequirements::RubyCoreNamespace, Cop::SketchupRequirements::RubyStdLibNamespace, Cop::SketchupRequirements::ShippedExtensionsNamespace
- Defined in:
- lib/rubocop/sketchup/namespace_checker.rb
Instance Method Summary collapse
- #check_namespace(node) ⇒ Object
- #in_namespace?(node) ⇒ Boolean
- #namespaces ⇒ Object
-
#on_casgn(node) ⇒ Object
Constant assignment.
- #on_class(node) ⇒ Object
- #on_def(node) ⇒ Object (also: #on_defs)
- #on_module(node) ⇒ Object
- #on_send(node) ⇒ Object
- #top_level?(node) ⇒ Boolean
- #top_level_include?(node) ⇒ Boolean
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
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 |
#namespaces ⇒ Object
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
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
84 85 86 |
# File 'lib/rubocop/sketchup/namespace_checker.rb', line 84 def top_level_include?(node) include_call?(node) && top_level?(node) end |