module ActiveMocker::MockCreator::Scopes

Constants

Method

Public Instance Methods

ast_scopes() click to toggle source
# File lib/active_mocker/mock_creator/scopes.rb, line 32
def ast_scopes
  @ast_scopes ||= class_introspector
                    .parsed_source
                    .class_begin
                    .children
                    .select { |n| n.try(:type) == :send && n.try { children[1] == :scope } }
end
find_scope_body_from_ast(name) click to toggle source
# File lib/active_mocker/mock_creator/scopes.rb, line 40
def find_scope_body_from_ast(name)
  scope = ast_scopes.detect { |n| n.children[2].children.first == name }
  DissociatedIntrospection::RubyCode.build_from_ast(scope.children[3].children[2]).source
end
scope_body(_arguments, name) click to toggle source
# File lib/active_mocker/mock_creator/scopes.rb, line 18
      def scope_body(_arguments, name)
        if safe_method?(:scope, name)
          find_scope_body_from_ast(name)
        else
          <<-METHOD
            __am_raise_not_mocked_error(
              method: "#{name}",
              caller: Kernel.caller,
              type: "::"
            )
          METHOD
        end
      end
scope_methods() click to toggle source
# File lib/active_mocker/mock_creator/scopes.rb, line 9
def scope_methods
  class_introspector.class_macros.select { |h| h.keys.first == :scope }.map do |h|
    name, args = h.values.first.first
    arguments  = ReverseParameters.new(args)
    body       = scope_body(arguments, name)
    Method.new(name, arguments, body)
  end
end