Skip to content

lempiy/dgraph

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

↬ dGraph ↫

Draw direct graphs with ascii symbols using Golang and more...

Usage
package main

import (
	"encoding/json"
	"log"
	"fmt"
	"github.com/lempiy/dgraph"
	"github.com/lempiy/dgraph/core"
)

const data = `[
{
	"id": "Client",
    "next": ["Route53"]
},
{
	"id": "Route53",
    "next": ["ELB", "CloudFront"]
},
{
	"id": "CloudFront",
    "next": ["S3"]
},
{
	"id": "S3",
    "next": []
},
{
	"id": "ELB",
    "next": ["WebServer1", "WebServer2", "WebServer3", "WebServer4"]
},
{
	"id": "WebServer1",
    "next": ["LB1"]
},
{
	"id": "WebServer2",
    "next": ["LB1"]
},
{
	"id": "WebServer3",
    "next": ["LB2"]
},
{
	"id": "WebServer4",
    "next": ["LB2"]
},
{
	"id": "LB1",
    "next": ["AppServer1", "AppServer2"]
},
{
	"id": "LB2",
    "next": ["AppServer3", "AppServer4"]
},
{
	"id": "AppServer1",
    "next": ["DBMaster", "DBReplica1"]
},
{
	"id": "AppServer2",
    "next": ["DBMaster", "DBReplica1"]
},
{
	"id": "AppServer3",
    "next": ["DBMaster", "DBReplica2"]
},
{
	"id": "AppServer4",
    "next": ["DBMaster", "DBReplica2"]
},
{
	"id": "DBReplica1",
    "next": ["DBMaster"]
},
{
	"id": "DBReplica2",
    "next": ["DBMaster"]
},
{
	"id": "DBMaster",
    "next": []
}
]`

func main() {
	var list []core.NodeInput
	err := json.Unmarshal([]byte(data), &list)
	if err != nil {
		log.Fatal(err)
		return
	}
	canvas, err := dgraph.DrawGraph(list)
	if err != nil {
		log.Fatal(err)
		return
	}
	fmt.Printf("%s\n", canvas)
}

Output:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Client  β”œβ”€β”€β”€β”€ Route53 β”œβ”€β”€β”€β”€β”€β”€β”€β”€ ELB β”œβ”€β”€β”€β”€β”€β”€β”€β”€ WebServer1  β”œβ”€β”€β”€β”€ LB1 β”œβ”€β”€β”€β”€ AppServer1  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ DBMaster  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜       β””β”€β”€β”¬β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”¬β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜                     β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜
                   β”‚               β”‚                               β”‚             β”‚                                  β”‚      
                   β”‚               β”‚                               β”‚             β”‚                                  β”‚      
                   β”‚               β”‚                               β”‚             β”‚                                  β”‚      
                   β”‚               β”‚          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”‚             β”‚          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚      
                   β”‚               β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ WebServer2  β”œβ”€β”€β”€β”€β”€β”€β”€             └─────────── DBReplica1  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€      
                   β”‚               β”‚          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β”‚                        β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜         β”‚      
                   β”‚               β”‚                               β”‚                               β”‚                β”‚      
                   β”‚               β”‚                               β”‚                               β”‚                β”‚      
                   β”‚               β”‚                               β”‚                               β”‚                β”‚      
                   β”‚               β”‚                               β”‚      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”‚                β”‚      
                   β”‚               β”‚                               └─────── AppServer2  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€      
                   β”‚               β”‚                                      β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜          β”‚                β”‚      
                   β”‚               β”‚                                             β”‚                 β”‚                β”‚      
                   β”‚               β”‚                                             β”‚                 β”‚                β”‚      
                   β”‚               β”‚                                             β”‚                 β”‚                β”‚      
                   β”‚               β”‚                                             β”‚                 β”‚                β”‚      
                   β”‚               β”‚                                             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                β”‚      
                   β”‚               β”‚                                                                                β”‚      
                   β”‚               β”‚                                                                                β”‚      
                   β”‚               β”‚                                                                                β”‚      
                   β”‚               β”‚                                                                                β”‚      
                   β”‚               β”‚          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                           β”‚      
                   β”‚               β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ WebServer3  β”œβ”€β”€β”€β”€ LB2 β”œβ”€β”€β”€β”€ AppServer3  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€      
                   β”‚               β”‚          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”¬β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜                           β”‚      
                   β”‚               β”‚                               β”‚             β”‚                                  β”‚      
                   β”‚               β”‚                               β”‚             β”‚                                  β”‚      
                   β”‚               β”‚                               β”‚             β”‚                                  β”‚      
                   β”‚               β”‚          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”‚             β”‚          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚      
                   β”‚               └─────────── WebServer4  β”œβ”€β”€β”€β”€β”€β”€β”€             └─────────── DBReplica2  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€      
                   β”‚                          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β”‚                        β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜         β”‚      
                   β”‚                                               β”‚                               β”‚                β”‚      
                   β”‚                                               β”‚                               β”‚                β”‚      
                   β”‚                                               β”‚                               β”‚                β”‚      
                   β”‚        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”          β”‚      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”‚                β”‚      
                   └───────── CloudFront  β”œβ”€β”€β”€β”€β”€β”€β”€β”€ S3  β”‚          └─────── AppServer4  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      
                            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”˜                 β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜          β”‚                       
                                                                                 β”‚                 β”‚                       
                                                                                 β”‚                 β”‚                       
                                                                                 β”‚                 β”‚                       
                                                                                 β”‚                 β”‚                       
                                                                                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                       
                                                                                                                           

If you need to render your graph in other format. You can use core package to get low level core.Matrix struct.

About

πŸ”· Draw direct graphs in GO πŸ”Ά

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages