From e92c82e2c9ff541cd321ad7a8aedcf34e615197c Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Sun, 14 Jun 2015 20:35:08 +0200 Subject: First public version --- src/Codec/Pesto/Dot.lhs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/Codec/Pesto/Dot.lhs (limited to 'src/Codec/Pesto/Dot.lhs') diff --git a/src/Codec/Pesto/Dot.lhs b/src/Codec/Pesto/Dot.lhs new file mode 100644 index 0000000..a0ac161 --- /dev/null +++ b/src/Codec/Pesto/Dot.lhs @@ -0,0 +1,24 @@ +Presentation +------------ + +.. class:: nodoc + +> module Codec.Pesto.Dot (toDot) where +> import Codec.Pesto.Serialize (serialize) + +Since each recipe is just a directed graph (digraph), we can use the dot +language to represent it as well. This in turnXXX can be transformed into an +image, for example. + +> toDot nodes edges = unlines $ ["digraph a {\nnode [fontname=\"Roboto Semi-Light\"];"] ++ n ++ e ++ ["}"] +> where +> f (a, b) = show a ++ " -> " ++ show b ++ ";" +> e = map f edges +> n = map (\(a, b) -> show a ++ " [label=\"" ++ dotEncodeString (serialize b) ++ "\"];") nodes +> addcolor = "#e6ee9c" + +> dotEncodeString = concatMap dotEncodeChar +> dotEncodeChar '\n' = "\\n" +> dotEncodeChar '"' = "\\\"" +> dotEncodeChar x = [x] + -- cgit v1.2.3