Skip to content

chubas/peeping

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

peeping

Like aspect-oriented, but cooler!

Motivation

This library intends to provide a simple yet flexible way for defining hook calls for your methods, without trying to be a complete aspect-oriented programming framework implementation.

Installation

Just point to the root directory of the library in your require path and include peeping.rb (Gem packaging soon)

Usage

For defining hooks, use the methods of Peeping::Peep class

include Peeping

class Foo
  def some_instance_method
    puts "Hi there!"
  end
  def self.some_class_method
    puts "Cool!"
  end
end

foo = Foo.new

Peep.hook_class!(Foo, :some_class_method,
        :before => Proc.new{ puts "Before class method" },
        :after  => Proc.new{ puts "After class method" })
Peep.hook_instances!(Foo, :some_instance_method,
        :before => Proc.new{ puts "Before instance method" },
        :after  => Proc.new{ puts "After instance method" })
Peep.hook_object!(foo, :some_instance_method,
        :before => Proc.new{ puts "Before singleton instance method" },
        :after  => Proc.new{ puts "After singleton instance method" })

Foo.some_class_method
Foo.new.some_instance_method
foo.some_instance_method

produces output:

 Before class method
 Cool!
 After class method
 Before instance method
 Hi there!
 After instance method
 Before singleton instance method
 Hi there!
 After singleton instance method

See documentation online and TODO notes for more info

Tests

The library comes with its rspec test suite, located in folder spec

Updates

15 Jul 09 - Finished hook behavior specification. Version 1.1.0 released

TODO

( Several previously marked TODO's are not anymore. Peeping it's not aimed at being a full framework )

  • Refactor classes (lot of ugly things there)
  • Add option to override ot keep instance hooks when defining singleton hooks

About

Lightweight AOP framework for managing method hooks

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages