<commit_before>= aspect4r

Aspect Oriented Programming support for Ruby

== Feature

* extract common logic from multiple methods into before, after, around advices
* before_filter as method filters (work like before_filters in web application)
* advices can be customized (e.g. to take an optional method name argument)
* work as a supporting piece for more complex AOP tasks

== Usage

  class A
    include Aspect4r
    
    around :test do |proxy_method, value|
      a4r_invoke proxy_method, value
    end

    before :test do |value|
      puts "entering test(#{value})"
    end

    before  :test, :do_something
    
    before_filter :test do |value|
      value >= 0
    end

    after :test do |result, value|
      puts "test(#{value}) returned #{result}"
      result
    end

    after :test, :do_something_else
    
    def test value
      ...
    end

    def do_something value
      ...
    end
    
    def do_something_else result, value
      ...
    end

  end
  
== How does it work?

== TODO

See github issues tab http://github.com/gcao/aspect4r/issues

== Note on Patches/Pull Requests
 
* Fork the project.
* Make your feature addition or bug fix.
* Add tests for it. This is important so I don't break it in a
  future version unintentionally.
* Commit, do not mess with rakefile, version, or history.
  (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
* Send me a pull request. Bonus points for topic branches.

== Copyright

Copyright (c) 2010 <NAME>. See LICENSE for details.<commit_msg>Add blog post links to readme<commit_after>= aspect4r

Aspect Oriented Programming support for Ruby

== Feature

* extract common logic from multiple methods into before, after, around advices
* before_filter as method filters (work like before_filters in web application)
* advices can be customized (e.g. to take an optional method name argument)
* work as a supporting piece for more complex AOP tasks

== Usage

API documentation: http://gcao.posterous.com/aspect4r-usage-and-public-api

  class A
    include Aspect4r
    
    around :test do |proxy_method, value|
      a4r_invoke proxy_method, value
    end

    before :test do |value|
      puts "entering test(#{value})"
    end

    before  :test, :do_something
    
    before_filter :test do |value|
      value >= 0
    end

    after :test do |result, value|
      puts "test(#{value}) returned #{result}"
      result
    end

    after :test, :do_something_else
    
    def test value
      ...
    end

    def do_something value
      ...
    end
    
    def do_something_else result, value
      ...
    end

  end
  
== How does it work?

Execution model: http://gcao.posterous.com/aspect4r-documentation-advice-execution-model

== TODO

See github issues http://github.com/gcao/aspect4r/issues

== Note on Patches/Pull Requests
 
* Fork the project.
* Make your feature addition or bug fix.
* Add tests for it. This is important so I don't break it in a
  future version unintentionally.
* Commit, do not mess with rakefile, version, or history.
  (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
* Send me a pull request. Bonus points for topic branches.

== Copyright

Copyright (c) 2010 <NAME>. See LICENSE for details.
{'fraction_non_alphanumeric': 0.07343283582089552, 'fraction_numerical': 0.005970149253731343, 'mean_word_length': 2.873988439306358, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4278139', 'n_tokens_mistral': 1016, 'n_tokens_neox': 977, 'n_words': 421}