# Print Out Code in Program

**URL:** <https://www.ruby-forum.com/t/print-out-code-in-program/59979>\
**Category:** Ruby\
**Created:** [May 9, 2006, 6:40am UTC](https://www.ruby-forum.com/t/print-out-code-in-program/59979 "2006-05-09T06:40:15Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![patrick](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b2d939/32.png) [@patrick](https://www.ruby-forum.com/u/patrick)\
**Post date:** [May 9, 2006, 6:40am UTC](https://www.ruby-forum.com/t/print-out-code-in-program/59979/1 "2006-05-09T06:40:15Z")

</div>

class Ab  
def code  
a = 5  
b = 2  
end  
end

Is there a way to store the actual code of a class or definition as a  
string without manually doing it? Such as if you were doing a tutorial  
on how something works. So basically I could do print aB and I get “def  
code a = 5 b = 2 end”

---

<div class="post-metadata">

**Author:** ![patrick](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b2d939/32.png) [@patrick](https://www.ruby-forum.com/u/patrick)\
**Post date:** [May 9, 2006, 6:53am UTC](https://www.ruby-forum.com/t/print-out-code-in-program/59979/2 "2006-05-09T06:53:53Z")

</div>

On May 9, 2006, at 12:40 AM, Patrick wrote:

> “def  
> code a = 5 b = 2 end”
> 
> –  
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).

Sounds like a job for xmp[1]  
[1] [http://raa.ruby-lang.org/project/xmp/](http://raa.ruby-lang.org/project/xmp/)

---

<div class="post-metadata">

**Author:** ![patrick](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b2d939/32.png) [@patrick](https://www.ruby-forum.com/u/patrick)\
**Post date:** [May 9, 2006, 9:14am UTC](https://www.ruby-forum.com/t/print-out-code-in-program/59979/3 "2006-05-09T09:14:10Z")

</div>

@ab = \<\<-CODE  
class Ab  
def code  
a = 5  
b = 2  
end  
end  
CODE

eval(@ab)  
def print\_class(klass)  
print instance\_variable\_get “@#{klass.to\_s.downcase}”  
end

print\_class(Ab)

---

<div class="post-metadata">

**Author:** ![patrick](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b2d939/32.png) [@patrick](https://www.ruby-forum.com/u/patrick)\
**Post date:** [May 9, 2006, 7:33am UTC](https://www.ruby-forum.com/t/print-out-code-in-program/59979/4 "2006-05-09T07:33:32Z")

</div>

Thanks, the code works, but is there still a way to print out everything  
in a class by just referencing the class name? To get everything to be  
displayed using this code it has to basicaly start before the class and  
end afterward.

---

<div class="post-metadata">

**Author:** ![patrick](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b2d939/32.png) [@patrick](https://www.ruby-forum.com/u/patrick)\
**Post date:** [May 9, 2006, 11:58am UTC](https://www.ruby-forum.com/t/print-out-code-in-program/59979/5 "2006-05-09T11:58:26Z")

</div>

I was asking something similar about blocks in the near past. After a  
fiery discussion I was advised tou use a ParseTree trick to go back to  
the original code and read it…

---

<div class="post-metadata">

**Author:** ![patrick](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b2d939/32.png) [@patrick](https://www.ruby-forum.com/u/patrick)\
**Post date:** [May 9, 2006, 3:43pm UTC](https://www.ruby-forum.com/t/print-out-code-in-program/59979/6 "2006-05-09T15:43:34Z")

</div>

Patrick wrote:

> code a = 5 b = 2 end"

SCRIPT\_LINES\_\_, maybe?  
[http://www.rubyquiz.com/quiz38.html](http://www.rubyquiz.com/quiz38.html)
