Class: ObjectInspector::Scope
- Inherits:
-
Object
- Object
- ObjectInspector::Scope
- Defined in:
- lib/object_inspector/scope.rb
Overview
ObjectInspector::Scope defines a predicate method that matches #names and responds with ‘true`. This is a prettier way to test for a given type of “scope” within objects.
It is possible to pass in multiple scope names to match on.
‘:all` is a “wild card” scope name, and will match on all scope names.
Passing a block to a scope predicate falls back to the out-of-scope placeholder (‘*` by default) if the scope does not match.
Instance Attribute Summary collapse
-
#names ⇒ Array<#to_s>
The current value of names.
Instance Method Summary collapse
-
#==(other) ⇒ TrueClass, FalseClass
(also: #eql?)
Compare self with the passed in object.
-
#initialize(names = %w[self])) ⇒ Scope
constructor
A new instance of Scope.
-
#join_flags(flags, separator: ObjectInspector.configuration.flags_separator) ⇒ Object
Join the passed in flags with the passed in separator.
-
#join_info(items, separator: ObjectInspector.configuration.info_separator) ⇒ Object
Join the passed in items with the passed in separator.
-
#join_issues(issues, separator: ObjectInspector.configuration.issues_separator) ⇒ Object
Join the passed in issues with the passed in separator.
-
#join_name(parts, separator: ObjectInspector.configuration.name_separator) ⇒ Object
Join the passed in name parts with the passed in separator.
-
#to_a ⇒ Array<#to_s>
The current value of names.
-
#to_s(separator: ", ") ⇒ String
The contents of #names, joined by ‘, `.
Constructor Details
#initialize(names = %w[self])) ⇒ Scope
Returns a new instance of Scope.
23 24 25 |
# File 'lib/object_inspector/scope.rb', line 23 def initialize(names = %w[self]) @names = Array(names).map { |name| String(name) } end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args) ⇒ Object (private)
85 86 87 88 89 90 91 92 |
# File 'lib/object_inspector/scope.rb', line 85 def method_missing(method_name, *args, &) if method_name[-1] == "?" scope_name = method_name[0..-2] evaluate_match(scope_name, &) else super end end |
Instance Attribute Details
#names ⇒ Array<#to_s>
Returns the current value of names.
20 21 22 |
# File 'lib/object_inspector/scope.rb', line 20 def names @names end |
Instance Method Details
#==(other) ⇒ TrueClass, FalseClass Also known as: eql?
Compare self with the passed in object.
68 69 70 |
# File 'lib/object_inspector/scope.rb', line 68 def ==(other) @names.sort == Array(other).map(&:to_s).sort! end |
#join_flags(flags, separator: ObjectInspector.configuration.flags_separator) ⇒ Object
Join the passed in flags with the passed in separator.
40 41 42 43 |
# File 'lib/object_inspector/scope.rb', line 40 def join_flags( flags, separator: ObjectInspector.configuration.flags_separator) _join(flags, separator) end |
#join_info(items, separator: ObjectInspector.configuration.info_separator) ⇒ Object
Join the passed in items with the passed in separator.
58 59 60 61 |
# File 'lib/object_inspector/scope.rb', line 58 def join_info( items, separator: ObjectInspector.configuration.info_separator) _join(items, separator) end |
#join_issues(issues, separator: ObjectInspector.configuration.issues_separator) ⇒ Object
Join the passed in issues with the passed in separator.
49 50 51 52 |
# File 'lib/object_inspector/scope.rb', line 49 def join_issues( issues, separator: ObjectInspector.configuration.issues_separator) _join(issues, separator) end |
#join_name(parts, separator: ObjectInspector.configuration.name_separator) ⇒ Object
Join the passed in name parts with the passed in separator.
31 32 33 34 |
# File 'lib/object_inspector/scope.rb', line 31 def join_name( parts, separator: ObjectInspector.configuration.name_separator) _join(parts, separator) end |
#to_a ⇒ Array<#to_s>
Returns the current value of names.
79 80 81 |
# File 'lib/object_inspector/scope.rb', line 79 def to_a names end |
#to_s(separator: ", ") ⇒ String
Returns the contents of #names, joined by ‘, `.
74 75 76 |
# File 'lib/object_inspector/scope.rb', line 74 def to_s(separator: ", ") to_a.join(separator) end |