diff options
author | John Mair <jrmair@gmail.com> | 2010-12-17 02:58:01 +1300 |
---|---|---|
committer | John Mair <jrmair@gmail.com> | 2010-12-17 02:58:01 +1300 |
commit | 2895bb245fd216be96da6e4d6b9e361248934450 (patch) | |
tree | bd0a0480b25a3eb11f1aba0ef9fc2825a4a16d3b /README.markdown | |
download | method_source-2895bb245fd216be96da6e4d6b9e361248934450.tar.gz |
first commit
Diffstat (limited to 'README.markdown')
-rw-r--r-- | README.markdown | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/README.markdown b/README.markdown new file mode 100644 index 0000000..0d73f38 --- /dev/null +++ b/README.markdown @@ -0,0 +1,48 @@ +method_source +============= + +(C) John Mair (banisterfiend) 2010 + +_retrieve the sourcecode for a method_ + +`method_source` is a utility to return a method's sourcecode as a +Ruby string. + +It is written in pure Ruby (no C). + +`method_source` provides the `source` method to the `Method` and +`UnboundMethod` classes. + +* Install the [gem](https://rubygems.org/gems/method_source): `gem install method_source` +* Read the [documentation](http://rdoc.info/github/banister/method_source/master/file/README.markdown) +* See the [source code](http://github.com/banister/method_source) + +example: +--------- + + Set.instance_method(:merge).source.display + # => + def merge(enum) + if enum.instance_of?(self.class) + @hash.update(enum.instance_variable_get(:@hash)) + else + do_with_enum(enum) { |o| add(o) } + end + + self + end + +Limitations: +------------ + +* Only works with Ruby 1.9+ +* Cannot return source for C methods. +* Cannot return source for dynamically defined methods. + +Possible Applications: +---------------------- + +* Combine with [RubyParser](https://github.com/seattlerb/ruby_parser) + for extra fun. + + |