http://www.zenspider.com/ZSS/Products/ParseTree/
** DESCRIPTION:
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]]]]]
** FEATURES/PROBLEMS:
+ Uses RubyInline, so it just drops in.
+ Includes SexpProcessor and CompositeSexpProcessor.
+ Allows you to write very clean filters.
+ Includes show.rb, which lets you quickly snoop code.
+ Includes abc.rb, which lets you get abc metrics on code.
+ abc metrics = numbers of assignments, branches, and calls.
+ whitespace independent metric for method complexity.
+ Only works on methods in classes/modules, not arbitrary code.
+ Does not work on the core classes, as they are not ruby (yet).
http://www.zenspider.com/ZSS/Products/ParseTree/
Changes:
+ 2 minor enhancements:
+ Improved debugging capability when $DEBUG.
+ Allowed for selective debugging output by node type.
+ 3 bug fixes:
+ Minor fixes to Makefile and parse_tree_show.
+ Improved error messages in parse_tree when newlines are included.
+ Improved method coverage for parse_tree.
http://www.zenspider.com/ZSS/Products/ParseTree/
--
ryand...@zenspider.com - Seattle.rb - http://www.zenspider.com/
seattle.rb
http://blog.zenspider.com/ - http://rubyforge.org/projects/ruby2c
68d67
<
268c267
< @real_caller = real_caller.split(/:/).first
---
> @real_caller = real_caller.split(/:/)[1]
377,378c376
< cmd = "#{Config::CONFIG['LDSHARED']} #{flags}
#{Config::CONFIG['CFLAGS']} -I #{hdrdir} -o #{so_name} #{src_name}
#{libs}"
<
---
> cmd = "#{Config::CONFIG['LDSHARED']}
#{Config::CONFIG['CFLAGS']} -I #{hdrdir} -o #{so_name} #{src_name}
#{libs}"
And to parse_tree_deps.rb, for some reason
41c41
< deps.keys.sort.each do |dep_to|
---
> deps.keys.each do |dep_to|
I ran the VCVARS32.BAT script to set up MSVC, added \RUBY\LIB to the
LIB env variable, and set INLINEDIR=tmp. There are more changes needed
to get the test suite to pass, but this seems to suffice for the
examples.
> For the record, here are the changes I made to get inline.rb to run on
> Win32 with MSVC...
[snip]
> I ran the VCVARS32.BAT script to set up MSVC, added \RUBY\LIB to the
> LIB env variable, and set INLINEDIR=tmp. There are more changes needed
> to get the test suite to pass, but this seems to suffice for the
> examples.
Could you submit your patch to the project page?
http://rubyforge.org/projects/rubyinline/
Patches tracker:
http://rubyforge.org/tracker/?atid=1776&group_id=440&func=browse
--
Eric Hodel - drb...@segment7.net - http://segment7.net
FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04