# ParseTree 2.1.1 Released

**URL:** <https://www.ruby-forum.com/t/parsetree-2-1-1-released/123982>\
**Category:** Ruby\
**Created:** [December 23, 2007, 2:41am UTC](https://www.ruby-forum.com/t/parsetree-2-1-1-released/123982 "2007-12-23T02:41:49Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![aguynamedryan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/43a26b/32.png) [@aguynamedryan](https://www.ruby-forum.com/u/aguynamedryan)\
**Post date:** [December 23, 2007, 2:41am UTC](https://www.ruby-forum.com/t/parsetree-2-1-1-released/123982/1 "2007-12-23T02:41:49Z")

</div>

(oops)

ParseTree version 2.1.1 has been released!

- [http://www.zenspider.com/ZSS/Products/ParseTree/](http://www.zenspider.com/ZSS/Products/ParseTree/)

ParseTree is a C extension (using RubyInline) that extracts the parse  
tree for an entire class or a specific method and returns it as a  
s-expression (aka sexp) using ruby’s arrays, strings, symbols, and  
integers.

As an example:

def conditional1(arg1)  
if arg1 == 0 then  
return 1  
end  
return 0  
end

becomes:

[:defn,  
:conditional1,  
[:scope,  
[:block,  
[:args, :arg1],  
[:if,  
[:call, [:lvar, :arg1], :==, [:array, [:lit, 0]]],  
[:return, [:lit, 1]],  
nil],  
[:return, [:lit, 0]]]]]

- Uses RubyInline, so it just drops in.
- Includes SexpProcessor and CompositeSexpProcessor.
  - Allows you to write very clean filters.

- Includes UnifiedRuby, allowing you to automatically rewrite ruby  
quirks.
- ParseTree#parse\_tree\_for\_string lets you parse arbitrary strings of  
ruby.
- Includes parse\_tree\_show, which lets you quickly snoop code.
  - echo “1+1” | parse\_tree\_show -f for quick snippet output.

- Includes parse\_tree\_abc, which lets you get abc metrics on code.
  - abc metrics = numbers of assignments, branches, and calls.
  - whitespace independent metric for method complexity.

- Includes parse\_tree\_deps, which shows you basic class level  
dependencies.
- Does not work on the core classes, as they are not ruby (yet).

Changes:

### 2.1.1 / 2007-12-22

- 1 bug fix:

- [http://www.zenspider.com/ZSS/Products/ParseTree/](http://www.zenspider.com/ZSS/Products/ParseTree/)

---

<div class="post-metadata">

**Author:** ![aguynamedryan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/43a26b/32.png) [@aguynamedryan](https://www.ruby-forum.com/u/aguynamedryan)\
**Post date:** [July 20, 2008, 6:53am UTC](https://www.ruby-forum.com/t/parsetree-2-1-1-released/123982/2 "2008-07-20T06:53:01Z")

</div>

Ryan D. wrote:

> (oops)
> 
> ParseTree version 2.1.1 has been released!  
> …
> 
> - Includes UnifiedRuby, allowing you to automatically rewrite ruby  
> quirks.

Where can I learn more about the ruby quirks this is designed to  
overcome? What quirks? What’s going on?  
Thanks!  
-R

---

<div class="post-metadata">

**Author:** ![aguynamedryan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/43a26b/32.png) [@aguynamedryan](https://www.ruby-forum.com/u/aguynamedryan)\
**Post date:** [July 25, 2008, 12:23am UTC](https://www.ruby-forum.com/t/parsetree-2-1-1-released/123982/3 "2008-07-25T00:23:50Z")

</div>

On Jul 19, 2008, at 21:47 , Roger P. wrote:

> Ryan D. wrote:
> 
> > (oops)
> > 
> > ParseTree version 2.1.1 has been released!  
> > …
> > 
> > - Includes UnifiedRuby, allowing you to automatically rewrite ruby  
> > quirks.
> 
> Where can I learn more about the ruby quirks this is designed to  
> overcome? What quirks? What’s going on?

read the code I guess. Last released version is only 187 lines. Next  
version is currently 201 and will probably get a bit bigger, but not  
by much.
