From dan at lost-habit.com Thu Oct 18 18:57:57 2007 From: dan at lost-habit.com (Daniel Sterling) Date: Thu, 18 Oct 2007 21:57:57 -0400 Subject: [Raleigh-talk] Autodia patches Message-ID: <47180F25.9050900@lost-habit.com> I told some people that I would send my Autodia patches out. They are here: http://dog.lost-habit.com/~eqhmcow/Autodia.patches.warning.very.very.ugly.and.hackish Warning: the code I wrote is awful! Its only saving grace is that it works. The patches apply against the Autodia 2.00 package from Debian, which is available at http://packages.debian.org/testing/x11/autodia . Here is some more information: == Autodia == Autodia is a program that automatically generates horrible looking Dia diagrams of objects (object modeling). == MI Autodia == MI's Autodia is a complete rewrite of the plotting algorithm so that it generates much less horrible Dia diagrams, as well as HTML files detailing the classes. === Features: === * Automatic generation of Dia diagrams that have the potential to be quite large but do properly diagram class relationships with lines that line up right and classes that don't overlap each other. To print, set Dia print options to 25% and landscape. Printing is currently not recommended. If you do print, print to a file first and use GhostView to examine and print. Do not ignore this advice. * Automatic generation of HTML pages that detail objects. Inheritance path, children, dependencies, attributes, and methods are listed. Links to other objects are created where applicable. An index of objects is created. === HOWTO === To create the Dia xml as well as the HTML pages, run autodia.pl with options similar to these:
cd ~/codebase
autodia.pl -d 'lib/perl another/lib/perl' -r
In this example, autodia will recurse through those directories and create a diagram and HTML pages that detail all the classes in the lib/perl and another/lib/perl directories. The diagram itself would be output as autodia.out.xml, and you can use Dia to open this file and look at the Diagram. The HTML pages are all written out in the autohtml directory, so you can point your browser to ~/codebase/autohtml/index.html to get a look at those. === TODO: === * Printing: better compact diagram so it's not so enormous; better arrange classes with no children; don't split an object vertically across pages * Parse Class::MethodMaker attributes * Put POD into the HTML pages * Show inherited methods * Show line numbers * Possibly link to code * Add setting to generate Dias designed to print either portrait or landscape (the code for either is there, but landscape is hard-coded as the current) * Merge upstream/with upstream === Codebase === MI Autodia forked from Autodia version 2.00. The latest Autodia is 2.03, but it has no major improvements that MI Autodia does not already have. MI Autodia does need a good rewrite, but the amount of code that can be merged from upstream is fairly minimal. ==== Divergence ==== At this point, MI Autodia is completely different than any other version. Core components have been rewritten, so at this time it should be considered a highly divergent fork that has not been properly merged with any upstream. Consequently, no part of MI Autodia can be "upgraded" via CPAN or other upstream packages. MI's plotting algorithm is IMO better than upstream, and recent upstream improvements such as better Perl parsing have also been independently coded and tested. There is a possibility that some Perl parsing code could fairly easily be merged, but no work has begun in that area. ==== Detailed Differences to Upstream 2.00 ==== * The plotting algorithm's complete rewrite means that MI Autodia is essentially a completely different program. * The code to generate HTML files detailing objects is hardcoded into the new plotting algorithm. Changed files: * The majority of the rewrite is in Autodia/Diagram.pm. This contains the plotting algorithm itself as well as the code that sets up "nodes" for the plotting algorithm to work with. * Autodia/Diagram/Class.pm has code to sort attributes and methods * Autodia/Diagram/Inheritance.pm has code that properly draws lines between objects to show inheritance * Autodia/Handler/Perl.pm has code that properly reads multi-line use base and @INC directives (upstream recently added similar functionality which I should look at merging) From dan at lost-habit.com Sun Oct 28 08:54:08 2007 From: dan at lost-habit.com (Daniel Sterling) Date: Sun, 28 Oct 2007 11:54:08 -0400 Subject: [Raleigh-talk] Pittsburgh Perl Workshop Message-ID: <4724B0A0.7030904@lost-habit.com> Brad O. and I wrote up some of our notes from PPW. I've put them on dog at http://dog.lost-habit.com/dog/index.cgi?ppw . Check it out for infos on Perl 5.10, SVK, Moose, Catalyst and DBIx::Class.