--- Begin Message ---
Subject: |
[PATCH 1/1] guix: graph: Add Trival Graph Format (TGF) backend. |
Date: |
Mon, 5 Mar 2018 12:41:36 +0100 |
* guix/graph.scm ((emit-edge, emit-d3js-edge, emit-cypher-edge): New arguments
label1 , label2.
(emit-tg-progloug, mit-tgf-epilouge, emit-tgf-node, emit-tgf-edge): New
variables.
(%trivial-graph-backend): New variable.
(%graph-backends): Add %trivial-graph-backend.
(export-graph): Pass labels to emit-edge.
---
guix/graph.scm | 40 ++++++++++++++++++++++++++++++++++------
1 file changed, 34 insertions(+), 6 deletions(-)
diff --git a/guix/graph.scm b/guix/graph.scm
index d7fd5f3e4..650d577f6 100644
--- a/guix/graph.scm
+++ b/guix/graph.scm
@@ -46,6 +46,7 @@
%graph-backends
%d3js-backend
%graphviz-backend
+ %trival-graph-backend
graph-backend?
graph-backend
graph-backend-name
@@ -173,7 +174,7 @@ typically returned by 'node-edges' or 'node-back-edges'."
(define (emit-node id label port)
(format port " \"~a\" [label = \"~a\", shape = box, fontname =
Helvetica];~%"
id label))
-(define (emit-edge id1 id2 port)
+(define (emit-edge id1 label1 id2 label2 port)
(format port " \"~a\" -> \"~a\" [color = ~a];~%"
id1 id2 (pop-color id1)))
@@ -219,7 +220,7 @@ nodes[\"~a\"] = {\"id\": \"~a\", \"label\": \"~a\",
\"index\": nodeArray.length}
nodeArray.push(nodes[\"~a\"]);~%"
id id label id))
-(define (emit-d3js-edge id1 id2 port)
+(define (emit-d3js-edge id1 label1 id2 label2 port)
(format port "links.push({\"source\": \"~a\", \"target\": \"~a\"});~%"
id1 id2))
@@ -245,7 +246,7 @@ nodeArray.push(nodes[\"~a\"]);~%"
(format port "MERGE (p:Package { id: ~s }) SET p.name = ~s;~%"
id label ))
-(define (emit-cypher-edge id1 id2 port)
+(define (emit-cypher-edge id1 label1 id2 label2 port)
(format port "MERGE (a:Package { id: ~s });~%" id1)
(format port "MERGE (b:Package { id: ~s });~%" id2)
(format port "MATCH (a:Package { id: ~s }), (b:Package { id: ~s }) CREATE
UNIQUE (a)-[:NEEDS]->(b);~%"
@@ -260,13 +261,32 @@ nodeArray.push(nodes[\"~a\"]);~%"
;;;
+;;; Trivial graph export.
+;;;
+
+(define (emit-tgf-prologue name port) #t)
+(define (emit-tgf-epilogue port) #t)
+(define (emit-tgf-node id label port) #t)
+(define (emit-tgf-edge id1 label1 id2 label2 port)
+ (format port "~a ~a~%" label1 label2))
+
+(define %trival-graph-backend
+ (graph-backend "tgf"
+ "Generate graph in Trivial Graph Format."
+ emit-tgf-prologue emit-tgf-epilogue
+ emit-tgf-node emit-tgf-edge))
+
+
+
+;;;
;;; Shared.
;;;
(define %graph-backends
(list %graphviz-backend
%d3js-backend
- %cypher-backend))
+ %cypher-backend
+ %trival-graph-backend))
(define* (export-graph sinks port
#:key
@@ -299,8 +319,16 @@ true, draw reverse arrows."
(emit-node id (node-label head) port)
(for-each (lambda (dependency dependency-id)
(if reverse-edges?
- (emit-edge dependency-id id port)
- (emit-edge id dependency-id port)))
+ (emit-edge dependency-id
+ (node-label dependency)
+ id
+ (node-label head)
+ port)
+ (emit-edge id
+ (node-label head)
+ dependency-id
+ (node-label dependency)
+ port)))
dependencies ids)
(loop (append dependencies tail)
(set-insert id visited)))))))))))))
--
2.13.6
--- End Message ---
--- Begin Message ---
Subject: |
Re: [bug#30711] [PATCH 1/1] guix: graph: Add Trival Graph Format (TGF) backend. |
Date: |
Tue, 6 Mar 2018 21:20:48 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 |
Hi,
I'm retracting this patch. The implementation is wrong, fixing it
requires too many changes and the use is arguable. So we should not
spend much tome on it.
Thanks for reviewing and feedback :-)
--
Regards
Hartmut Goebel
| Hartmut Goebel | address@hidden |
| www.crazy-compilers.com | compilers which you thought are impossible |
--- End Message ---