Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exclude Proc#source Enclosure #26

Open
bryanp opened this issue Oct 21, 2013 · 4 comments
Open

Exclude Proc#source Enclosure #26

bryanp opened this issue Oct 21, 2013 · 4 comments

Comments

@bryanp
Copy link

bryanp commented Oct 21, 2013

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?

@ConradIrwin
Copy link
Collaborator

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.

@bryanp
Copy link
Author

bryanp commented Oct 21, 2013

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.

@banister
Copy link
Owner

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

@bryanp
Copy link
Author

bryanp commented Oct 22, 2013

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

Simple is better, I think.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants