Issue #8751 has been updated by tenderlovemaking (Aaron Patterson).


Sorry, I should have added some usecases to this description.  I would like this feature mainly to:

1. Extract source code from the source file so that I can:
  a) Show it on error pages
  b) Use ripper to parse and perform transformations on the methods
  c) Show the extracted source code to understand how a methods works in irb

For example:

>> x = SomeObject.new
>> add_a_monkey_patch
>> x.method(:some_method).source  # => 'def some_method; ...; end'

----------------------------------------
Feature #8751: Add offsets to method#source_location
https://bugs.ruby-lang.org/issues/8751#change-40991

Author: tenderlovemaking (Aaron Patterson)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 


Hello,

I would like to have byte offsets returned on the source_location for methods.  For example:

def foo(&b)
  b.source_location # => [file_name, line_number, start_byte, end_byte]
end

If we had the start and end byte for a method or proc, then we could find the source for methods and procs in each file.  There are some cases (like with heredocuments) where the "end of the method" could be after the `end` keyword.  But I think if we just have offsets for the start of `def` and the end of `end`, I think it would cover 99% of usecases.


-- 
http://bugs.ruby-lang.org/