Revision history for module Map::Tube::Plugin::Graph

1.1.1   2026-07-31
        This release entirely belongs to @GWS.
        - No functional hanges
        - Augmented tests
        - Sped up tests
        - Made tests more robust (hopefully)
        - Removed test dependencies on Map::Tube::London
        - Augmented README.

1.1.0   2026-07-21
        This release entirely belongs to @GWS.
        [API Enhancements]
        - Added new flexible render() method supporting customizable parameters:
          - format (e.g., png, svg, pdf, dot, gv).
          - driver (e.g., neato, fdp).
          - output_file path (with automatic naming fallback if set to undef).
          - base64 boolean encoding.
          - line_name (optional positional or named parameter).
        - The output file name fallback for single lines now includes the map
          name, too.
        - The output file name fallback is cleaned from non-word characters,
          making file names more readable and preventing clobbering of files
          outside the current folder even for (hypothetical) malicious tube maps.
        - Refactored existing methods as_png() and as_image() to act as
          clean, modern wrappers around render().
        - Added metadata querying methods list_drivers() and list_formats()
          to list GraphViz capabilities.
        - Added helper get_graphviz_supported() using IPC::Run3 and File::Which
          to introspect local dot binaries.

        [Prerequisites]
        - Bumped minimum Perl requirement to v5.14.
        - Added dependency on File::Which and IPC::Run3 (which have always
          been required implicitly, because GraphViz2 requires them).
        - Removed direct usage of Data::Dumper.

        [Test Suite]
        - Reorganised and expanded the test suite into modular scripts under t/:
          - t/01-render.t: Comprehensive unit coverage for the new render()
            parameters, drivers, and output file behavior.
          - t/02-as_image.t: Modernised verification of base64 PNG rendering.
          - t/03-as_png.t: Validation of raw binary output formatting.
          - t/04-as_graph.t: Isolated validation of graph representations.
          - t/05-graphviz-meta.t: Verification of GraphViz introspection features.
          - t/06-unusual-station-name.t: Cleaned up version of station name
            parsing using the new render() implementation.
        - Removed deprecated monolithic test files t/as_image.t and
          t/unusual-station-name.t.

        [Others]
        - Updated README file.

v1.0.0  2026-07-10
        - The function as_graph() now takes into account the data regarding
          the per-link line restrictions from the class Map::Tube (see
          version 5.1.0 of Map::Tube); that is, the method now is able to
          figure out which lines an edge belongs to. Until now an edge was
          created for each line that the two stations had in common despite
          the fact that the physical link did not go through all those lines
          in one direction which caused the two-way edges to be created for
          a link that was actually one-directed.
          The function as_graph() previously created a directed graph for
          each link defined in the link object, therefore, no changes to the
          graph structure is required, however, now the processing of the
          link restrictions means that no edges are created for lines that
          are blocked in one direction, thus allowing for the creation of
          one-directional edges rather than a loop. Thanks @gws.
        - Corrected graph_line_image() (used by as_image($line)/as_png($line),
          for instance, map-tube --gen --line X) misrepresenting stations
          that cannot be reached at all from the chosen line.
          The "which of the off-line stations to include for reference"
          calculation employed Graph's neighbours_by_radius(), which for
          directed graphs counts both successors AND predecessors as
          neighbours. So any station connected via a one-way connection to
          one of the line's station (but no way back) would be included even
          if it is currently impossible to reach the station by means of the
          line. It would be depicted as a completely isolated node not
          having any edges at all as all its (one-way) edges don't lead in
          the necessary direction. Now only the successors of the line's
          station are considered, thus keeping the picture true to
          reality. Thanks @gws.
        - Upgraded dependency on Map::Tube v5.1.0.
        - Switched to dotted-decimal versioning (v-strings).

0.49  2025-02-21T16:50:00+00:00
      - Patched the method graph_map_image(), missed it last time.
      - Upgraded dependency on Map::Tube v3.96.

0.48  2025-02-20T15:05:00+00:00
      - Patched the method graph_line_image(), missed it last time.

0.47  2025-02-20T11:00:00+00:00
      - Re-instate display of station names (rather than station ids)
        accidentally broken in 0.46. Thanks @gws.

0.46  2025-02-18T23:20:00+00:00
      - Updated method as_graph() to take station id and not name
        when preparing data for Graphviz to avoid case when name
        contains something like ":" and throw error on map generation.
        https://rt.cpan.org/Public/Bug/Display.html?id=159671

0.45  2024-09-04T12:50:00+00:00
      - Removed broken/unwanted links.

0.44  2024-09-04T12:25:00+00:00
      - Added as_png, as_graph, thanks @mohawk2.
      - Upgraded dependency on Map::Tube v3.77.

0.43  2024-08-18T23:45:00+00:00
      - Pod changes about installation, thanks @mohawk2.

0.42  2019-09-13T17:25:00+00:00
      - Moved author test scripts to xt/ subfolder.

0.41  2019-07-17T18:05:00+00:00
      - Upgraded dependency on Map::Tube v3.64.

0.40  2019-05-25T11:30:00+00:00
      - Upgraded dependency on Map::Tube v3.62.

0.39  2019-01-16T14:50:00+00:00
      - Upgraded dependency on Map::Tube v3.60.

