agentzh / uml-class-simple-pm

CPAN module UML::Class::Simple: Render simple UML class diagrams, by loading the code
6 stars 6 forks source link

NAME

UML::Class::Simple - Render simple UML class diagrams, by loading the code

Table of Contents

VERSION

This document describes UML::Class::Simple 0.22 released by 18 December 2016.

SYNOPSIS

use UML::Class::Simple;

# produce a class diagram for Alias's PPI
# which has already installed to your perl:

@classes = classes_from_runtime("PPI", qr/^PPI::/);
$painter = UML::Class::Simple->new(\@classes);
$painter->as_png('ppi.png');

# produce a class diagram for your CPAN module on the disk

@classes = classes_from_files(['lib/Foo.pm', 'lib/Foo/Bar.pm']);
$painter = UML::Class::Simple->new(\@classes);

# we can explicitly specify the image size
$painter->size(5, 3.6); # in inches

# ...and change the default title background color:
$painter->node_color('#ffffff'); # defaults to '#f1e1f4'

# only show public methods and properties
$painter->public_only(1);

# hide all methods from parent classes
$painter->inherited_methods(0);

$painter->as_png('my_module.png');

DESCRIPTION

UML::Class::Simple is a Perl CPAN module that generates UML class diagrams (PNG format, GIF format, XMI format, or dot source) automatically from Perl 5 source or Perl 5 runtime.

Perl developers can use this module to obtain pretty class diagrams for arbitrary existing Perl class libraries (including modern perl OO modules based on Moose.pm), by only a single command. Companies can also use the resulting pictures to visualize the project hierarchy and embed them into their documentation.

The users no longer need to drag a mouse on the screen so as to draw figures themselves or provide any specs other than the source code of their own libraries that they want to depict. This module does all the jobs for them! :)

Methods created on-the-fly (in BEGIN or some such) can be inspected. Accessors created by modules Class::Accessor, Class::Accessor::Fast, and Class::Accessor::Grouped are recognized as "properties" rather than "methods". Intelligent distingishing between Perl methods and properties other than that is not provided.

You know, I was really impressed by the outputs of UML::Sequence, so I decided to find something to (automatically) get pretty class diagrams too. The images from Autodia's Graphviz backend didn't quite fit my needs when I was making some slides for my presentations.

I think most of the time you just want to use the command-line utility umlclass.pl offered by this module (just like me). See the documentation of umlclass.pl for details.

Back to TOC

SAMPLE OUTPUTS

Back to TOC

SUBROUTINES

All these subroutines are exported by default.

Back to TOC

METHODS

Back to TOC

PROPERTIES

Back to TOC

INSTALLATION

Please download and intall a recent Graphviz release from its home:

http://www.graphviz.org/

UML::Class::Simple requires the HTML label feature which is only available on versions of Graphviz that are newer than mid-November 2003. In particular, it is not part of release 1.10.

Add Graphviz's bin/ path to your PATH environment. This module needs its dot utility.

Grab this module from the CPAN mirror near you and run the following commands:

perl Makefile.PL
make
make test
make install

For windows users, use nmake instead of make.

Note that it's recommended to use the cpan utility to install CPAN modules.

Back to TOC

LIMITATIONS

Back to TOC

TODO

Please send me your wish list by emails or preferably via the CPAN RT site. I'll add them here or even implement them promptly if I'm also interested in your (crazy) ideas. ;-)

Back to TOC

BUGS

There must be some serious bugs lurking somewhere; if you found one, please report it to http://rt.cpan.org or contact the author directly.

Back to TOC

ACKNOWLEDGEMENT

I must thank Adam Kennedy (Alias) for writing the excellent PPI and Class::Inspector modules. umlclass.pl uses the former to extract package names from user's .pm files or the latter to retrieve the function list of a specific package.

I'm also grateful to Christopher Malon since he has (unintentionally) motivated me to turn the original hack into this CPAN module. ;-)

Back to TOC

SOURCE CONTROL

You can always grab the latest version from the following GitHub repository:

https://github.com/agentzh/uml-class-simple-pm

It has anonymous access to all.

If you have the tuits to help out with this module, please let me know. I have a dream to keep sending out commit bits like Audrey Tang. ;-)

Back to TOC

AUTHORS

Yichun "agentzh" Zhang (章亦春) <agentzh@gmail.com>, OpenResty Inc.

Maxim Zenin <max@foggy.ru>.

Back to TOC

COPYRIGHT

Copyright (c) 2006-2016 by Yichun Zhang (章亦春), OpenResty Inc. Copyright (c) 2007-2014 by Maxim Zenin.

This library is free software; you can redistribute it and/or modify it under the same terms as perl itself, either Artistic and GPL.

Back to TOC

SEE ALSO

umlclass.pl, Autodia, UML::Sequence, PPI, Class::Inspector, XML::LibXML.

Back to TOC