Class: ObjectInspector::Scope

Inherits:
Object
  • Object
show all
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.

See Also:

  • http://api.rubyonrails.org/classes/ActiveSupport/StringInquirer.html

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#namesArray<#to_s>

Returns the current value of names.

Returns:

  • (Array<#to_s>)

    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.

Returns:

  • (TrueClass)

    if self and ‘other` resolve to the same set of objects

  • (FalseClass)

    if self and ‘other` resolve to a different set of objects



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.

Parameters:

  • flags (Array<#to_s>)
  • separator (#to_s) (defaults to: ObjectInspector.configuration.flags_separator)

    (ObjectInspector.configuration.flags_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.

Parameters:

  • items (Array<#to_s>)
  • separator (#to_s) (defaults to: ObjectInspector.configuration.info_separator)

    (ObjectInspector.configuration.info_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.

Parameters:

  • issues (Array<#to_s>)
  • separator (#to_s) (defaults to: ObjectInspector.configuration.issues_separator)

    (ObjectInspector.configuration.issues_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.

Parameters:

  • parts (Array<#to_s>)
  • separator (#to_s) (defaults to: ObjectInspector.configuration.name_separator)

    (ObjectInspector.configuration.flags_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_aArray<#to_s>

Returns the current value of names.

Returns:

  • (Array<#to_s>)

    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 ‘, `.

Returns:

  • (String)

    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