method_source icon indicating copy to clipboard operation
method_source copied to clipboard

Exclude Proc#source Enclosure

Open bryanp opened this issue 12 years ago • 4 comments

Hit a case where I need the Proc source without the enclosure. For example:

p = Proc.new do
  puts 'proc'
end

p.source currently gives me all three lines, but I really want:

puts 'proc'

There doesn't appear to be a way to do this. Possible to add?

bryanp avatar Oct 21 '13 21:10 bryanp

It'll be quite hard. The way we currently do this is find the first line of the method, and then extract one complete expression from ruby. To get it without the begin end, it might be sufficient to drop the last end, and delete everything up to the first do or {; but there'll obviously be edge-cases.

ConradIrwin avatar Oct 21 '13 21:10 ConradIrwin

Eh, that's what I was afraid of. I may work on a solution for easy cases. If so I'll be sure to send a PR along.

bryanp avatar Oct 21 '13 21:10 bryanp

There's a crazy gem called sourcify which uses its own ragel scanner to do this accurately, you might get some mileague with that ;)

banister avatar Oct 21 '13 22:10 banister

Tried sourcify before method_source. It failed anytime a string was defined with double quotes.

Simple is better, I think.

bryanp avatar Oct 22 '13 19:10 bryanp