The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Changes 03
MANIFEST 11
MANIFEST.SKIP 12
META.yml 11
MYMETA.json 11
MYMETA.yml 11
README 3380
README.md 0415
lib/UML/Class/Simple.pm 1010
9 files changed (This is a version diff) 353434
@@ -1,5 +1,8 @@
 Change Log for UML::Class::Simple
 
+=version 0.20 (December 7, 2014)
+* doc: fixed broken links to the sample images.
+
 =version 0.19 (January 26, 2013)
 * feature: umlclass.pl: added option --moose-roles to display relationships
   between Moose::Role packages and their consumers with different
@@ -32,7 +32,7 @@ samples/ppi_small.png
 samples/fast.png
 Makefile.PL
 MANIFEST.SKIP
-README
+README.md
 Changes
 MANIFEST
 META.yml
@@ -19,4 +19,5 @@ fast.*\.yml$
 bin/.*\.dat
 ^t/cover-
 \.tar\.gz$
-preload\.yml
+^preload\.yml$
+^moouseish\.yml$
@@ -34,4 +34,4 @@ requires:
   perl: 5.6.1
 resources:
   license: http://dev.perl.org/licenses/
-version: 0.19
+version: 0.20
@@ -54,5 +54,5 @@
          "http://dev.perl.org/licenses/"
       ]
    },
-   "version" : "0.19"
+   "version" : "0.20"
 }
@@ -31,4 +31,4 @@ requires:
   XML::LibXML: 0
   YAML::Syck: 0
   perl: 5.006001