0.38  2019-04-15T16:40:00+00:00
      - Added link to SYNOPSIS.

0.37  2019-01-01T10:00:00+00:00
      - Upgraded dependency on Map::Tube v3.58.

0.36  2018-09-29T12:00:00+00:00
      - Removed dependency on Graphics::ColorNames.
      - Upgraded dependency on Map::Tube::Exception v3.18.
      - Added color name validation.

0.35  2018-09-28T21:25:00+00:00
      - Upgraded dependency on Map::Tube v3.57.

0.34  2018-09-26T14:50:00+00:00
      - Upgraded dependency on Map::Tube v3.56.

0.33  2018-08-24T15:20:00+00:00
      - Upgraded dependency on Map::Tube v3.55.

0.32  2018-08-01T10:40:00+00:00
      - Added ability to set the map background color optionally.
      - Upgraded dependency on Map::Tube v3.54.
      - Upgraded dependency on Map::Tube::Exception v3.17.

0.31  2018-03-10T23:20:00+01:00
      - Upgraded dependency on Map::Tube::Exception v3.14.
      - Handled invalid color hex code with exception.

0.30  2017-12-25T10:20:00+01:00
      - Improved sample code in the pod section "SYNOPSIS".

0.29  2017-12-23T04:15:00+01:00
      - Replaced "namespace::clean" with "namespace::autoclean".

0.28  2017-09-20T10:40:00+01:00
      - Improved method exporting.

0.27  2017-09-15T11:35:00+01:00
      - Updated copyright year information.

0.26  2017-07-18T11:50:00+01:00
      - Fixed line map generation code.

0.25  2017-05-25T12:05:00+01:00
      - Upgraded dependency on Map::Tube::Exception v3.12.

0.24  2016-10-12T10:30:00+01:00
      - Upgraded dependency on Map::Tube::Exception v3.08.
      - Updated copyright year information in the README file.

0.23  2016-09-24T23:10:00+01:00
      - Add test scripts (t/meta-json.t and t/meta-yml.t).

0.22  2016-09-19T11:10:00+01:00
      - Added key 'provides' to the Makefile.PL script.

0.21  2016-09-13T09:20:00+01:00
      - Upgraded dependency on Map::Tube::Exception v3.06.

0.20  2016-04-04T14:10:00+01:00
      - Fixed method Map::Tube::Plugin::Graph::Utils::graph_map_image() to handle line with no stations.
      - Added $AUTHORITY to the distribution.
      - Updated unit test scripts (t/00-load.t, t/pod.t and t/manifest.t).
      - Updated copyright year information.

0.19  2015-09-20T09:45:00+01:00
      - Replaced die() with exception Map::Tube::Exception::*.

0.18  2015-03-10T13:30:00+01:00
      - Fixed typo in the package name Map::Tube::Plugin::Graph::Utils.
      - Renamed method _graph_line_image() to graph_line_image().
      - Renamed method _graph_map_image() to graph_map_image().
      - Updated package Map::Tube::Plugin::Graph to respect the above changes.

0.17  2015-03-10T10:40:00+01:00
      - Renamed package Map::Tube::Utils::Graph to Map::Tube::Plugin::Graph::Utils.
      - Updated test script t/00-load.t accordingly.

0.16  2015-02-12T00:30:00+01:00
      - Tidied up pod document of Map::Tube::Utils::Graph.

0.15  2015-02-12T00:05:00+01:00
      - Refactored the plugin code and moved private methods to separate package.

0.14  2015-02-10T12:00:00+01:00
      - Updated method _graph_map_label() to the generate the label for map correctly.

0.13  2015-02-10T11:35:00+01:00
      - Updated method as_image() to generate entire map, if no line name is passed.
      - Fixed the code in the section SYNOPSIS to run smooth on Windows (thanks to Gisbert W. Selke).
      - Added new code to the section SYNOPSIS to reflect the changes to the method as_image().

0.12  2015-02-09T23:00:00+01:00
      - Restructured the plugin as Moo Role, as conceived by Gisbert W. Selke.

0.11  2015-02-01T19:19:00+01:00
      - Made edge outside of the current line connected by dashed line.

0.10  2015-01-29T15:15:00+01:00
      - Added node text color, boundary color and image background color.

0.09  2015-01-24T17:15:00+01:00
      - Bundled pull request from TUPINEK.

0.08  2015-01-23T10:15:00+01:00
      - Patched RT: 101691, although it was raised against Map::Tube.

0.07  2015-01-22T16:25:00+01:00
      - Fixed method _label() throwing error "string ran past end of line".

0.06  2015-01-21T21:15:00+01:00
      - Updated map label as auto generated.

0.05  2015-01-20T10:05:00+01:00
      - Further more pod document tidied up.

0.04  2015-01-20T00:35:00+01:00
      - Minor pod document changes.

0.03  2015-01-19T12:40:00+01:00
      - Fixed the code in the pod document about method as_image().

0.02  2015-01-19T12:00:00+01:00
      - Renamed the test script as-image.t to as_image.t.
      - Updated MANIFEST file to reflect the above changes.
      - Added section "CONSTRUCTOR" and "INSTALLATION" to the pod document.
      - Minor tidied up pod document.

0.01  2015-01-18T14:30:11+01:00
      - Module Created.