-version: 0.19
+version: 0.20
@@ -1,338 +0,0 @@
-NAME
-    UML::Class::Simple - Render simple UML class diagrams, by loading the
-    code
-
-VERSION
-    This document describes "UML::Class::Simple" 0.19 released by 26 January
-    2013.
-
-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.
-
-SAMPLE OUTPUTS
-    PPI <http://perlcabal.org/agent/images/ppi_small.png>
-
-        (See also samples/ppi_small.png in the distribution.)
-
-    Moose
-        <http://perlcabal.org/agent/images/moose_small.png>
-
-        (See also samples/moose_small.png in the distribution.)
-
-    FAST
-        <http://perlcabal.org/agent/images/fast.png>
-
-        (See also samples/fast.png in the distribution.)
-
-SUBROUTINES
-    classes_from_runtime($module_to_load, $regex?)
-    classes_from_runtime(\@modules_to_load, $regex?)
-        Returns a list of class (or package) names by inspecting the perl
-        runtime environment. $module_to_load is the *main* module name to
-        load while $regex is a perl regex used to filter out interesting
-        package names.
-
-        The second argument can be omitted.
-
-    classes_from_files($pmfile, $regex?)
-    classes_from_files(\@pmfiles, $regex?)
-        Returns a list of class (or package) names by scanning through the
-        perl source files given in the first argument. $regex is used to
-        filter out interesting package names.
-
-        The second argument can be omitted.
-
-    exclude_by_paths
-        Excludes package names via specifying one or more paths where the
-        corresponding modules were installed into. For example:
-
-            @classes = exclude_by_paths(\@classes, 'C:/perl/lib');
-
-            @classes = exclude_by_paths(\@classes, '/home/foo', '/System/Library');
-
-    grep_by_paths
-        Filters out package names via specifying one or more paths where the
-        corresponding modules were installed into. For instance:
-
-            @classes = grep_by_paths(\@classes, '/home/malon', './blib/lib');
-
-    All these subroutines are exported by default.
-
-METHODS
-    "$obj->new( [@class_names] )"
-        Create a new "UML::Class::Simple" instance with the specified class
-        name list. This list can either be constructed manually or by the
-        utility functions "classes_from_runtime" and "classes_from_files".
-
-    "$obj->as_png($filename?)"
-        Generate PNG image file when $filename is given. It returns binary
-        data when $filename is not given.
-
-    "$obj->as_gif($filename?)"
-        Similar to "as_png", bug generate a GIF-format image. Note that, for
-        many graphviz installations, "gif" support is disabled by default.
-        So you'll probably see the following error message:
-
-            Format: "gif" not recognized. Use one of: bmp canon cmap cmapx cmapx_np
-                dia dot fig gtk hpgl ico imap imap_np ismap jpe jpeg jpg mif mp
-                pcl pdf pic plain plain-ext png ps ps2 svg svgz tif tiff vml
-                vmlz vtx xdot xlib
-
-    "$obj->as_dom()"
-        Return the internal DOM tree used to generate dot and png. The
-        tree's structure looks like this:
-
-          {
-            'classes' => [
-                           {
-                             'subclasses' => [],
-                             'methods' => [],
-                             'name' => 'PPI::Structure::List',
-                             'properties' => []
-                           },
-                           {
-                             'subclasses' => [
-                                               'PPI::Structure::Block',
-                                               'PPI::Structure::Condition',
-                                               'PPI::Structure::Constructor',
-                                               'PPI::Structure::ForLoop',
-                                               'PPI::Structure::Unknown'
-                                             ],
-                             'methods' => [
-                                            '_INSTANCE',
-                                            '_set_finish',
-                                            'braces',
-                                            'content',
-                                            'new',
-                                            'refaddr',
-                                            'start',
-                                            'tokens'
-                                          ],
-                             'name' => 'PPI::Structure',
-                             'properties' => []
-                           },
-                           ...
-                        ]
-          }
-
-        You can adjust the data structure and feed it back to $obj via the
-        "set_dom" method.
-
-    "$obj->set_dom($dom)"
-        Set the internal DOM structure to $obj. This will be used to
-        generate the dot source and thus the PNG/GIF images.
-
-    "$obj->as_dot()"
-        Return the Graphviz dot source code generated by $obj.
-
-    "$obj->set_dot($dot)"
-        Set the dot source code used by $obj.
-
-    "$obj->as_xmi($filename)"
-        Generate XMI model file when $filename is given. It returns
-        XML::LibXML::Document object when $filename is not given.
-
-    "can_run($path)"
-        Copied from IPC::Cmd to test if $path is a runnable program. This
-        code is copyright by IPC::Cmd's author.
-
-    "$prog = $obj->dot_prog()"
-    "$obj->dot_prog($prog)"
-        Get or set the dot program path.
-
-PROPERTIES
-    "$obj->size($width, $height)"
-    "($width, $height) = $obj->size"
-        Set/get the size of the output images, in inches.
-
-    "$obj->public_only($bool)"
-    "$bool = $obj->public_only"
-        When the "public_only" property is set to true, only public methods
-        or properties are shown. It defaults to false.
-
-    "$obj->inherited_methods($bool)"
-    "$bool = $obj->inherited_methods"
-        When the "inherited_methods" property is set to false, then all
-        methods, inherited from parent classes, are not shown. It defaults
-        to true.
-
-    "$obj->node_color($color)"
-    "$color = $obj->node_color"
-        Set/get the background color for the class nodes. It defaults to
-        '#f1e1f4'.
-
-    "$obj->moose_roles($bool)"
-        When this property is set to true values, then relationships between
-        Moose::Role packages and their consumers will be drawn in the
-        output. Default to false.
-
-    "$obj->display_methods($bool)"
-        When this property is set to false, then class methods will not be
-        shown in the output. Default to true.
-
-    "$obj->display_inheritance($bool)"
-        When this property is set to false, then the class inheritance
-        relationship will not be drawn in the output. Default to false.
-
-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.
-
-LIMITATIONS
-    *   It's pretty hard to distinguish perl methods from properties
-        (actually they're both implemented by subs in perl). Currently only
-        accessors created by Class::Accessor, Class::Accessor::Fast, and
-        Class::Accessor::Grouped are provided. (Thanks to the patches from
-        Adam Lounds and Dave Howorth!) If you have any other good idea on
-        this issue, please drop me a line ;)
-
-    *   Only the inheritance relationships are shown in the images. I
-        believe other subtle relations may mess up the Graphviz layouter.
-        Hence the "::Simple" suffix in this module name.
-
-    *   Unlike Autodia, at this moment only Graphviz and XMI backends are
-        provided.
-
-    *   There's no way to recognize *real* perl classes automatically. After
-        all, Perl 5's classes are implemented by packages. I think Perl 6
-        will make my life much easier.
-
-    *   To prevent potential naming confusion. I'm using Perl's "::"
-        namespace separator in the class diagrams instead of dot (".")
-        chosen by the UML standard. One can argue that following UML
-        standards is more important since people in the same team may use
-        different programming languages, but I think it's not the case for
-        the majority (including myself) ;-)
-
-TODO
-    *   Add more unit tests.
-
-    *   Add support for more image formats, such as "as_ps", "as_jpg", and
-        etc.
-
-    *   Plot class relationships other than inheritance on the user's
-        request.
-
-    *   Provide backends other than Graphviz.
-
-    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. ;-)
-
-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.
-
-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. ;-)
-
-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. ;-)
-
-AUTHORS
-    Yichun "agentzh" Zhang (章亦春) "<agentzh@gmail.com>", CloudFlare Inc.
-
-    Maxim Zenin "<max@foggy.ru>".
-
-COPYRIGHT
-    Copyright (c) 2006-2013 by Yichun Zhang (章亦春), CloudFlare Inc. Copyright
-    (c) 2007-2013 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.
-
-SEE ALSO
-    umlclass.pl, Autodia, UML::Sequence, PPI, Class::Inspector, XML::LibXML.
-
@@ -0,0 +1,415 @@
+# NAME
+
+UML::Class::Simple - Render simple UML class diagrams, by loading the code
+
+Table of Contents
+=================
+
+* [NAME](#name)
+* [VERSION](#version)
+* [SYNOPSIS](#synopsis)
+* [DESCRIPTION](#description)
+* [SAMPLE OUTPUTS](#sample-outputs)
+* [SUBROUTINES](#subroutines)
+* [METHODS](#methods)
+* [PROPERTIES](#properties)
+* [INSTALLATION](#installation)
+* [LIMITATIONS](#limitations)
+* [TODO](#todo)
+* [BUGS](#bugs)
+* [ACKNOWLEDGEMENT](#acknowledgement)
+* [SOURCE CONTROL](#source-control)
+* [AUTHORS](#authors)
+* [COPYRIGHT](#copyright)
+* [SEE ALSO](#see-also)
+
+# VERSION
+
+This document describes `UML::Class::Simple` 0.20 released by 7 December 2014.
+
+# 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](https://metacpan.org/pod/Class::Accessor), [Class::Accessor::Fast](https://metacpan.org/pod/Class::Accessor::Fast), and
+[Class::Accessor::Grouped](https://metacpan.org/pod/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](https://metacpan.org/pod/UML::Sequence), so I
+decided to find something to (automatically) get pretty class diagrams
+too. The images from [Autodia](https://metacpan.org/pod/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](https://metacpan.org/pod/umlclass.pl) offered by this module (just like me). See the
+documentation of [umlclass.pl](https://metacpan.org/pod/umlclass.pl) for details.
+
+[Back to TOC](#table-of-contents)
+
+# SAMPLE OUTPUTS
+
+- PPI
+
+    [https://raw.githubusercontent.com/agentzh/uml-class-simple-pm/master/samples/ppi\_small.png](https://raw.githubusercontent.com/agentzh/uml-class-simple-pm/master/samples/ppi_small.png)
+
+    <div>
+            <img src="https://raw.githubusercontent.com/agentzh/uml-class-simple-pm/master/samples/ppi_small.png">
+    </div>
+
+    (See also `samples/ppi_small.png` in the distribution.)
+
+- Moose
+
+    [https://raw.githubusercontent.com/agentzh/uml-class-simple-pm/master/samples/moose\_small.png](https://raw.githubusercontent.com/agentzh/uml-class-simple-pm/master/samples/moose_small.png)
+
+    <div>
+            <img src="https://raw.githubusercontent.com/agentzh/uml-class-simple-pm/master/samples/moose_small.png">
+    </div>
+
+    (See also `samples/moose_small.png` in the distribution.)
+
+- FAST
+
+    [https://raw.githubusercontent.com/agentzh/uml-class-simple-pm/master/samples/fast.png](https://raw.githubusercontent.com/agentzh/uml-class-simple-pm/master/samples/fast.png)
+
+    <div>
+            <img src="https://raw.githubusercontent.com/agentzh/uml-class-simple-pm/master/samples/fast.png">
+    </div>
+
+    (See also `samples/fast.png` in the distribution.)
+
+[Back to TOC](#table-of-contents)
+
+# SUBROUTINES
+
+- classes\_from\_runtime($module\_to\_load, $regex?)
+- classes\_from\_runtime(\\@modules\_to\_load, $regex?)
+
+    Returns a list of class (or package) names by inspecting the perl runtime environment.
+    `$module_to_load` is the _main_ module name to load while `$regex` is
+    a perl regex used to filter out interesting package names.
+
+    The second argument can be omitted.
+
+- classes\_from\_files($pmfile, $regex?)
+- classes\_from\_files(\\@pmfiles, $regex?)
+
+    Returns a list of class (or package) names by scanning through the perl source files
+    given in the first argument. `$regex` is used to filter out interesting package names.
+
+    The second argument can be omitted.
+
+- exclude\_by\_paths
+
+    Excludes package names via specifying one or more paths where the corresponding
+    modules were installed into. For example:
+
+        @classes = exclude_by_paths(\@classes, 'C:/perl/lib');
+
+        @classes = exclude_by_paths(\@classes, '/home/foo', '/System/Library');
+
+- grep\_by\_paths
+
+    Filters out package names via specifying one or more paths where the corresponding
+    modules were installed into. For instance:
+
+        @classes = grep_by_paths(\@classes, '/home/malon', './blib/lib');
+
+All these subroutines are exported by default.
+
+[Back to TOC](#table-of-contents)
+
+# METHODS
+
+- `$obj->new( [@class_names] )`
+
+    Create a new `UML::Class::Simple` instance with the specified class name list.
+    This list can either be constructed manually or by the utility functions
+    `classes_from_runtime` and `classes_from_files`.
+
+- `$obj->as_png($filename?)`
+
+    Generate PNG image file when `$filename` is given. It returns
+    binary data when `$filename` is not given.
+
+- `$obj->as_gif($filename?)`
+
+    Similar to `as_png`, bug generate a GIF-format image. Note that, for many graphviz installations, `gif` support is disabled by default. So you'll probably see the following error message:
+
+        Format: "gif" not recognized. Use one of: bmp canon cmap cmapx cmapx_np
+            dia dot fig gtk hpgl ico imap imap_np ismap jpe jpeg jpg mif mp
+            pcl pdf pic plain plain-ext png ps ps2 svg svgz tif tiff vml
+            vmlz vtx xdot xlib
+
+- `$obj->as_dom()`
+
+    Return the internal DOM tree used to generate dot and png. The tree's structure
+    looks like this:
+
+        {
+          'classes' => [
+                         {
+                           'subclasses' => [],
+                           'methods' => [],
+                           'name' => 'PPI::Structure::List',
+                           'properties' => []
+                         },
+                         {
+                           'subclasses' => [
+                                             'PPI::Structure::Block',
+                                             'PPI::Structure::Condition',
+                                             'PPI::Structure::Constructor',
+                                             'PPI::Structure::ForLoop',
+                                             'PPI::Structure::Unknown'
+                                           ],
+                           'methods' => [
+                                          '_INSTANCE',
+                                          '_set_finish',
+                                          'braces',
+                                          'content',
+                                          'new',
+                                          'refaddr',
+                                          'start',
+                                          'tokens'
+                                        ],
+                           'name' => 'PPI::Structure',
+                           'properties' => []
+                         },
+                         ...
+                      ]
+        }
+
+    You can adjust the data structure and feed it back to `$obj` via
+    the `set_dom` method.
+
+- `$obj->set_dom($dom)`
+
+    Set the internal DOM structure to `$obj`. This will be used to
+    generate the dot source and thus the PNG/GIF images.
+
+- `$obj->as_dot()`
+
+    Return the Graphviz dot source code generated by `$obj`.
+
+- `$obj->set_dot($dot)`
+
+    Set the dot source code used by `$obj`.
+
+- `$obj->as_xmi($filename)`
+
+    Generate XMI model file when `$filename` is given. It returns
+    XML::LibXML::Document object when `$filename` is not given.
+
+- `can_run($path)`
+
+    Copied from [IPC::Cmd](https://metacpan.org/pod/IPC::Cmd) to test if $path is a runnable program. This code
+    is copyright by IPC::Cmd's author.
+
+- `$prog = $obj->dot_prog()`
+- `$obj->dot_prog($prog)`
+
+    Get or set the dot program path.
+
+[Back to TOC](#table-of-contents)
+
+# PROPERTIES
+
+- `$obj->size($width, $height)`
+- `($width, $height) = $obj->size`
+
+    Set/get the size of the output images, in inches.
+
+- `$obj->public_only($bool)`
+- `$bool = $obj->public_only`
+
+    When the `public_only` property is set to true, only public methods or properties
+    are shown. It defaults to false.
+
+- `$obj->inherited_methods($bool)`
+- `$bool = $obj->inherited_methods`
+
+    When the `inherited_methods` property is set to false, then all methods,
+    inherited from parent classes, are not shown.
+    It defaults to true.
+
+- `$obj->node_color($color)`
+- `$color = $obj->node_color`
+
+    Set/get the background color for the class nodes. It defaults to `'#f1e1f4'`.
+
+- `$obj->moose_roles($bool)`
+
+    When this property is set to true values, then relationships between Moose::Role packages and their consumers
+    will be drawn in the output. Default to false.
+
+- `$obj->display_methods($bool)`
+
+    When this property is set to false, then class methods will not be shown in the output. Default to true.
+
+- `$obj->display_inheritance($bool)`
+
+    When this property is set to false, then the class inheritance relationship
+    will not be drawn in the output. Default to false.
+
+[Back to TOC](#table-of-contents)
+
+# INSTALLATION
+
+Please download and intall a recent Graphviz release from its home:
+
+[http://www.graphviz.org/](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](#table-of-contents)
+
+# LIMITATIONS
+
+- It's pretty hard to distinguish perl methods from properties (actually they're both
+implemented by subs in perl). Currently only accessors created by [Class::Accessor](https://metacpan.org/pod/Class::Accessor), [Class::Accessor::Fast](https://metacpan.org/pod/Class::Accessor::Fast), and [Class::Accessor::Grouped](https://metacpan.org/pod/Class::Accessor::Grouped) are provided. (Thanks to the patches from Adam Lounds and Dave Howorth!) If you have any other good idea on this issue, please drop me a line ;)
+- Only the inheritance relationships are shown in the images. I believe
+other subtle
+relations may mess up the Graphviz layouter. Hence the "::Simple" suffix in
+this module name.
+- Unlike [Autodia](https://metacpan.org/pod/Autodia), at this moment only Graphviz and XMI backends are provided.
+- There's no way to recognize _real_ perl classes automatically. After all, Perl 5's
+classes are implemented by packages. I think Perl 6 will make my life much easier.
+- To prevent potential naming confusion. I'm using Perl's `::` namespace
+separator
+in the class diagrams instead of dot (`.`) chosen by the UML standard.
+One can argue that following UML standards is more important since people
+in the same team may
+use different programming languages, but I think it's not the case for
+the majority (including myself) ;-)
+
+[Back to TOC](#table-of-contents)
+
+# TODO
+
+- Add more unit tests.
+- Add support for more image formats, such as `as_ps`, `as_jpg`, and etc.
+- Plot class relationships other than inheritance on the user's request.
+- Provide backends other than Graphviz.
+
+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](#table-of-contents)
+
+# BUGS
+
+There must be some serious bugs lurking somewhere;
+if you found one, please report
+it to [http://rt.cpan.org](http://rt.cpan.org) or contact the author directly.
+
+[Back to TOC](#table-of-contents)
+
+# ACKNOWLEDGEMENT
+
+I must thank Adam Kennedy (Alias) for writing the excellent [PPI](https://metacpan.org/pod/PPI) and
+[Class::Inspector](https://metacpan.org/pod/Class::Inspector) modules. [umlclass.pl](https://metacpan.org/pod/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](#table-of-contents)
+
+# SOURCE CONTROL
+
+You can always grab the latest version from the following GitHub
+repository:
+
+[https://github.com/agentzh/uml-class-simple-pm](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](#table-of-contents)
+
+# AUTHORS
+
+Yichun "agentzh" Zhang (章亦春) `<agentzh@gmail.com>`, CloudFlare Inc.
+
+Maxim Zenin `<max@foggy.ru>`.
+
+[Back to TOC](#table-of-contents)
+
+# COPYRIGHT
+
+Copyright (c) 2006-2014 by Yichun Zhang (章亦春), CloudFlare 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](#table-of-contents)
+
+# SEE ALSO
+
+[umlclass.pl](https://metacpan.org/pod/umlclass.pl), [Autodia](https://metacpan.org/pod/Autodia), [UML::Sequence](https://metacpan.org/pod/UML::Sequence), [PPI](https://metacpan.org/pod/PPI), [Class::Inspector](https://metacpan.org/pod/Class::Inspector), [XML::LibXML](https://metacpan.org/pod/XML::LibXML).
+
+[Back to TOC](#table-of-contents)
+
@@ -6,7 +6,7 @@ use strict;
 use warnings;
 no warnings 'redefine';
 
-our $VERSION = '0.19';
+our $VERSION = '0.20';
 
 #use Smart::Comments;
 use Carp qw(carp confess);
@@ -768,7 +768,7 @@ UML::Class::Simple - Render simple UML class diagrams, by loading the code
 
 =head1 VERSION
 
-This document describes C<UML::Class::Simple> 0.19 released by 26 January 2013.
+This document describes C<UML::Class::Simple> 0.20 released by 7 December 2014.
 
 =head1 SYNOPSIS
 
@@ -835,11 +835,11 @@ documentation of L<umlclass.pl> for details.
 
 =item PPI
 
-L<http://perlcabal.org/agent/images/ppi_small.png>
+L<https://raw.githubusercontent.com/agentzh/uml-class-simple-pm/master/samples/ppi_small.png>
 
 =begin html
 
-<img src="http://perlcabal.org/agent/images/ppi_small.png">
+<img src="https://raw.githubusercontent.com/agentzh/uml-class-simple-pm/master/samples/ppi_small.png">
 
 =end html
 
@@ -847,11 +847,11 @@ L<http://perlcabal.org/agent/images/ppi_small.png>
 
 =item Moose
 
-L<http://perlcabal.org/agent/images/moose_small.png>
+L<https://raw.githubusercontent.com/agentzh/uml-class-simple-pm/master/samples/moose_small.png>
 
 =begin html
 
-<img src="http://perlcabal.org/agent/images/moose_small.png">
+<img src="https://raw.githubusercontent.com/agentzh/uml-class-simple-pm/master/samples/moose_small.png">
 
 =end html
 
@@ -859,11 +859,11 @@ L<http://perlcabal.org/agent/images/moose_small.png>
 
 =item FAST
 
-L<http://perlcabal.org/agent/images/fast.png>
+L<https://raw.githubusercontent.com/agentzh/uml-class-simple-pm/master/samples/fast.png>
 
 =begin html
 
-<img src="http://perlcabal.org/agent/images/fast.png">
+<img src="https://raw.githubusercontent.com/agentzh/uml-class-simple-pm/master/samples/fast.png">
 
 =end html
 
@@ -1180,8 +1180,8 @@ Maxim Zenin C<< <max@foggy.ru> >>.
 
 =head1 COPYRIGHT
 
-Copyright (c) 2006-2013 by Yichun Zhang (章亦春), CloudFlare Inc.
-Copyright (c) 2007-2013 by Maxim Zenin.
+Copyright (c) 2006-2014 by Yichun Zhang (章亦春), CloudFlare 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.