From 50bd016e40105372942af0f367934c8a54c5bd82 Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Fri, 14 Feb 2025 09:41:41 +0700 Subject: [PATCH 01/11] initial implementation --- d2cli/export.go | 10 +- d2cli/main.go | 19 ++- d2renderers/d2ascii/d2ascii.go | 291 +++++++++++++++++++++++++++++++++ 3 files changed, 315 insertions(+), 5 deletions(-) create mode 100644 d2renderers/d2ascii/d2ascii.go diff --git a/d2cli/export.go b/d2cli/export.go index 602cfd675..45bdfd56b 100644 --- a/d2cli/export.go +++ b/d2cli/export.go @@ -13,15 +13,17 @@ const PNG exportExtension = ".png" const PPTX exportExtension = ".pptx" const PDF exportExtension = ".pdf" const SVG exportExtension = ".svg" +const ASCII exportExtension = ".txt" -var SUPPORTED_EXTENSIONS = []exportExtension{SVG, PNG, PDF, PPTX, GIF} +var SUPPORTED_EXTENSIONS = []exportExtension{ASCII, SVG, PNG, PDF, PPTX, GIF} var STDOUT_FORMAT_MAP = map[string]exportExtension{ - "png": PNG, - "svg": SVG, + "png": PNG, + "svg": SVG, + "ascii": ASCII, } -var SUPPORTED_STDOUT_FORMATS = []string{"png", "svg"} +var SUPPORTED_STDOUT_FORMATS = []string{"png", "svg", "ascii"} func getOutputFormat(stdoutFormatFlag *string, outputPath string) (exportExtension, error) { if stdoutFormatFlag != nil && *stdoutFormatFlag != "" { diff --git a/d2cli/main.go b/d2cli/main.go index dbf1ae2c4..18949d4e1 100644 --- a/d2cli/main.go +++ b/d2cli/main.go @@ -28,6 +28,7 @@ import ( "oss.terrastruct.com/d2/d2parser" "oss.terrastruct.com/d2/d2plugin" "oss.terrastruct.com/d2/d2renderers/d2animate" + "oss.terrastruct.com/d2/d2renderers/d2ascii" "oss.terrastruct.com/d2/d2renderers/d2fonts" "oss.terrastruct.com/d2/d2renderers/d2svg" "oss.terrastruct.com/d2/d2renderers/d2svg/appendix" @@ -103,7 +104,7 @@ func Run(ctx context.Context, ms *xmain.State) (err error) { if err != nil { return err } - stdoutFormatFlag := ms.Opts.String("", "stdout-format", "", "", "output format when writing to stdout (svg, png). Usage: d2 input.d2 --stdout-format png - > output.png") + stdoutFormatFlag := ms.Opts.String("", "stdout-format", "", "", "output format when writing to stdout (svg, png, ascii). Usage: d2 input.d2 --stdout-format png - > output.png") if err != nil { return err } @@ -862,6 +863,22 @@ func renderSingle(ctx context.Context, ms *xmain.State, compileDur time.Duration } func _render(ctx context.Context, ms *xmain.State, plugin d2plugin.Plugin, opts d2svg.RenderOpts, inputPath, outputPath string, bundle, forceAppendix bool, page playwright.Page, ruler *textmeasure.Ruler, diagram *d2target.Diagram, outputFormat exportExtension) ([]byte, error) { + if outputFormat == ASCII { + renderOpts := &d2ascii.RenderOpts{ + Pad: opts.Pad, + Scale: opts.Scale, + } + ascii, err := d2ascii.Render(diagram, renderOpts) + if err != nil { + return ascii, err + } + err = Write(ms, outputPath, ascii) + if err != nil { + return ascii, err + } + return ascii, nil + } + toPNG := outputFormat == PNG var scale *float64 diff --git a/d2renderers/d2ascii/d2ascii.go b/d2renderers/d2ascii/d2ascii.go new file mode 100644 index 000000000..1eb3e3ae7 --- /dev/null +++ b/d2renderers/d2ascii/d2ascii.go @@ -0,0 +1,291 @@ +package d2ascii + +import ( + "bytes" + "math" + "strings" + + "oss.terrastruct.com/d2/d2target" +) + +// RenderOpts contains options for ASCII rendering +type RenderOpts struct { + Pad *int64 // Optional padding around the diagram + Scale *float64 // Pixels per ASCII character ratio +} + +// Render converts a D2 diagram into ASCII art +func Render(diagram *d2target.Diagram, opts *RenderOpts) ([]byte, error) { + if opts == nil { + opts = &RenderOpts{} + } + + // Default padding matching d2svg + pad := int(8) + if opts.Pad != nil { + pad = int(*opts.Pad) + } + + // Scale for converting diagram coordinates to ASCII grid + // Default: roughly 1 ASCII char = 8x4 pixels + scale := struct{ x, y float64 }{8, 4} + if opts.Scale != nil { + s := *opts.Scale + scale.x = s + scale.y = s / 2 // Maintain aspect ratio + } + + // Calculate canvas dimensions + tl, br := diagram.NestedBoundingBox() + width := int(math.Ceil(float64(br.X-tl.X+(pad*2)) / scale.x)) + height := int(math.Ceil(float64(br.Y-tl.Y+(pad*2)) / scale.y)) + + // Create ASCII canvas + canvas := NewCanvas(width, height) + canvas.setScale(scale.x, scale.y) + canvas.setOffset(-int(tl.X), -int(tl.Y)) + canvas.setPad(pad) + + // Draw shapes + for _, shape := range diagram.Shapes { + err := canvas.drawShape(shape) + if err != nil { + return nil, err + } + } + + // Draw connections + for _, conn := range diagram.Connections { + err := canvas.drawConnection(conn) + if err != nil { + return nil, err + } + } + + return canvas.Bytes(), nil +} + +// Canvas handles the ASCII grid and drawing operations +type Canvas struct { + grid [][]rune + w, h int + + // Coordinate transformation + scaleX, scaleY float64 + offsetX, offsetY int + pad int +} + +func NewCanvas(w, h int) *Canvas { + grid := make([][]rune, h) + for i := range grid { + grid[i] = make([]rune, w) + for j := range grid[i] { + grid[i][j] = ' ' + } + } + return &Canvas{ + grid: grid, + w: w, + h: h, + } +} + +func (c *Canvas) setScale(x, y float64) { + c.scaleX = x + c.scaleY = y +} + +func (c *Canvas) setOffset(x, y int) { + c.offsetX = x + c.offsetY = y +} + +func (c *Canvas) setPad(pad int) { + c.pad = pad +} + +// transformPoint converts diagram coordinates to ASCII grid coordinates +func (c *Canvas) transformPoint(x, y int) (int, int) { + x = int(float64(x+c.offsetX+c.pad) / c.scaleX) + y = int(float64(y+c.offsetY+c.pad) / c.scaleY) + return x, y +} + +func (c *Canvas) drawShape(shape d2target.Shape) error { + x, y := c.transformPoint(int(shape.Pos.X), int(shape.Pos.Y)) + w := int(float64(shape.Width) / c.scaleX) + h := int(float64(shape.Height) / c.scaleY) + + switch shape.Type { + case d2target.ShapeCircle: + return c.drawCircle(x, y, w, h, shape.Label) + case d2target.ShapeSquare: + return c.drawRect(x, y, w, h, shape.Label) + // Add more shape types as needed + default: + return c.drawRect(x, y, w, h, shape.Label) + } +} + +func (c *Canvas) drawRect(x, y, w, h int, label string) error { + // Draw corners + c.set(x, y, '+') + c.set(x+w, y, '+') + c.set(x, y+h, '+') + c.set(x+w, y+h, '+') + + // Draw horizontal edges + for i := x + 1; i < x+w; i++ { + c.set(i, y, '-') + c.set(i, y+h, '-') + } + + // Draw vertical edges + for i := y + 1; i < y+h; i++ { + c.set(x, i, '|') + c.set(x+w, i, '|') + } + + // Draw label + if label != "" { + c.drawCenteredText(x+1, y+1, w-1, h-1, label) + } + + return nil +} + +func (c *Canvas) drawCircle(x, y, w, h int, label string) error { + // Approximate circle with ASCII characters + c.set(x+w/2, y, '.') + c.set(x+w/2, y+h, '\'') + c.set(x, y+h/2, '(') + c.set(x+w, y+h/2, ')') + + if label != "" { + c.drawCenteredText(x+1, y+1, w-1, h-1, label) + } + + return nil +} + +func (c *Canvas) drawConnection(conn d2target.Connection) error { + // Draw a simple line between points for now + points := make([]struct{ x, y int }, len(conn.Route)) + for i, p := range conn.Route { + points[i].x, points[i].y = c.transformPoint(int(p.X), int(p.Y)) + } + + for i := 0; i < len(points)-1; i++ { + c.drawLine(points[i].x, points[i].y, points[i+1].x, points[i+1].y) + } + + return nil +} + +func (c *Canvas) drawLine(x1, y1, x2, y2 int) { + // Draw horizontal line + if y1 == y2 { + for x := min(x1, x2); x <= max(x1, x2); x++ { + c.set(x, y1, '-') + } + return + } + + // Draw vertical line + if x1 == x2 { + for y := min(y1, y2); y <= max(y1, y2); y++ { + c.set(x1, y, '|') + } + return + } + + // Draw diagonal line + dx := abs(x2 - x1) + dy := abs(y2 - y1) + steep := dy > dx + + if steep { + x1, y1 = y1, x1 + x2, y2 = y2, x2 + } + if x1 > x2 { + x1, x2 = x2, x1 + y1, y2 = y2, y1 + } + + dx = x2 - x1 + dy = abs(y2 - y1) + err := dx / 2 + ystep := 1 + if y1 >= y2 { + ystep = -1 + } + + for ; x1 <= x2; x1++ { + if steep { + c.set(y1, x1, '/') + } else { + c.set(x1, y1, '/') + } + err -= dy + if err < 0 { + y1 += ystep + err += dx + } + } +} + +func (c *Canvas) drawCenteredText(x, y, w, h int, text string) { + lines := strings.Split(text, "\n") + startY := y + (h-len(lines))/2 + + for i, line := range lines { + if startY+i >= c.h { + break + } + startX := x + (w-len(line))/2 + for j, ch := range line { + if startX+j >= c.w { + break + } + c.set(startX+j, startY+i, ch) + } + } +} + +func (c *Canvas) set(x, y int, ch rune) { + if x >= 0 && x < c.w && y >= 0 && y < c.h { + c.grid[y][x] = ch + } +} + +func (c *Canvas) Bytes() []byte { + var buf bytes.Buffer + for _, row := range c.grid { + buf.WriteString(string(row)) + buf.WriteByte('\n') + } + return buf.Bytes() +} + +func min(a, b int) int { + if a < b { + return a + } + return b +} + +func max(a, b int) int { + if a > b { + return a + } + return b +} + +func abs(x int) int { + if x < 0 { + return -x + } + return x +} From f63591194c944e145ee18df8123938256770bc8d Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Fri, 14 Feb 2025 13:15:31 +0700 Subject: [PATCH 02/11] add examples output ```fish for f in docs/**.d2 set -l dir (dirname $f) set -l name (basename $f .d2) if [ $name = "in" ] set name out end if [ $name = "input" ] set name output end go run main.go $f $dir/$name.txt end ``` --- docs/examples/chess/dia.txt | 274 ++++++++++ docs/examples/flipt/output.txt | 176 +++++++ docs/examples/japan-grid/japan.txt | 351 +++++++++++++ docs/examples/twitter/out.txt | 586 ++++++++++++++++++++++ docs/examples/vector-grid/vector-grid.txt | 311 ++++++++++++ docs/flow.txt | 358 +++++++++++++ 6 files changed, 2056 insertions(+) create mode 100644 docs/examples/chess/dia.txt create mode 100644 docs/examples/flipt/output.txt create mode 100644 docs/examples/japan-grid/japan.txt create mode 100644 docs/examples/twitter/out.txt create mode 100644 docs/examples/vector-grid/vector-grid.txt create mode 100644 docs/flow.txt diff --git a/docs/examples/chess/dia.txt b/docs/examples/chess/dia.txt new file mode 100644 index 000000000..ee7e5298b --- /dev/null +++ b/docs/examples/chess/dia.txt @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +-----------------+ + | | + | | + | | + | | + | | + | | + | | + | Hans Niemann | + | | + | | + | | + | | + | | + / | + //| | + / +-----/------/----/ + // / / / + // / / / + / / / // + // / / / + / / / / + // / / / + / / / / + // / / / + // / / // + / / / / + // / / / + / / / / + / / / / + / / / / + / / / / + / / / / + / / / / + / / / / + | / / / + | / / / + | / / / + | / / / + | / / / + | / / / + | / / / + | / / / + | / / / + | / / / + | / / / + | / / / + | / / / + | / / / + | / / / + | / / / + | / / / + +-|----------------------/---------------------+| | + | / || | + | / || | + | / || | + | / || | + | / || | + | / || | + | +--------------/---+ || | + | | | || | + | | | || | + | | | || | + | | | || | + | | | || | + | | | || | + | | | || | + | | Magnus Carlsen | || | + | | | || | + | | | || | + | | | || | + | | | || | + | | | || | + | | | || | + | | | || | + | +---------|--------+ || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | +----------|----------+ || | + | | | || | + | | | || | + | | | || | + | | | || | + | | | || | + | | | || | + | | | || | + | | Play Magnus Group | || | + | | | || | + | | | || | + | | | || | + | | | || | + | | | || | + | | | || | + | | | || | + | +----------|----------+ || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | | || | + | / |/ | + | / / | + | / / | + | / defendants /| | + | / /| | + | / / | | + | / / | | + | / / | | + | / / | | + | / / | | + | / / | | + | / / | | + | / / | | + | / / | | + | / / | | + | / / | | + | / / | | + | / / | | + | / / | | + | +---/----------/ | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | Chess.com | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | +-------|------+ | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | / + | / | / + | / | / + | / | / + | / | / + | / | / + | / | / + | / | / + | / | / + | / | // + | / | / + | / | / + | / | / + | / | / + | / | // + | / | / + | / | / + | / |/ + | / // + | +-------/------------+ / | + | | |/ | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | Hikaru Nakamura | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | +--------------------+ | + | | + | | + | | + | | + | | + | | + | | + +----------------------------------------------+ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/examples/flipt/output.txt b/docs/examples/flipt/output.txt new file mode 100644 index 000000000..f8cd2ad3c --- /dev/null +++ b/docs/examples/flipt/output.txt @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +--------------------------------------------------------+ + | | + | | + | | + | | + | | + | | + | +-------------------------------------------------+ | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | +----+ +----+ +----+ +----+ | | + | | | | | | | | | | | | + | | | | | | | | | | | | + | | | | | | | | | | | | +--------------------------------+ + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | +----+ +----+ +----+ +----+ | | | +-------+ | + | | | | | | | | + | | | | | | | | + | | | | | | | | + | | | | | | | | + +------------------------------------------------------------------+ | | | | | | | | + | | | | | | | | | | + | | | | | | | | | | + | | | | | | | | | | + | | | | | | | ------ | | + | | | | +----+ +----+ +----+ +----+ | | | // | | | + | | | | | | | | | | | | | | | / | | | + | | | | | | | | | | | | | | | / | | | + | +----------+ | | | | | | | | | | | | | | / | | | + | | | | | | | | | | | | | | | | | / | | | + | | | | | | | | | | | | | | | | | / | | | + | | | | | | | | | | | | | | | | | / | | | + | | | | | | | | | | | | | | | | | / +-------+ | + | | | | | | | | | | | | | | | | | / | + | | | | | | | | | | | | | | | | | / | + | | | | | | +----+ +----+ +----+ +----+ | | | +----+/ | + | ------ linked -----/ | | | | | | | / | + | // | | // | | | | | | | | | + | / | | / | | | | | | | | | + | / | | / +-----------+ | | | | | | | | | + | / | | / | | | | | Test -------------------------- | Release | + | / | | / | | | | | | | | | | | + | / | | / | | | | | | | | | | | + | / | | /| | | | | | | | | | | + | +----------/ +----------+ / | | | | | | | | | | + | | | | | | | | +----+ +----+ +----+ +----+ | | | +----/ | + | | | | | | | | | | | | | | | | | | | / | + | | | | | | | | | | | | | | | | | | | / | + | | | | | | | | | | | | | | | | | | | / +-------+ | + | | | | | | | | | | | | | | | | | | | / | | | + | | | | | | | | | | | | | | | | | | | / | | | + | | | Build | | | | | | | | | | | | | | | | / | | | + | | source | | -------------------------- | | | | | | | | | | | / | | | + | | | | | | | | | | | | | | | | | | | / | | | + | | | | | | | | | | | | | | | | | | | / | | | + | | | | | | | | +----+ +----+ +----+ +----+ | | | / | | | + | | | | | | | | | | | / | | | + | | | | | | | | | | | ------ | | + | | | | | | | | | | | | | | + | | / +----------+ | | | | | | | | | | | + | +----------+/ | | / | | | | | | | | | | + | / | | /| | | | | | | | | | | + | / | | / | | | | | | | | | | | + | / | | / | | | | | | | | | | | + | / | | / +-----------+ | | | | | | | | | + | / | | / | | | +----+ +----+ +----+ +----+ | | | +-------+ | + | / | | / | | | | | | | | | | | | | | | + | // | assets | // | | | | | | | | | | | | | | | + | ------ -----/ | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | +--------------------------------+ + | | | | | | | | | | | | | | | | + | +----------+ | | | +----+ +----+ +----+ +----+ | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + +------------------------------------------------------------------+ | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | +-------------------------------------------------+ | + | | + | | + | | + | | + | | + | | + | | + +--------------------------------------------------------+ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/examples/japan-grid/japan.txt b/docs/examples/japan-grid/japan.txt new file mode 100644 index 000000000..b71177c36 --- /dev/null +++ b/docs/examples/japan-grid/japan.txt @@ -0,0 +1,351 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | 北 海 道 | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | 青 森 | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | 秋 田 | 岩 手 | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | 石 川 | || 新 潟 | 山 形 | 宮 城 | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | 福 井 | 富 山 || 群 馬 | 栃 木 | 福 島 | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | 山 口 | 島 根 || 鳥 取 | 兵 庫 || 京 都 | 滋 賀 | 長 野 || 山 梨 | 埼 玉 | 茨 城 | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | 広 島 || 岡 山 | 大 阪 || 奈 良 | 岐 阜 | 愛 知 || 静 岡 | TOKYO | 千 葉 | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | 長 崎 || 佐 賀 | 福 岡 | || | || 和 歌 山 | 三 重 | || | 神 奈 川 | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || 熊 本 | 大 分 | || 愛 媛 | 香 川 || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || 鹿 児 島 | 宮 崎 | || 高 知 | 徳 島 || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | 沖 縄 || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + | || | | || | || | | || | | | + +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/examples/twitter/out.txt b/docs/examples/twitter/out.txt new file mode 100644 index 000000000..39607ff27 --- /dev/null +++ b/docs/examples/twitter/out.txt @@ -0,0 +1,586 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +---------------+ +---------------+ +---------------+ + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | Android | | Iphone | | Web | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + +---------------+ +---------------+ +---------------+ + + + + + + | | | + | | | + | | | + | | | + | | | + / | / + / | / + / | / + / | / + / | / + / | / + / | / + / | / + / | / + / | / + / | / + / | / + / | / + / | / + / +-------|-------+ / + / | | / + / | | / + / | | / + / | | / + /| |/ + / / + | | + | | + | | + | | + | | + | | + | | + | | + | | + Twitter Frontend + | | + | | + // | + // | | + /// | / + /// | |// + // | | / + /// | | / + // | | // + /// | | / + /// | | / + // | | // + /// | | / + // | | / + /// | | // + // +---------------+ / + /// / + /// // + // / + /// / + // // + /// / + /// / + // // + // / + / / + / / + / / + / / + / / + / / + / / + / / + / / + / / + / / + / / + / / + / / + / / + / / + / / + / / + / / + / / + / / + / / + / / + / | + | | + +-----------------|---------------------------------------------------------------------------------------------------------------------------|----------+ + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | +-------|-------+ | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | +-------------|--------------+ | | | + | | | | | | + | | | | | | + | | | | | | + | | | +-------------------------------------------------------------+ | | | + | | | | | | | | + | | | | | | | | + | | | | | | | | + | | TLS-API (being deprecated) | | ## Tweet/user content hydration, visibility filtering | | GraphQL | | + | | | | | Federated Strato Column + | | | | | | | | + | | | | | // | | + | | | | | /// | | | + | | | +-------------------------------------------------------------+ // | | | + | | | /// | / | + | | | /// | |//| + | +----------------------------+ /// | | / + | | // | | |// + | | /// | | | // + | | /// | | | / + | | /// | | | // + | | // | | | / + | | /// | | | // + | | /// | | | / + | | /// | | | // + | | /// +---------------+ | / + | | // | // + | | /// | // + | | /// | / + | | /// | // + | | // | / + | | /// | // + | | // | / + | | // | / + | / // | / + | / // | / + +-------------------/------------------------------------------------/-----------------------------------------------------------------------------------+ / + / // / + / // / + / // / + / | / + / | / + / | / + / | / + / | / + / | / + / | / + / // / + / //// / + / /// / + / /// / + / //// / + / /// / + // /// | + /////// | + /// //// | + //// //// | + /// /// | + /// //// | + //// //// | + /// /// | + //// //// | + /// //// | + /// //// | + //// /// | + /// //// | + /// //// | + //// +-----------------------------------------//----------------------------------------------------------------------------------------------------|--+ + |/ | | + | | | + | | | + | | | + | | | + | | | + | | | + | | +----------------------------------+ | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + +-------|-------+ | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | ## **Timeline mixer** | | + | | | - Inject ads, who-to-follow, onboarding | + | Home mixer | | | - Conversation module | | + | | | | - Cursoring,pagination | | + | | | | - Tweat deduplication | | + | | | | - Served data logging | | + /| | | | | | + // | | | | | | + // /| | | | | | + // / | | | | | | + // // +---------------/ | | | | + // / / / / / / | | | | + // / / / / / / | | | | + // // / / / / / | | | | + // / / / / / / | | | | + // / / / / / / | | | | + // // / / / / / | | | | + // / / / / / / | | | | + // / / / / / / | | | | + // // / / / / / | | | | + // / / / / / / | | | | + // / / / / / / | | | | + // // / / / / / | | | | + // / / / / / / | | | | + // / / / / / / | | | | + // // / / / / / | | | | + // / / / / / / | +----------------------------------+ | + // / / / / / / | | + // // / / / / / | | + // / / / / / / | | + // / / / / / / | | + // // / / / / / | | + // / / / / / / | | + / / / | / / / +--------------------------------------------------------------------------------------------------------------------------------------------------+ + / / / | / / / | | | | | | + / / / | / / / | | | | | | + / / / | / / / | | | | | | + / / / | / / / | | | | | | + / / / | / / / | | | | | | + / / / | / / / | | | | | | + / / / | / / / | | | | | | + / / / | / / / | | | | | | + / / / | / / / | | | | | | + / / / | / / / | | | | | | + / / / | / / / | | | | | | + / / / | / / / | | | | | | + / / / | / / / | | | | | | + / / / | / / / | | | | | | + / / / | / / / | | | | | | + / / / | / / / | | | | | | + / / / | / / / / / / | | | + / / / | / / / / / / | | | + / / / | / / / / / / | | | + / / / | / / / / / / | | | + / / / | / / / / / / | | | + / / / | / / / / / / | | | + / / / | / / / / / / | | | + / / / | / / / / / / | | | + | | | | / / / / / / | | | + | | | | / / / / / / | | | + | | | | / / // // / / | | | + | | | | / / / / / | | | + | | | | / / / / / / | | | + | | | | / / / / / / | | | + | | | | / / // / / / | | | + | | | | / / / // / / | | | + | | | | / / / / / / | | | + | | | | / / // / / / | | | + | | | | / / / / / | | | + | | | | / / / /// / | | | +--------------+ + | | | | / / / // / | | | | | + | | | | / // / / / / | | | | | + | | | | / / / / / +------------+ | +---------------+ +-------------------+ | | + | | | | / / / / / | | | | | | | | | + +--------------+ +---------------+ +--------------+ +--------------+ +-------------------+ +----------------+ // | | +------------+ | | | | | | + | | | | | | | | | | | | /| | | | | | | | | | + | | | | | | | | | | | | / | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | Timeline | | | | Onboarding | | People discovery | | Fetch | + | Tweety Pie | | Social graph | | Gizmoduck | | Manhattan | | Timeline Service | | Home Ranker | | Scorer | | Ad mixer | | service | | service | | | + | | | | | | | | | | | | | | | | | | | | | // | + | | | | | | | | | | | | | | | | | | | | /// | + | | | | | | | | | | | | | | | | | | | | ///| | + | | | | | | | | | | | |// | | | | | | | |//// | | + | | | | | | | | | | | | // | | | | | | | /// | | + | | | | | | | | | | | | // | | | | | | | /// | | | + | | | | | | | | | | | | // | | | | | | /// | | | + +--------------+ +---------------+ +--------------+ +--------------+ +-------------------+ +------/---------+ |/// | +------------+ | | | /// | | | + / | // | | | | //// | | | + / +-----//-----+ +---------------+ +-///---------------+ | | + / // /// | | + / /// /// +--------/-----+ + / // /// / + / // //// / + / /// /// / + / // /// / + / // /// / + / // /// / + / /// //// / + / // /// / + / // /// / + / // // / + / // / / + / //// / | + / /// / | + / //// // | + / /// / | + / //// / | + / /// / | + / //// / | + / /// / | + / //// / | + / /// / | + / //// / | + / //// // | + / /// / | + / //// / | + //// / | + //// / | + /// / / | + //// / / | + /// / / | + //// / // | + /// / / | + //// / / | + |/ / / | + | / // | + | / // | + | / /// | + | / /// | + | / // | + | +-------/----------------------------------------///---------------------------------------------------------------------+ | + | | / // | | + | | / /// | + | | / /// | +----------------+ + | | / // | | | + | | / /// | | | + | | / /// | | | + | | / // | | | + +----------------+ | +-----------+ /// +------------+ +--------+ +---------+ +----------------+ | | | + | | | | | // | | | | | | | | | | | + | | | | | /// | | | | | | | | | | | + | | | | | /// | | | | | | | | | | | + | | | | | // | | | | | | | | | | | + | | | | // | | | | | | | | | | | + | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | Feature | + | Home Scorer | | | CrMixer | | EarlyBird | | Utag | | Space | | Communities | | | | + | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | / | + | | | | | | | | | | | | | | |// | + | | | | | | | | | | | | | | // | + | | | | | | | | | | | | | | / | | + | | | | | | | | | | | | | | // | / | + +---/--//---/----+ | +-----------+ +------------+ +--------+ +---------+ +----------------+ | // |/ | + / // / | | / / | + / // / | | // /| | + / // / | | / / | | + / / / / | | // / +--/--------/----+ + / / / / | | // / / / + / / / / | | / / / / + / // / +------------------------------------------------------------------------------------------------------------------------+ // / / / + / // / // / / / + / // / / / / / + / / / / // / / / + / / / / // / / / + / / / / / / / / + / | / / / / / / + / | / / / / / | + / | / // / / / | + / | / / / / / | + / | // / / / / | + / | / // / / / | + / | / / / / / | + / | / / / / / | + /| / / / / / | + / / // / / / | + |/ / / / / / | + | / / / / / / | + | / // // / / / | + | / / / / / / | + | / / / / / / | + | / / / / / / | + | / / // / / / | + | / / / / / / | + | / / / / / / | + | / / / / / / | + | / / // / / / | + | / // / / / / | + | / / / / / / | + | / / // / / / | + | / / / / / / | + | /// /// /// / / / | + | //// ///// ///// / / / | + | ///// //// ////// / / / | + | //// ///// ///// / / / | + | //// ///// ///// / / / | + | ///// ///// ///// / / / | + | //// //// ///// / / / | + | ///// ///// ////// / / / | + | //// ///// ///// / / / | + +-------|-------+ //// ///// ///// / / / | + | | ///// //// ///// / / / | + | | //// ///// ////// / / / + | | ///// ///// ///// / / / + | | //// //// ///// / / / +----------------+ + | | ///// ///// ///// / +--------------/--+ / | | + | | //// ///// ///// / | | / | | + | | //// ///// ////// / | | / | | + | | ///// //// +---------///// | | +--------/-----+ | | + | | //// ///// | / ///// | | | | | + | | ///// ///// | | ///// | | | | | + | | //// |///// | | ///// | | | | | + | | //// | ////| | ////// | | | | + | | ///// | ///// | |///// | | | | + | | //// | | /// | /// | | | + | | /// | | | | | | | + Prediction Service | ...etc | | Memcache | | Manhattan | | Scoring | + | | | | | | | | | | + | | | | | | | | | | + | | | | | | | | | | + | | | | | | | | | | + | | | | | | | | | | + | | | | | | | | | | + | | | | | | | | | | + | | +---------+ | | +--------------+ | | + | | | | | | + | | | | | | + | | | | | | + | | +-----------------+ | | + | | +-------|--------+ + | | | + | | | + +---------------+ | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + +-------|-------+ + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + Prediction Service + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + +---------------+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/examples/vector-grid/vector-grid.txt b/docs/examples/vector-grid/vector-grid.txt new file mode 100644 index 000000000..90bb8aca7 --- /dev/null +++ b/docs/examples/vector-grid/vector-grid.txt @@ -0,0 +1,311 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | +----------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------+ | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | Random Matrix Generator | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | +----------------------------------------------------------------------------------------------------------------------------------------+ +-----------------/------------------+ | + | / | + | / | + | / | + | / | + | / | + | / | + | / | + | / | + | / | + | / | + | / | + | / | + | / | + | / | + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------/---------------------------------------------------------------------------------------------------------------------------------------------+ + / + / + / + / + / + / + / + / + / + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------/---------------------------------------------------------------------------------------------------------------------------------------------+ + | / | + | / | + | / | + | / | + | / | + | / | + | / | + | / | + | / | + | / | + | / | + | / | + | / | + | / | + | +-----------------------------------------------------------------------------------+ +---------------------------+ +-----------------------------------/----------------------------+ +-----------+ +-----------------------------------------------------------------------------------+ | + | | | | | | / | | | | | | + | | | | | | / | | | | | | + | | | | | | / | | | | | | + | | | | | | / | | | | | | + | | | | | | / | | | | | | + | | | | | | / | | | | | | + | | | | | | / | | | | | | + | | | | | | / | | | | | | + | | | | | | / | | | | | | + | | | | | | / | | | | | | + | | | | | | / | | | | | | + | | | | | | / | | | | | | + | | | | | | / | | | | | | + | | | | | | / | | | | | | + | | | | +------------+ | | / | | | | | | + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | | +-----------++-----------+-----------++-----------+ | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | + | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + | | | 0.62 | 0.15 |-------------zen V|------------- 0.91 || 0.48 | | | | | | | | 0.41 || 0.32 | 0.92 || 0.13 | | | | | | 0.62 | 0.15 |-------------zem Ve-------------- 0.91 | 0.48 | | | + | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | +------------+ | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | +-----------++-----------+-----------++-----------+ | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | + | | | | | | | || | || | | | | | | | + | | | | +---------+ | | | || | || | | | | | | | + | | | | | | | | | || | || | | | | | | | + | | | | | | | | | || | || | | | | | | | + | | | | | | | | | || | || | | | | | | | + | | | | | | | | | || | || | | | | | | | + | | | | | | | | | || | || | | | | | | | + | | | | | | | | | || | || | | | | | | | + | | | | | | | | | || | || | | | | | | | + | | | | | +-+ | | | | || | || | | | | | | | + | | | | | | | | | | | || | || | | | | | | | + | | | | Dot |r|duct | | | 0.74 || 0.15 | 0.53 || 0.21 | | | | | | | + | | | | | | | | | | | || | || | | | | | | | + | | | | | | | | | | | || | || | | | | | | | + | | | | | +-+ | | | | || | || | | | | | | | + | | | | | | | | | || | || | | | | | | | + | | | | | | | | | || | || | | | | | | | + | | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | | | || | || | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | + | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | +---------+ | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | +-----------++-----------+-----------++-----------+ | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | ----------------------- | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | 0.62 | 0.15 |-------------zen V|------------- 0.91 || 0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 |-------------zem Ve-------------- 0.91 | 0.48 | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | 0.97 || 0.45 | 0.11 || 0.05 | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | || | || | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | + | | | | | | | || | || | | | | | | | + | | | | | | | || | || | | | | | | | + | | | | | | | || | || | | | | | | | + | | | | | | | || | || | | | | | | | + | | | | | | | || | || | | | | | | | + | | | | | | | || | || | | | | | | | + | | | | | | +-----------++-----------+-----------++-----------+ | | | | | | + | | | | | | | || | || | | | | | | | + | | | | | | | || | || | | | | | | | + | | | | | | | || | || | | | | | | | + | | | | | | | || | || | | | | | | | + | | | | | | | || | || | | | | | | | + | | | | | | | || | || | | | | | | | + | | | | | | | || | || | | | | | | | + | | | | | | | || | || | | | | | | | + | | | | | | | || | || | | | | | | | + | | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | || | || | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | 0.61 || 0.77 | 0.59 || 0.83 | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | 0.62 | 0.15 || n-s|zen V||tor | 0.91 || 0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 || m-s|zem Ve|tor || 0.91 | 0.48 | | | + | | | | |------------- |------------- || | | | | | | || | || | | | | | | | |------------- -------------- | | | | + | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | +-----------++-----------+-----------++-----------+ | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | | | | || | | || | | | | + | | | | || | || | || | | | | | | | | | | | || | | || | | | | + | | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | + | | | | | | | | | | | | + | | | | | | | | | | | | + | | | | | | | | | | | | + | | | | | | | | | | | | + | | | | | | | | | | | | + | | | | | | | | | | | | + | | | | | | | | | | | | + | | | | | | | | | | | | + | | | | | | | | | | | | + | | | | | | | | | | | | + | | | | | | | | | | | | + | | | | | | | | | | | | + | | | | | | | | | | | | + | | | | | | | | | | | | + | +-----------------------------------------------------------------------------------+ +---------------------------+ +----------------------------------------------------------------+ +-----------+ +-----------------------------------------------------------------------------------+ | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/flow.txt b/docs/flow.txt new file mode 100644 index 000000000..924276a21 --- /dev/null +++ b/docs/flow.txt @@ -0,0 +1,358 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +------------+ + | | + | | + | | + | | + | | + | | + | | + | inputFile | + | | + | | + | | + | | + | | + | | + | | + +------|-----+ + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + +------|-----+ + | | + | | + | | + | | + | | + | | + | | + | d2parser | + | | + | | + | | + | | + | | + | | + | | + +------------+ + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + +----|----+ + | | + | | + | | + | | + | | + | | + | | + | d2ast | + | | + | | + | | + | | + | | + | | + | | + +----|----+ + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + +-------|------+ + | | + | | + | | + | | + | | + | | + | | + | d2compiler | + | | + | | + | | + | | + | | + | | + | | + +--------------+ + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + +-----|------+ + | | + | | + | | + | | + | | + | | + | | + | d2graph | + | | + | | + | | + | | + | | + | | + | | + +-----|------+ + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + +-------------|-------------+ + | | + | | + | | + | | + | | + | | + | | + | d2layouts/d2dagrelayout | + | | + | | + | | + | | + | | + | | + | | + +---------------------------+ + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + +-------|------+ + | | + | | + | | + | | + | | + | | + | | + | d2exporter | + | | + | | + | | + | | + | | + | | + | | + +-------|------+ + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + +-----|------+ + | | + | | + | | + | | + | | + | | + | | + | d2target | + | | + | | + | | + | | + | | + | | + | | + +------------+ + + + + + + + + + + + + + + + + + + + + + + + + + + From 40f8a88f15a6f00583594f86c757cb080ad56adc Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sun, 16 Feb 2025 18:10:31 +0700 Subject: [PATCH 03/11] remove margin --- d2renderers/d2ascii/d2ascii.go | 41 +- docs/examples/chess/dia.txt | 498 +++++---- docs/examples/flipt/output.txt | 292 +++--- docs/examples/japan-grid/japan.txt | 652 ++++++------ docs/examples/twitter/out.txt | 1116 ++++++++++----------- docs/examples/vector-grid/vector-grid.txt | 572 +++++------ docs/flow.txt | 665 ++++++------ 7 files changed, 1779 insertions(+), 2057 deletions(-) diff --git a/d2renderers/d2ascii/d2ascii.go b/d2renderers/d2ascii/d2ascii.go index 1eb3e3ae7..4f8f014cf 100644 --- a/d2renderers/d2ascii/d2ascii.go +++ b/d2renderers/d2ascii/d2ascii.go @@ -62,7 +62,7 @@ func Render(diagram *d2target.Diagram, opts *RenderOpts) ([]byte, error) { } } - return canvas.Bytes(), nil + return canvas.TrimBytes(), nil } // Canvas handles the ASCII grid and drawing operations @@ -269,6 +269,45 @@ func (c *Canvas) Bytes() []byte { return buf.Bytes() } +// TrimBytes removes excess whitespace from all sides of the ASCII output +func (c *Canvas) TrimBytes() []byte { + // Find bounds of content + minX, minY, maxX, maxY := c.w, c.h, 0, 0 + + // Scan for content bounds + for y := 0; y < c.h; y++ { + for x := 0; x < c.w; x++ { + if c.grid[y][x] != ' ' { + if x < minX { + minX = x + } + if x > maxX { + maxX = x + } + if y < minY { + minY = y + } + if y > maxY { + maxY = y + } + } + } + } + + // If no content found, return empty + if minX > maxX || minY > maxY { + return []byte{} + } + + // Create trimmed output + var buf bytes.Buffer + for y := minY; y <= maxY; y++ { + buf.WriteString(string(c.grid[y][minX : maxX+1])) + buf.WriteByte('\n') + } + return buf.Bytes() +} + func min(a, b int) int { if a < b { return a diff --git a/docs/examples/chess/dia.txt b/docs/examples/chess/dia.txt index ee7e5298b..b040be722 100644 --- a/docs/examples/chess/dia.txt +++ b/docs/examples/chess/dia.txt @@ -1,274 +1,224 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - +-----------------+ - | | - | | - | | - | | - | | - | | - | | - | Hans Niemann | - | | - | | - | | - | | - | | - / | - //| | - / +-----/------/----/ - // / / / - // / / / - / / / // - // / / / - / / / / - // / / / - / / / / - // / / / - // / / // - / / / / - // / / / - / / / / - / / / / - / / / / - / / / / - / / / / - / / / / - / / / / - | / / / - | / / / - | / / / - | / / / - | / / / - | / / / - | / / / - | / / / - | / / / - | / / / - | / / / - | / / / - | / / / - | / / / - | / / / - | / / / - | / / / - +-|----------------------/---------------------+| | - | / || | - | / || | - | / || | - | / || | - | / || | - | / || | - | +--------------/---+ || | - | | | || | - | | | || | - | | | || | - | | | || | - | | | || | - | | | || | - | | | || | - | | Magnus Carlsen | || | - | | | || | - | | | || | - | | | || | - | | | || | - | | | || | - | | | || | - | | | || | - | +---------|--------+ || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | +----------|----------+ || | - | | | || | - | | | || | - | | | || | - | | | || | - | | | || | - | | | || | - | | | || | - | | Play Magnus Group | || | - | | | || | - | | | || | - | | | || | - | | | || | - | | | || | - | | | || | - | | | || | - | +----------|----------+ || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | | || | - | / |/ | - | / / | - | / / | - | / defendants /| | - | / /| | - | / / | | - | / / | | - | / / | | - | / / | | - | / / | | - | / / | | - | / / | | - | / / | | - | / / | | - | / / | | - | / / | | - | / / | | - | / / | | - | / / | | - | +---/----------/ | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | Chess.com | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | +-------|------+ | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | / - | / | / - | / | / - | / | / - | / | / - | / | / - | / | / - | / | / - | / | / - | / | // - | / | / - | / | / - | / | / - | / | / - | / | // - | / | / - | / | / - | / |/ - | / // - | +-------/------------+ / | - | | |/ | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | Hikaru Nakamura | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | +--------------------+ | - | | - | | - | | - | | - | | - | | - | | - +----------------------------------------------+ - - - - - - - - - - - - - - - - - - - - - - - - - + +-----------------+ + | | + | | + | | + | | + | | + | | + | | + | Hans Niemann | + | | + | | + | | + | | + | | + / | + //| | + / +-----|------|----/ + // | | / + // | | / + / | | // + // | | / + / | | / + // | | / + / | | / + // | | / + // | | // + / | | / + // | | / + | | | / + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | ++-|----------------------|---------------------+| | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| +--------------|---+ || | +| | | || | +| | | || | +| | | || | +| | | || | +| | | || | +| | | || | +| | | || | +| | Magnus Carlsen | || | +| | | || | +| | | || | +| | | || | +| | | || | +| | | || | +| | | || | +| | | || | +| +---------|--------+ || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| +----------|----------+ || | +| | | || | +| | | || | +| | | || | +| | | || | +| | | || | +| | | || | +| | | || | +| | Play Magnus Group | || | +| | | || | +| | | || | +| | | || | +| | | || | +| | | || | +| | | || | +| | | || | +| +----------|----------+ || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | | | +| | | | +| | defendants || | +| | || | +| | | | | +| | | | | +| | | | | +| | / | | +| | / | | +| | / | | +| | / | | +| | / | | +| | / | | +| | / | | +| | / | | +| | / | | +| | / | | +| | / | | +| +---|----------/ | | +| | | | | +| | | | | +| | | | | +| | | | | +| | | | | +| | | | | +| | | | | +| | Chess.com | | | +| | | | | +| | | | | +| | | | | +| | | | | +| | | | | +| | | | | +| | | | | +| +-------|------+ | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | / +| | | // +| | | / +| | | / +| | | / +| | | / +| | | // +| | | / +| | | / +| | |/ +| | // +| +-------|------------+ / | +| | |/ | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | Hikaru Nakamura | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| +--------------------+ | +| | +| | +| | +| | +| | +| | +| | ++----------------------------------------------+ diff --git a/docs/examples/flipt/output.txt b/docs/examples/flipt/output.txt index f8cd2ad3c..61978a9a7 100644 --- a/docs/examples/flipt/output.txt +++ b/docs/examples/flipt/output.txt @@ -1,176 +1,116 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +--------------------------------------------------------+ - | | - | | - | | - | | - | | - | | - | +-------------------------------------------------+ | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | +----+ +----+ +----+ +----+ | | - | | | | | | | | | | | | - | | | | | | | | | | | | - | | | | | | | | | | | | +--------------------------------+ - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | +----+ +----+ +----+ +----+ | | | +-------+ | - | | | | | | | | - | | | | | | | | - | | | | | | | | - | | | | | | | | - +------------------------------------------------------------------+ | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | | | | | | ------ | | - | | | | +----+ +----+ +----+ +----+ | | | // | | | - | | | | | | | | | | | | | | | / | | | - | | | | | | | | | | | | | | | / | | | - | +----------+ | | | | | | | | | | | | | | / | | | - | | | | | | | | | | | | | | | | | / | | | - | | | | | | | | | | | | | | | | | / | | | - | | | | | | | | | | | | | | | | | / | | | - | | | | | | | | | | | | | | | | | / +-------+ | - | | | | | | | | | | | | | | | | | / | - | | | | | | | | | | | | | | | | | / | - | | | | | | +----+ +----+ +----+ +----+ | | | +----+/ | - | ------ linked -----/ | | | | | | | / | - | // | | // | | | | | | | | | - | / | | / | | | | | | | | | - | / | | / +-----------+ | | | | | | | | | - | / | | / | | | | | Test -------------------------- | Release | - | / | | / | | | | | | | | | | | - | / | | / | | | | | | | | | | | - | / | | /| | | | | | | | | | | - | +----------/ +----------+ / | | | | | | | | | | - | | | | | | | | +----+ +----+ +----+ +----+ | | | +----/ | - | | | | | | | | | | | | | | | | | | | / | - | | | | | | | | | | | | | | | | | | | / | - | | | | | | | | | | | | | | | | | | | / +-------+ | - | | | | | | | | | | | | | | | | | | | / | | | - | | | | | | | | | | | | | | | | | | | / | | | - | | | Build | | | | | | | | | | | | | | | | / | | | - | | source | | -------------------------- | | | | | | | | | | | / | | | - | | | | | | | | | | | | | | | | | | | / | | | - | | | | | | | | | | | | | | | | | | | / | | | - | | | | | | | | +----+ +----+ +----+ +----+ | | | / | | | - | | | | | | | | | | | / | | | - | | | | | | | | | | | ------ | | - | | | | | | | | | | | | | | - | | / +----------+ | | | | | | | | | | | - | +----------+/ | | / | | | | | | | | | | - | / | | /| | | | | | | | | | | - | / | | / | | | | | | | | | | | - | / | | / | | | | | | | | | | | - | / | | / +-----------+ | | | | | | | | | - | / | | / | | | +----+ +----+ +----+ +----+ | | | +-------+ | - | / | | / | | | | | | | | | | | | | | | - | // | assets | // | | | | | | | | | | | | | | | - | ------ -----/ | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | +--------------------------------+ - | | | | | | | | | | | | | | | | - | +----------+ | | | +----+ +----+ +----+ +----+ | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - +------------------------------------------------------------------+ | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | +-------------------------------------------------+ | - | | - | | - | | - | | - | | - | | - | | - +--------------------------------------------------------+ - - - - - - - - - - - - - - - - - - - - - - - - - + +--------------------------------------------------------+ + | | + | | + | | + | | + | | + | | + | +-------------------------------------------------+ | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | +----+ +----+ +----+ +----+ | | + | | | | | | | | | | | | + | | | | | | | | | | | | + | | | | | | | | | | | | +--------------------------------+ + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | +----+ +----+ +----+ +----+ | | | +-------+ | + | | | | | | | | + | | | | | | | | + | | | | | | | | + | | | | | | | | ++------------------------------------------------------------------+ | | | | | | | | +| | | | | | | | | | +| | | | | | | | | | +| | | | | | | | | | +| | | | | | | ------ | | +| | | | +----+ +----+ +----+ +----+ | | | // | | | +| | | | | | | | | | | | | | | / | | | +| | | | | | | | | | | | | | | | | | | +| +----------+ | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | +-------+ | +| | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | +| | | | | | +----+ +----+ +----+ +----+ | | | +----+| | +| ------ linked -----/ | | | | | | | | | +| // | | // | | | | | | | | | +| / | | | | | | | | | | | | +| | | | | +-----------+ | | | | | | | | | +| | | | | | | | | | Test -------------------------- | Release | +| | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | +| | | | || | | | | | | | | | | +| +----------| +----------+ | | | | | | | | | | | +| | | | | | | | +----+ +----+ +----+ +----+ | | | +----| | +| | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | +-------+ | +| | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | | +| | | Build | | | | | | | | | | | | | | | | | | | | +| | source | | -------------------------- | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | / | | | +| | | | | | | | +----+ +----+ +----+ +----+ | | | / | | | +| | | | | | | | | | | / | | | +| | | | | | | | | | | ------ | | +| | | | | | | | | | | | | | +| | | +----------+ | | | | | | | | | | | +| +----------+| | | | | | | | | | | | | | +| | | | || | | | | | | | | | | +| | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | +| | | | | +-----------+ | | | | | | | | | +| | | | | | | | +----+ +----+ +----+ +----+ | | | +-------+ | +| / | | | | | | | | | | | | | | | | | | +| // | assets | // | | | | | | | | | | | | | | | +| ------ -----/ | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | +--------------------------------+ +| | | | | | | | | | | | | | | | +| +----------+ | | | +----+ +----+ +----+ +----+ | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | ++------------------------------------------------------------------+ | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | +-------------------------------------------------+ | + | | + | | + | | + | | + | | + | | + | | + +--------------------------------------------------------+ diff --git a/docs/examples/japan-grid/japan.txt b/docs/examples/japan-grid/japan.txt index b71177c36..16e72c339 100644 --- a/docs/examples/japan-grid/japan.txt +++ b/docs/examples/japan-grid/japan.txt @@ -1,351 +1,301 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | 北 海 道 | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | 青 森 | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | 秋 田 | 岩 手 | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | 石 川 | || 新 潟 | 山 形 | 宮 城 | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | 福 井 | 富 山 || 群 馬 | 栃 木 | 福 島 | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | 山 口 | 島 根 || 鳥 取 | 兵 庫 || 京 都 | 滋 賀 | 長 野 || 山 梨 | 埼 玉 | 茨 城 | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | 広 島 || 岡 山 | 大 阪 || 奈 良 | 岐 阜 | 愛 知 || 静 岡 | TOKYO | 千 葉 | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | 長 崎 || 佐 賀 | 福 岡 | || | || 和 歌 山 | 三 重 | || | 神 奈 川 | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || 熊 本 | 大 分 | || 愛 媛 | 香 川 || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || 鹿 児 島 | 宮 崎 | || 高 知 | 徳 島 || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | 沖 縄 || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - | || | | || | || | | || | | | - +-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ - - - - - - - - - - - - - - - - - - - - - - - - - ++-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | 北 海 道 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | 青 森 | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | 秋 田 | 岩 手 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | 石 川 | || 新 潟 | 山 形 | 宮 城 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | 福 井 | 富 山 || 群 馬 | 栃 木 | 福 島 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | 山 口 | 島 根 || 鳥 取 | 兵 庫 || 京 都 | 滋 賀 | 長 野 || 山 梨 | 埼 玉 | 茨 城 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | 広 島 || 岡 山 | 大 阪 || 奈 良 | 岐 阜 | 愛 知 || 静 岡 | TOKYO | 千 葉 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| 長 崎 || 佐 賀 | 福 岡 | || | || 和 歌 山 | 三 重 | || | 神 奈 川 | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || 熊 本 | 大 分 | || 愛 媛 | 香 川 || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || 鹿 児 島 | 宮 崎 | || 高 知 | 徳 島 || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| 沖 縄 || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ diff --git a/docs/examples/twitter/out.txt b/docs/examples/twitter/out.txt index 39607ff27..8118e85e2 100644 --- a/docs/examples/twitter/out.txt +++ b/docs/examples/twitter/out.txt @@ -1,586 +1,530 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - +---------------+ +---------------+ +---------------+ - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | Android | | Iphone | | Web | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - +---------------+ +---------------+ +---------------+ - - - - - - | | | - | | | - | | | - | | | - | | | - / | / - / | / - / | / - / | / - / | / - / | / - / | / - / | / - / | / - / | / - / | / - / | / - / | / - / | / - / +-------|-------+ / - / | | / - / | | / - / | | / - / | | / - /| |/ - / / - | | - | | - | | - | | - | | - | | - | | - | | - | | - Twitter Frontend - | | - | | - // | - // | | - /// | / - /// | |// - // | | / - /// | | / - // | | // - /// | | / - /// | | / - // | | // - /// | | / - // | | / - /// | | // - // +---------------+ / - /// / - /// // - // / - /// / - // // - /// / - /// / - // // - // / - / / - / / - / / - / / - / / - / / - / / - / / - / / - / / - / / - / / - / / - / / - / / - / / - / / - / / - / / - / / - / / - / / - / / - / | - | | - +-----------------|---------------------------------------------------------------------------------------------------------------------------|----------+ - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | +-------|-------+ | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | +-------------|--------------+ | | | - | | | | | | - | | | | | | - | | | | | | - | | | +-------------------------------------------------------------+ | | | - | | | | | | | | - | | | | | | | | - | | | | | | | | - | | TLS-API (being deprecated) | | ## Tweet/user content hydration, visibility filtering | | GraphQL | | - | | | | | Federated Strato Column - | | | | | | | | - | | | | | // | | - | | | | | /// | | | - | | | +-------------------------------------------------------------+ // | | | - | | | /// | / | - | | | /// | |//| - | +----------------------------+ /// | | / - | | // | | |// - | | /// | | | // - | | /// | | | / - | | /// | | | // - | | // | | | / - | | /// | | | // - | | /// | | | / - | | /// | | | // - | | /// +---------------+ | / - | | // | // - | | /// | // - | | /// | / - | | /// | // - | | // | / - | | /// | // - | | // | / - | | // | / - | / // | / - | / // | / - +-------------------/------------------------------------------------/-----------------------------------------------------------------------------------+ / - / // / - / // / - / // / - / | / - / | / - / | / - / | / - / | / - / | / - / | / - / // / - / //// / - / /// / - / /// / - / //// / - / /// / - // /// | - /////// | - /// //// | - //// //// | - /// /// | - /// //// | - //// //// | - /// /// | - //// //// | - /// //// | - /// //// | - //// /// | - /// //// | - /// //// | - //// +-----------------------------------------//----------------------------------------------------------------------------------------------------|--+ - |/ | | - | | | - | | | - | | | - | | | - | | | - | | | - | | +----------------------------------+ | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - +-------|-------+ | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | ## **Timeline mixer** | | - | | | - Inject ads, who-to-follow, onboarding | - | Home mixer | | | - Conversation module | | - | | | | - Cursoring,pagination | | - | | | | - Tweat deduplication | | - | | | | - Served data logging | | - /| | | | | | - // | | | | | | - // /| | | | | | - // / | | | | | | - // // +---------------/ | | | | - // / / / / / / | | | | - // / / / / / / | | | | - // // / / / / / | | | | - // / / / / / / | | | | - // / / / / / / | | | | - // // / / / / / | | | | - // / / / / / / | | | | - // / / / / / / | | | | - // // / / / / / | | | | - // / / / / / / | | | | - // / / / / / / | | | | - // // / / / / / | | | | - // / / / / / / | | | | - // / / / / / / | | | | - // // / / / / / | | | | - // / / / / / / | +----------------------------------+ | - // / / / / / / | | - // // / / / / / | | - // / / / / / / | | - // / / / / / / | | - // // / / / / / | | - // / / / / / / | | - / / / | / / / +--------------------------------------------------------------------------------------------------------------------------------------------------+ - / / / | / / / | | | | | | - / / / | / / / | | | | | | - / / / | / / / | | | | | | - / / / | / / / | | | | | | - / / / | / / / | | | | | | - / / / | / / / | | | | | | - / / / | / / / | | | | | | - / / / | / / / | | | | | | - / / / | / / / | | | | | | - / / / | / / / | | | | | | - / / / | / / / | | | | | | - / / / | / / / | | | | | | - / / / | / / / | | | | | | - / / / | / / / | | | | | | - / / / | / / / | | | | | | - / / / | / / / | | | | | | - / / / | / / / / / / | | | - / / / | / / / / / / | | | - / / / | / / / / / / | | | - / / / | / / / / / / | | | - / / / | / / / / / / | | | - / / / | / / / / / / | | | - / / / | / / / / / / | | | - / / / | / / / / / / | | | - | | | | / / / / / / | | | - | | | | / / / / / / | | | - | | | | / / // // / / | | | - | | | | / / / / / | | | - | | | | / / / / / / | | | - | | | | / / / / / / | | | - | | | | / / // / / / | | | - | | | | / / / // / / | | | - | | | | / / / / / / | | | - | | | | / / // / / / | | | - | | | | / / / / / | | | - | | | | / / / /// / | | | +--------------+ - | | | | / / / // / | | | | | - | | | | / // / / / / | | | | | - | | | | / / / / / +------------+ | +---------------+ +-------------------+ | | - | | | | / / / / / | | | | | | | | | - +--------------+ +---------------+ +--------------+ +--------------+ +-------------------+ +----------------+ // | | +------------+ | | | | | | - | | | | | | | | | | | | /| | | | | | | | | | - | | | | | | | | | | | | / | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | Timeline | | | | Onboarding | | People discovery | | Fetch | - | Tweety Pie | | Social graph | | Gizmoduck | | Manhattan | | Timeline Service | | Home Ranker | | Scorer | | Ad mixer | | service | | service | | | - | | | | | | | | | | | | | | | | | | | | | // | - | | | | | | | | | | | | | | | | | | | | /// | - | | | | | | | | | | | | | | | | | | | | ///| | - | | | | | | | | | | | |// | | | | | | | |//// | | - | | | | | | | | | | | | // | | | | | | | /// | | - | | | | | | | | | | | | // | | | | | | | /// | | | - | | | | | | | | | | | | // | | | | | | /// | | | - +--------------+ +---------------+ +--------------+ +--------------+ +-------------------+ +------/---------+ |/// | +------------+ | | | /// | | | - / | // | | | | //// | | | - / +-----//-----+ +---------------+ +-///---------------+ | | - / // /// | | - / /// /// +--------/-----+ - / // /// / - / // //// / - / /// /// / - / // /// / - / // /// / - / // /// / - / /// //// / - / // /// / - / // /// / - / // // / - / // / / - / //// / | - / /// / | - / //// // | - / /// / | - / //// / | - / /// / | - / //// / | - / /// / | - / //// / | - / /// / | - / //// / | - / //// // | - / /// / | - / //// / | - //// / | - //// / | - /// / / | - //// / / | - /// / / | - //// / // | - /// / / | - //// / / | - |/ / / | - | / // | - | / // | - | / /// | - | / /// | - | / // | - | +-------/----------------------------------------///---------------------------------------------------------------------+ | - | | / // | | - | | / /// | - | | / /// | +----------------+ - | | / // | | | - | | / /// | | | - | | / /// | | | - | | / // | | | - +----------------+ | +-----------+ /// +------------+ +--------+ +---------+ +----------------+ | | | - | | | | | // | | | | | | | | | | | - | | | | | /// | | | | | | | | | | | - | | | | | /// | | | | | | | | | | | - | | | | | // | | | | | | | | | | | - | | | | // | | | | | | | | | | | - | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | Feature | - | Home Scorer | | | CrMixer | | EarlyBird | | Utag | | Space | | Communities | | | | - | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | / | - | | | | | | | | | | | | | | |// | - | | | | | | | | | | | | | | // | - | | | | | | | | | | | | | | / | | - | | | | | | | | | | | | | | // | / | - +---/--//---/----+ | +-----------+ +------------+ +--------+ +---------+ +----------------+ | // |/ | - / // / | | / / | - / // / | | // /| | - / // / | | / / | | - / / / / | | // / +--/--------/----+ - / / / / | | // / / / - / / / / | | / / / / - / // / +------------------------------------------------------------------------------------------------------------------------+ // / / / - / // / // / / / - / // / / / / / - / / / / // / / / - / / / / // / / / - / / / / / / / / - / | / / / / / / - / | / / / / / | - / | / // / / / | - / | / / / / / | - / | // / / / / | - / | / // / / / | - / | / / / / / | - / | / / / / / | - /| / / / / / | - / / // / / / | - |/ / / / / / | - | / / / / / / | - | / // // / / / | - | / / / / / / | - | / / / / / / | - | / / / / / / | - | / / // / / / | - | / / / / / / | - | / / / / / / | - | / / / / / / | - | / / // / / / | - | / // / / / / | - | / / / / / / | - | / / // / / / | - | / / / / / / | - | /// /// /// / / / | - | //// ///// ///// / / / | - | ///// //// ////// / / / | - | //// ///// ///// / / / | - | //// ///// ///// / / / | - | ///// ///// ///// / / / | - | //// //// ///// / / / | - | ///// ///// ////// / / / | - | //// ///// ///// / / / | - +-------|-------+ //// ///// ///// / / / | - | | ///// //// ///// / / / | - | | //// ///// ////// / / / - | | ///// ///// ///// / / / - | | //// //// ///// / / / +----------------+ - | | ///// ///// ///// / +--------------/--+ / | | - | | //// ///// ///// / | | / | | - | | //// ///// ////// / | | / | | - | | ///// //// +---------///// | | +--------/-----+ | | - | | //// ///// | / ///// | | | | | - | | ///// ///// | | ///// | | | | | - | | //// |///// | | ///// | | | | | - | | //// | ////| | ////// | | | | - | | ///// | ///// | |///// | | | | - | | //// | | /// | /// | | | - | | /// | | | | | | | - Prediction Service | ...etc | | Memcache | | Manhattan | | Scoring | - | | | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | +---------+ | | +--------------+ | | - | | | | | | - | | | | | | - | | | | | | - | | +-----------------+ | | - | | +-------|--------+ - | | | - | | | - +---------------+ | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - +-------|-------+ - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - Prediction Service - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - +---------------+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +---------------+ +---------------+ +---------------+ + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | Android | | Iphone | | Web | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + +---------------+ +---------------+ +---------------+ + + + + + + | | | + | | | + | | | + | | | + | | | + | | | + | | | + | | | + | | | + | | | + | | | + | | | + | | | + | | | + | | | + | | | + | | | + | | | + | | | + | +-------|-------+ | + | | | | + | | | | + | | | | + | | | | + || || + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + Twitter Frontend + | | + | | + // | + // | | + /// | / + /// | |// + // | | / + /// | | / + // | | // + /// | | / + /// | | / + // | | // + /// | | / + // | | / + /// | | // + // +---------------+ / + /// / + /// // + // / + /// / + // // + /// / + /// / + // // + |/ / + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + +-----------------|---------------------------------------------------------------------------------------------------------------------------|----------+ + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | +-------|-------+ | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | +-------------|--------------+ | | | + | | | | | | + | | | | | | + | | | | | | + | | | +-------------------------------------------------------------+ | | | + | | | | | | | | + | | | | | | | | + | | | | | | | | + | | TLS-API (being deprecated) | | ## Tweet/user content hydration, visibility filtering | | GraphQL | | + | | | | | Federated Strato Column + | | | | | | | | + | | | | | // | | + | | | | | /// | | | + | | | +-------------------------------------------------------------+ // | | | + | | | /// | / | + | | | /// | |//| + | +----------------------------+ /// | | / + | | // | | |// + | | /// | | | // + | | /// | | | / + | | /// | | | // + | | // | | | / + | | /// | | | // + | | /// | | | / + | | /// | | | // + | | /// +---------------+ | / + | | // | // + | | /// | // + | | /// | / + | | /// | // + | | // | / + | | /// | // + | | // | | + | | // | | + | | // | | + | | // | | + +-------------------|------------------------------------------------/-----------------------------------------------------------------------------------+ | + | // | + | // | + | // | + | | | + | | | + | | | + | | | + | | | + | | | + | | | + | // | + | //// | + | /// | + | /// | + | //// | + | /// | + |/ /// | + /////// | + /// //// | + //// //// | + /// /// | + /// //// | + //// //// | + /// /// | + //// //// | + /// //// | + /// //// | + //// /// | + /// //// | + /// //// | + //// +-----------------------------------------//----------------------------------------------------------------------------------------------------|--+ + |/ | | + | | | + | | | + | | | + | | | + | | | + | | | + | | +----------------------------------+ | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + +-------|-------+ | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | ## **Timeline mixer** | | + | | | - Inject ads, who-to-follow, onboarding | + | Home mixer | | | - Conversation module | | + | | | | - Cursoring,pagination | | + | | | | - Tweat deduplication | | + | | | | - Served data logging | | + /| | | | | | + // | | | | | | + // /| | | | | | + // / | | | | | | + // // +---------------/ | | | | + // / | | | | / | | | | + // / | | | | / | | | | + // // | | | | / | | | | + // / | | | | / | | | | + // / | | | | / | | | | + // // | | | | / | | | | + // / | | | | / | | | | + // / | | | | / | | | | + // // | | | | / | | | | + // / | | | | / | | | | + // / | | | | / | | | | + // // | | | | / | | | | + // / | | | | / | | | | + // / | | | | / | | | | + // // | | | | / | | | | + // / | | | | / | +----------------------------------+ | + // / | | | | / | | + // // | | | | / | | + // / | | | | / | | + // / | | | | / | | + // // | | | | / | | + |/ / | | | | / | | + | | | | | | | +--------------------------------------------------------------------------------------------------------------------------------------------------+ + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | | | | | | / / | | | | | + | | | | | | / / | | | | | + | | | | | | // // | | | | | + | | | | | | / | | | | | + | | | | | | / / | | | | | + | | | | | | / / | | | | | + | | | | | | // / | | | | | + | | | | | | / // | | | | | + | | | | | | / / | | | | | + | | | | | | // / | | | | | + | | | | | | / | | | | | + | | | | | / | //| | | | | +--------------+ + | | | | | / | |/ | | | | | | + | | | | | // | | / | | | | | | + | | | | | / | | / +------------+ | +---------------+ +-------------------+ | | + | | | | | / | | / | | | | | | | | | ++--------------+ +---------------+ +--------------+ +--------------+ +-------------------+ +----------------+ // | | +------------+ | | | | | | +| | | | | | | | | | | | /| | | | | | | | | | +| | | | | | | | | | | | / | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | Timeline | | | | Onboarding | | People discovery | | Fetch | +| Tweety Pie | | Social graph | | Gizmoduck | | Manhattan | | Timeline Service | | Home Ranker | | Scorer | | Ad mixer | | service | | service | | | +| | | | | | | | | | | | | | | | | | | | | // | +| | | | | | | | | | | | | | | | | | | | /// | +| | | | | | | | | | | | | | | | | | | | ///| | +| | | | | | | | | | | |// | | | | | | | |//// | | +| | | | | | | | | | | | // | | | | | | | /// | | +| | | | | | | | | | | | // | | | | | | | /// | | | +| | | | | | | | | | | | // | | | | | | /// | | | ++--------------+ +---------------+ +--------------+ +--------------+ +-------------------+ +------|---------+ |/// | +------------+ | | | /// | | | + | | // | | | | //// | | | + | +-----//-----+ +---------------+ +-///---------------+ | | + | // /// | | + | /// /// +--------|-----+ + | // /// | + | // //// | + | /// /// | + | // /// | + | // /// | + | // /// | + | /// //// | + | // /// | + | // /// | + | // // | + | // / | + | //// / | + | /// / | + | //// // | + | /// / | + | //// / | + | /// / | + | //// / | + | /// / | + | //// / | + | /// / | + | //// / | + | //// // | + | /// / | + | //// / | + |/// / | + ///| / | + /// | / | + //// | / | + /// | / | + //// | // | + /// | / | + //// | / | + |/ | / | + | | // | + | | // | + | | /// | + | | /// | + | | // | + | +-------|----------------------------------------///---------------------------------------------------------------------+ | + | | | // | | + | | | /// | + | | | /// | +----------------+ + | | | // | | | + | | | /// | | | + | | | /// | | | + | | | // | | | + +----------------+ | +-----------+ /// +------------+ +--------+ +---------+ +----------------+ | | | + | | | | | // | | | | | | | | | | | + | | | | | /// | | | | | | | | | | | + | | | | | /// | | | | | | | | | | | + | | | | | // | | | | | | | | | | | + | | | | // | | | | | | | | | | | + | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | Feature | + | Home Scorer | | | CrMixer | | EarlyBird | | Utag | | Space | | Communities | | | | + | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | / | + | | | | | | | | | | | | | | |// | + | | | | | | | | | | | | | | // | + | | | | | | | | | | | | | | / | | + | | | | | | | | | | | | | | // | / | + +---|--||---|----+ | +-----------+ +------------+ +--------+ +---------+ +----------------+ | // |/ | + | || | | | / / | + | || | | | // /| | + | || | | | / / | | + | | | | | | // / +--|--------|----+ + | | | | | | // / | | + | | | | | | / / | | + | || | +------------------------------------------------------------------------------------------------------------------------+ // / | | + | || | // / | | + | || | / / | | + | | | | // / | | + | | | | // / | | + | | | | | / | | + / | / / | | | | + / | / / | | | | + / | / // | | | | + / | / / | | | | + / | // / | | | | + / | / // | | | | + / | / / | | | | + / | / / | | | | + /| / / | | | | + / / // | | | | + |/ / / | | | | + | / / / | | | | + | / // // | | | | + | / / / | | | | + | / / / | | | | + | / / / | | | | + | / / // | | | | + | / / / | | | | + | / / / | | | | + | / / / | | | | + | / / // | | | | + | / // / | | | | + | / / / | | | | + | / / // | | | | + | / / / | | | | + | /// /// /// | | | | + | //// ///// ///// | | | | + | ///// //// ////// | | | | + | //// ///// ///// | | | | + | //// ///// ///// | | | | + | ///// ///// ///// | | | | + | //// //// ///// | | | | + | ///// ///// ////// | | | | + | //// ///// ///// | | | | + +-------|-------+ //// ///// ///// | | | | + | | ///// //// ///// | | | | + | | //// ///// ////// | | | + | | ///// ///// ///// | | | + | | //// //// ///// | | | +----------------+ + | | ///// ///// ///// | +--------------|--+ | | | + | | //// ///// ///// | | | | | | + | | //// ///// ////// | | | | | | + | | ///// //// +---------/|/// | | +--------|-----+ | | + | | //// ///// | | ///// | | | | | + | | ///// ///// | | ///// | | | | | + | | //// |///// | | ///// | | | | | + | | //// | ////| | ////// | | | | + | | ///// | ///// | |///// | | | | + | | //// | | /// | /// | | | + | | /// | | | | | | | + Prediction Service | ...etc | | Memcache | | Manhattan | | Scoring | + | | | | | | | | | | + | | | | | | | | | | + | | | | | | | | | | + | | | | | | | | | | + | | | | | | | | | | + | | | | | | | | | | + | | | | | | | | | | + | | +---------+ | | +--------------+ | | + | | | | | | + | | | | | | + | | | | | | + | | +-----------------+ | | + | | +-------|--------+ + | | | + | | | + +---------------+ | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + +-------|-------+ + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + Prediction Service + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + +---------------+ diff --git a/docs/examples/vector-grid/vector-grid.txt b/docs/examples/vector-grid/vector-grid.txt index 90bb8aca7..50bd9979b 100644 --- a/docs/examples/vector-grid/vector-grid.txt +++ b/docs/examples/vector-grid/vector-grid.txt @@ -1,311 +1,261 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | +----------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------+ | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | Random Matrix Generator | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | +----------------------------------------------------------------------------------------------------------------------------------------+ +-----------------/------------------+ | - | / | - | / | - | / | - | / | - | / | - | / | - | / | - | / | - | / | - | / | - | / | - | / | - | / | - | / | - +----------------------------------------------------------------------------------------------------------------------------------------------------------------------/---------------------------------------------------------------------------------------------------------------------------------------------+ - / - / - / - / - / - / - / - / - / - +----------------------------------------------------------------------------------------------------------------------------------------------------------------------/---------------------------------------------------------------------------------------------------------------------------------------------+ - | / | - | / | - | / | - | / | - | / | - | / | - | / | - | / | - | / | - | / | - | / | - | / | - | / | - | / | - | +-----------------------------------------------------------------------------------+ +---------------------------+ +-----------------------------------/----------------------------+ +-----------+ +-----------------------------------------------------------------------------------+ | - | | | | | | / | | | | | | - | | | | | | / | | | | | | - | | | | | | / | | | | | | - | | | | | | / | | | | | | - | | | | | | / | | | | | | - | | | | | | / | | | | | | - | | | | | | / | | | | | | - | | | | | | / | | | | | | - | | | | | | / | | | | | | - | | | | | | / | | | | | | - | | | | | | / | | | | | | - | | | | | | / | | | | | | - | | | | | | / | | | | | | - | | | | | | / | | | | | | - | | | | +------------+ | | / | | | | | | - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | | +-----------++-----------+-----------++-----------+ | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | - | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | - | | | 0.62 | 0.15 |-------------zen V|------------- 0.91 || 0.48 | | | | | | | | 0.41 || 0.32 | 0.92 || 0.13 | | | | | | 0.62 | 0.15 |-------------zem Ve-------------- 0.91 | 0.48 | | | - | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | +------------+ | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | +-----------++-----------+-----------++-----------+ | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | - | | | | | | | || | || | | | | | | | - | | | | +---------+ | | | || | || | | | | | | | - | | | | | | | | | || | || | | | | | | | - | | | | | | | | | || | || | | | | | | | - | | | | | | | | | || | || | | | | | | | - | | | | | | | | | || | || | | | | | | | - | | | | | | | | | || | || | | | | | | | - | | | | | | | | | || | || | | | | | | | - | | | | | | | | | || | || | | | | | | | - | | | | | +-+ | | | | || | || | | | | | | | - | | | | | | | | | | | || | || | | | | | | | - | | | | Dot |r|duct | | | 0.74 || 0.15 | 0.53 || 0.21 | | | | | | | - | | | | | | | | | | | || | || | | | | | | | - | | | | | | | | | | | || | || | | | | | | | - | | | | | +-+ | | | | || | || | | | | | | | - | | | | | | | | | || | || | | | | | | | - | | | | | | | | | || | || | | | | | | | - | | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | | | || | || | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | - | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | +---------+ | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | +-----------++-----------+-----------++-----------+ | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | ----------------------- | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | 0.62 | 0.15 |-------------zen V|------------- 0.91 || 0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 |-------------zem Ve-------------- 0.91 | 0.48 | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | 0.97 || 0.45 | 0.11 || 0.05 | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | || | || | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | - | | | | | | | || | || | | | | | | | - | | | | | | | || | || | | | | | | | - | | | | | | | || | || | | | | | | | - | | | | | | | || | || | | | | | | | - | | | | | | | || | || | | | | | | | - | | | | | | | || | || | | | | | | | - | | | | | | +-----------++-----------+-----------++-----------+ | | | | | | - | | | | | | | || | || | | | | | | | - | | | | | | | || | || | | | | | | | - | | | | | | | || | || | | | | | | | - | | | | | | | || | || | | | | | | | - | | | | | | | || | || | | | | | | | - | | | | | | | || | || | | | | | | | - | | | | | | | || | || | | | | | | | - | | | | | | | || | || | | | | | | | - | | | | | | | || | || | | | | | | | - | | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | || | || | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | 0.61 || 0.77 | 0.59 || 0.83 | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | 0.62 | 0.15 || n-s|zen V||tor | 0.91 || 0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 || m-s|zem Ve|tor || 0.91 | 0.48 | | | - | | | | |------------- |------------- || | | | | | | || | || | | | | | | | |------------- -------------- | | | | - | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | +-----------++-----------+-----------++-----------+ | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | | | | || | | || | | | | - | | | | || | || | || | | | | | | | | | | | || | | || | | | | - | | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | - | | | | | | | | | | | | - | | | | | | | | | | | | - | | | | | | | | | | | | - | | | | | | | | | | | | - | | | | | | | | | | | | - | | | | | | | | | | | | - | | | | | | | | | | | | - | | | | | | | | | | | | - | | | | | | | | | | | | - | | | | | | | | | | | | - | | | | | | | | | | | | - | | | | | | | | | | | | - | | | | | | | | | | | | - | | | | | | | | | | | | - | +-----------------------------------------------------------------------------------+ +---------------------------+ +----------------------------------------------------------------+ +-----------+ +-----------------------------------------------------------------------------------+ | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - - - - - - - - - - - - - - - - - - - - - - - - ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| +----------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------+ | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | Random Matrix Generator | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| +----------------------------------------------------------------------------------------------------------------------------------------+ +-----------------|------------------+ | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------+ + | + | + | + | + | + | + | + | + | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------+ +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| +-----------------------------------------------------------------------------------+ +---------------------------+ +-----------------------------------|----------------------------+ +-----------+ +-----------------------------------------------------------------------------------+ | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | +------------+ | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | | +-----------++-----------+-----------++-----------+ | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | 0.62 | 0.15 |-------------zen V|------------- 0.91 || 0.48 | | | | | | | | 0.41 || 0.32 | 0.92 || 0.13 | | | | | | 0.62 | 0.15 |-------------zem Ve-------------- 0.91 | 0.48 | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | +------------+ | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | +-----------++-----------+-----------++-----------+ | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | +| | | | | | | || | || | | | | | | | +| | | | +---------+ | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | +-+ | | | | || | || | | | | | | | +| | | | | | | | | | | || | || | | | | | | | +| | | | Dot |r|duct | | | 0.74 || 0.15 | 0.53 || 0.21 | | | | | | | +| | | | | | | | | | | || | || | | | | | | | +| | | | | | | | | | | || | || | | | | | | | +| | | | | +-+ | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | | | || | || | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | +---------+ | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | +-----------++-----------+-----------++-----------+ | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | ----------------------- | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | 0.62 | 0.15 |-------------zen V|------------- 0.91 || 0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 |-------------zem Ve-------------- 0.91 | 0.48 | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | 0.97 || 0.45 | 0.11 || 0.05 | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | || | || | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | +-----------++-----------+-----------++-----------+ | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | || | || | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | 0.61 || 0.77 | 0.59 || 0.83 | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | 0.62 | 0.15 || n-s|zen V||tor | 0.91 || 0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 || m-s|zem Ve|tor || 0.91 | 0.48 | | | +| | | | |------------- |------------- || | | | | | | || | || | | | | | | | |------------- -------------- | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | +-----------++-----------+-----------++-----------+ | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| +-----------------------------------------------------------------------------------+ +---------------------------+ +----------------------------------------------------------------+ +-----------+ +-----------------------------------------------------------------------------------+ | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/docs/flow.txt b/docs/flow.txt index 924276a21..380dd86c7 100644 --- a/docs/flow.txt +++ b/docs/flow.txt @@ -1,358 +1,307 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - +------------+ - | | - | | - | | - | | - | | - | | - | | - | inputFile | - | | - | | - | | - | | - | | - | | - | | - +------|-----+ - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - +------|-----+ - | | - | | - | | - | | - | | - | | - | | - | d2parser | - | | - | | - | | - | | - | | - | | - | | - +------------+ - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - +----|----+ - | | - | | - | | - | | - | | - | | - | | - | d2ast | - | | - | | - | | - | | - | | - | | - | | - +----|----+ - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - +-------|------+ - | | - | | - | | - | | - | | - | | - | | - | d2compiler | - | | - | | - | | - | | - | | - | | - | | - +--------------+ - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - +-----|------+ - | | - | | - | | - | | - | | - | | - | | - | d2graph | - | | - | | - | | - | | - | | - | | - | | - +-----|------+ - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - +-------------|-------------+ - | | - | | - | | - | | - | | - | | - | | - | d2layouts/d2dagrelayout | - | | - | | - | | - | | - | | - | | - | | - +---------------------------+ - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - +-------|------+ - | | - | | - | | - | | - | | - | | - | | - | d2exporter | - | | - | | - | | - | | - | | - | | - | | - +-------|------+ - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - +-----|------+ - | | - | | - | | - | | - | | - | | - | | - | d2target | - | | - | | - | | - | | - | | - | | - | | - +------------+ - - - - - - - - - - - - - - - - - - - - - - - - - - + +------------+ + | | + | | + | | + | | + | | + | | + | | + | inputFile | + | | + | | + | | + | | + | | + | | + | | + +------|-----+ + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + +------|-----+ + | | + | | + | | + | | + | | + | | + | | + | d2parser | + | | + | | + | | + | | + | | + | | + | | + +------------+ + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + +----|----+ + | | + | | + | | + | | + | | + | | + | | + | d2ast | + | | + | | + | | + | | + | | + | | + | | + +----|----+ + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + +-------|------+ + | | + | | + | | + | | + | | + | | + | | + | d2compiler | + | | + | | + | | + | | + | | + | | + | | + +--------------+ + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + +-----|------+ + | | + | | + | | + | | + | | + | | + | | + | d2graph | + | | + | | + | | + | | + | | + | | + | | + +-----|------+ + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | ++-------------|-------------+ +| | +| | +| | +| | +| | +| | +| | +| d2layouts/d2dagrelayout | +| | +| | +| | +| | +| | +| | +| | ++---------------------------+ + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + +-------|------+ + | | + | | + | | + | | + | | + | | + | | + | d2exporter | + | | + | | + | | + | | + | | + | | + | | + +-------|------+ + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + +-----|------+ + | | + | | + | | + | | + | | + | | + | | + | d2target | + | | + | | + | | + | | + | | + | | + | | + +------------+ From 2b109ab105f7b8e21c136755d7fa88d01a6053a2 Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sun, 16 Feb 2025 18:13:12 +0700 Subject: [PATCH 04/11] downscale the result if it get to big --- d2renderers/d2ascii/d2ascii.go | 80 ++- docs/examples/flipt/output.txt | 180 ++---- docs/examples/japan-grid/japan.txt | 504 ++++++--------- docs/examples/twitter/out.txt | 723 ++++++---------------- docs/examples/vector-grid/vector-grid.txt | 355 +++-------- 5 files changed, 633 insertions(+), 1209 deletions(-) diff --git a/d2renderers/d2ascii/d2ascii.go b/d2renderers/d2ascii/d2ascii.go index 4f8f014cf..146c9abf1 100644 --- a/d2renderers/d2ascii/d2ascii.go +++ b/d2renderers/d2ascii/d2ascii.go @@ -62,6 +62,15 @@ func Render(diagram *d2target.Diagram, opts *RenderOpts) ([]byte, error) { } } + // If the canvas is too large, downscale it + const maxWidth = 120 + if canvas.w > maxWidth { + ratio := float64(canvas.h) / float64(canvas.w) + newWidth := maxWidth + newHeight := int(float64(maxWidth) * ratio) + canvas.DownscaleGrid(newWidth, newHeight) + } + return canvas.TrimBytes(), nil } @@ -224,7 +233,7 @@ func (c *Canvas) drawLine(x1, y1, x2, y2 int) { for ; x1 <= x2; x1++ { if steep { - c.set(y1, x1, '/') + c.set(y1, x1, '|') } else { c.set(x1, y1, '/') } @@ -308,6 +317,75 @@ func (c *Canvas) TrimBytes() []byte { return buf.Bytes() } +// DownscaleGrid reduces the size of ASCII art using a pixel-like sampling technique +func (c *Canvas) DownscaleGrid(targetWidth, targetHeight int) { + if targetWidth >= c.w || targetHeight >= c.h { + return // No downscaling needed + } + + // Calculate sampling box size + boxWidth := float64(c.w) / float64(targetWidth) + boxHeight := float64(c.h) / float64(targetHeight) + + // Create new grid + newGrid := make([][]rune, targetHeight) + for i := range newGrid { + newGrid[i] = make([]rune, targetWidth) + } + + // Sample characters from original grid + for y := 0; y < targetHeight; y++ { + for x := 0; x < targetWidth; x++ { + // Calculate sampling box boundaries + startX := int(float64(x) * boxWidth) + endX := int(float64(x+1) * boxWidth) + startY := int(float64(y) * boxHeight) + endY := int(float64(y+1) * boxHeight) + + // Count character occurrences in the sampling box + charCount := make(map[rune]int) + for sy := startY; sy < endY && sy < c.h; sy++ { + for sx := startX; sx < endX && sx < c.w; sx++ { + ch := c.grid[sy][sx] + charCount[ch]++ + } + } + + // Choose the most appropriate character + var maxCount int + var dominant rune = ' ' + + // Priority order for characters + priorities := []rune{'+', '|', '-', '/', '\\', '.', ' '} + for _, ch := range priorities { + if count := charCount[ch]; count > maxCount { + maxCount = count + dominant = ch + } + } + + // Special cases for line preservation + hasVertical := charCount['|'] > 0 || charCount['+'] > 0 + hasHorizontal := charCount['-'] > 0 || charCount['+'] > 0 + + // Determine final character + if hasVertical && hasHorizontal { + newGrid[y][x] = '+' + } else if hasVertical { + newGrid[y][x] = '|' + } else if hasHorizontal { + newGrid[y][x] = '-' + } else { + newGrid[y][x] = dominant + } + } + } + + c.grid = newGrid + c.w = targetWidth + c.h = targetHeight +} + func min(a, b int) int { if a < b { return a diff --git a/docs/examples/flipt/output.txt b/docs/examples/flipt/output.txt index 61978a9a7..7eacda64c 100644 --- a/docs/examples/flipt/output.txt +++ b/docs/examples/flipt/output.txt @@ -1,116 +1,64 @@ - +--------------------------------------------------------+ - | | - | | - | | - | | - | | - | | - | +-------------------------------------------------+ | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | +----+ +----+ +----+ +----+ | | - | | | | | | | | | | | | - | | | | | | | | | | | | - | | | | | | | | | | | | +--------------------------------+ - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | +----+ +----+ +----+ +----+ | | | +-------+ | - | | | | | | | | - | | | | | | | | - | | | | | | | | - | | | | | | | | -+------------------------------------------------------------------+ | | | | | | | | -| | | | | | | | | | -| | | | | | | | | | -| | | | | | | | | | -| | | | | | | ------ | | -| | | | +----+ +----+ +----+ +----+ | | | // | | | -| | | | | | | | | | | | | | | / | | | -| | | | | | | | | | | | | | | | | | | -| +----------+ | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | +-------+ | -| | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | -| | | | | | +----+ +----+ +----+ +----+ | | | +----+| | -| ------ linked -----/ | | | | | | | | | -| // | | // | | | | | | | | | -| / | | | | | | | | | | | | -| | | | | +-----------+ | | | | | | | | | -| | | | | | | | | | Test -------------------------- | Release | -| | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | -| | | | || | | | | | | | | | | -| +----------| +----------+ | | | | | | | | | | | -| | | | | | | | +----+ +----+ +----+ +----+ | | | +----| | -| | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | +-------+ | -| | | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | | | -| | | Build | | | | | | | | | | | | | | | | | | | | -| | source | | -------------------------- | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | / | | | -| | | | | | | | +----+ +----+ +----+ +----+ | | | / | | | -| | | | | | | | | | | / | | | -| | | | | | | | | | | ------ | | -| | | | | | | | | | | | | | -| | | +----------+ | | | | | | | | | | | -| +----------+| | | | | | | | | | | | | | -| | | | || | | | | | | | | | | -| | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | -| | | | | +-----------+ | | | | | | | | | -| | | | | | | | +----+ +----+ +----+ +----+ | | | +-------+ | -| / | | | | | | | | | | | | | | | | | | -| // | assets | // | | | | | | | | | | | | | | | -| ------ -----/ | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | +--------------------------------+ -| | | | | | | | | | | | | | | | -| +----------+ | | | +----+ +----+ +----+ +----+ | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -+------------------------------------------------------------------+ | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | +-------------------------------------------------+ | - | | - | | - | | - | | - | | - | | - | | - +--------------------------------------------------------+ + +------------------------------+ + | | + | | + | | + | +--------------------------+ | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | +--+ +--+ +--+ +--+ | | + | | | | | | | | | | | | + | | | | | | | | | | | | +-----------------+ + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | +--+ +--+ +--+ +--+ | | | +---+ | + | | | | | | | | ++-----------------------------------+ | | | | | | | | +| | | | | | | | | | +| | | | | | | ---+ | | +| | | | +--+ +--+ +--+ +--+ | | | // | | | +| | | | | | | | | | | | | | | | | | | +| +-----+ | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | +---+ | +| | | | | | +--+ +--+ +--+ +--+ | | | +--+ | +| ---- ---/ | | | | | | | | | +| / | | | | | | | | | | | | +| || | | | +-----+ | | | +-+---------+-+ | | +| | | | ||| | | | | | | | | | | +| +-----| +-----+ || | | | | | | | | | | +| | | | | | | | +--+ +--+ +--+ +--+ | | | +--| | +| | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | +---+ | +| | | | | | | | | | | | | | | | | | | | | | | +| | | | +-+---------+-+ | | | | | | | | | | | | | | | +| | | | | | | | +--+ +--+ +--+ +--+ | | | / | | | +| | | | | | | | | | | ---+ | | +| | | | | | | | | | | | | | +| +-----+ +-----+ | | | | | | | | | | | +| || | | || | | | | | | | | | | +| || | | ||+-----+ | | | | | | | | | +| | | | || | | | +--+ +--+ +--+ +--+ | | | +---+ | +| /---+ +--/ | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | +-----------------+ +| +-----+ | | | +--+ +--+ +--+ +--+ | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | ++-----------------------------------+ | | | | + | | | | + | | | | + | +--------------------------+ | + | | + | | + | | + | | + +------------------------------+ diff --git a/docs/examples/japan-grid/japan.txt b/docs/examples/japan-grid/japan.txt index 16e72c339..ee7b4bc8c 100644 --- a/docs/examples/japan-grid/japan.txt +++ b/docs/examples/japan-grid/japan.txt @@ -1,301 +1,203 @@ -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | 北 海 道 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | 青 森 | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | 秋 田 | 岩 手 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | 石 川 | || 新 潟 | 山 形 | 宮 城 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | 福 井 | 富 山 || 群 馬 | 栃 木 | 福 島 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | 山 口 | 島 根 || 鳥 取 | 兵 庫 || 京 都 | 滋 賀 | 長 野 || 山 梨 | 埼 玉 | 茨 城 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | 広 島 || 岡 山 | 大 阪 || 奈 良 | 岐 阜 | 愛 知 || 静 岡 | TOKYO | 千 葉 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| 長 崎 || 佐 賀 | 福 岡 | || | || 和 歌 山 | 三 重 | || | 神 奈 川 | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || 熊 本 | 大 分 | || 愛 媛 | 香 川 || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || 鹿 児 島 | 宮 崎 | || 高 知 | 徳 島 || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| 沖 縄 || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ diff --git a/docs/examples/twitter/out.txt b/docs/examples/twitter/out.txt index 8118e85e2..819e7ea2b 100644 --- a/docs/examples/twitter/out.txt +++ b/docs/examples/twitter/out.txt @@ -1,530 +1,193 @@ - +---------------+ +---------------+ +---------------+ - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | Android | | Iphone | | Web | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - +---------------+ +---------------+ +---------------+ - - - - - - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | +-------|-------+ | - | | | | - | | | | - | | | | - | | | | - || || - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - Twitter Frontend - | | - | | - // | - // | | - /// | / - /// | |// - // | | / - /// | | / - // | | // - /// | | / - /// | | / - // | | // - /// | | / - // | | / - /// | | // - // +---------------+ / - /// / - /// // - // / - /// / - // // - /// / - /// / - // // - |/ / - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - +-----------------|---------------------------------------------------------------------------------------------------------------------------|----------+ - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | +-------|-------+ | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | +-------------|--------------+ | | | - | | | | | | - | | | | | | - | | | | | | - | | | +-------------------------------------------------------------+ | | | - | | | | | | | | - | | | | | | | | - | | | | | | | | - | | TLS-API (being deprecated) | | ## Tweet/user content hydration, visibility filtering | | GraphQL | | - | | | | | Federated Strato Column - | | | | | | | | - | | | | | // | | - | | | | | /// | | | - | | | +-------------------------------------------------------------+ // | | | - | | | /// | / | - | | | /// | |//| - | +----------------------------+ /// | | / - | | // | | |// - | | /// | | | // - | | /// | | | / - | | /// | | | // - | | // | | | / - | | /// | | | // - | | /// | | | / - | | /// | | | // - | | /// +---------------+ | / - | | // | // - | | /// | // - | | /// | / - | | /// | // - | | // | / - | | /// | // - | | // | | - | | // | | - | | // | | - | | // | | - +-------------------|------------------------------------------------/-----------------------------------------------------------------------------------+ | - | // | - | // | - | // | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | // | - | //// | - | /// | - | /// | - | //// | - | /// | - |/ /// | - /////// | - /// //// | - //// //// | - /// /// | - /// //// | - //// //// | - /// /// | - //// //// | - /// //// | - /// //// | - //// /// | - /// //// | - /// //// | - //// +-----------------------------------------//----------------------------------------------------------------------------------------------------|--+ - |/ | | - | | | - | | | - | | | - | | | - | | | - | | | - | | +----------------------------------+ | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - +-------|-------+ | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | ## **Timeline mixer** | | - | | | - Inject ads, who-to-follow, onboarding | - | Home mixer | | | - Conversation module | | - | | | | - Cursoring,pagination | | - | | | | - Tweat deduplication | | - | | | | - Served data logging | | - /| | | | | | - // | | | | | | - // /| | | | | | - // / | | | | | | - // // +---------------/ | | | | - // / | | | | / | | | | - // / | | | | / | | | | - // // | | | | / | | | | - // / | | | | / | | | | - // / | | | | / | | | | - // // | | | | / | | | | - // / | | | | / | | | | - // / | | | | / | | | | - // // | | | | / | | | | - // / | | | | / | | | | - // / | | | | / | | | | - // // | | | | / | | | | - // / | | | | / | | | | - // / | | | | / | | | | - // // | | | | / | | | | - // / | | | | / | +----------------------------------+ | - // / | | | | / | | - // // | | | | / | | - // / | | | | / | | - // / | | | | / | | - // // | | | | / | | - |/ / | | | | / | | - | | | | | | | +--------------------------------------------------------------------------------------------------------------------------------------------------+ - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | / / | | | | | - | | | | | | / / | | | | | - | | | | | | // // | | | | | - | | | | | | / | | | | | - | | | | | | / / | | | | | - | | | | | | / / | | | | | - | | | | | | // / | | | | | - | | | | | | / // | | | | | - | | | | | | / / | | | | | - | | | | | | // / | | | | | - | | | | | | / | | | | | - | | | | | / | //| | | | | +--------------+ - | | | | | / | |/ | | | | | | - | | | | | // | | / | | | | | | - | | | | | / | | / +------------+ | +---------------+ +-------------------+ | | - | | | | | / | | / | | | | | | | | | -+--------------+ +---------------+ +--------------+ +--------------+ +-------------------+ +----------------+ // | | +------------+ | | | | | | -| | | | | | | | | | | | /| | | | | | | | | | -| | | | | | | | | | | | / | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | Timeline | | | | Onboarding | | People discovery | | Fetch | -| Tweety Pie | | Social graph | | Gizmoduck | | Manhattan | | Timeline Service | | Home Ranker | | Scorer | | Ad mixer | | service | | service | | | -| | | | | | | | | | | | | | | | | | | | | // | -| | | | | | | | | | | | | | | | | | | | /// | -| | | | | | | | | | | | | | | | | | | | ///| | -| | | | | | | | | | | |// | | | | | | | |//// | | -| | | | | | | | | | | | // | | | | | | | /// | | -| | | | | | | | | | | | // | | | | | | | /// | | | -| | | | | | | | | | | | // | | | | | | /// | | | -+--------------+ +---------------+ +--------------+ +--------------+ +-------------------+ +------|---------+ |/// | +------------+ | | | /// | | | - | | // | | | | //// | | | - | +-----//-----+ +---------------+ +-///---------------+ | | - | // /// | | - | /// /// +--------|-----+ - | // /// | - | // //// | - | /// /// | - | // /// | - | // /// | - | // /// | - | /// //// | - | // /// | - | // /// | - | // // | - | // / | - | //// / | - | /// / | - | //// // | - | /// / | - | //// / | - | /// / | - | //// / | - | /// / | - | //// / | - | /// / | - | //// / | - | //// // | - | /// / | - | //// / | - |/// / | - ///| / | - /// | / | - //// | / | - /// | / | - //// | // | - /// | / | - //// | / | - |/ | / | - | | // | - | | // | - | | /// | - | | /// | - | | // | - | +-------|----------------------------------------///---------------------------------------------------------------------+ | - | | | // | | - | | | /// | - | | | /// | +----------------+ - | | | // | | | - | | | /// | | | - | | | /// | | | - | | | // | | | - +----------------+ | +-----------+ /// +------------+ +--------+ +---------+ +----------------+ | | | - | | | | | // | | | | | | | | | | | - | | | | | /// | | | | | | | | | | | - | | | | | /// | | | | | | | | | | | - | | | | | // | | | | | | | | | | | - | | | | // | | | | | | | | | | | - | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | Feature | - | Home Scorer | | | CrMixer | | EarlyBird | | Utag | | Space | | Communities | | | | - | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | / | - | | | | | | | | | | | | | | |// | - | | | | | | | | | | | | | | // | - | | | | | | | | | | | | | | / | | - | | | | | | | | | | | | | | // | / | - +---|--||---|----+ | +-----------+ +------------+ +--------+ +---------+ +----------------+ | // |/ | - | || | | | / / | - | || | | | // /| | - | || | | | / / | | - | | | | | | // / +--|--------|----+ - | | | | | | // / | | - | | | | | | / / | | - | || | +------------------------------------------------------------------------------------------------------------------------+ // / | | - | || | // / | | - | || | / / | | - | | | | // / | | - | | | | // / | | - | | | | | / | | - / | / / | | | | - / | / / | | | | - / | / // | | | | - / | / / | | | | - / | // / | | | | - / | / // | | | | - / | / / | | | | - / | / / | | | | - /| / / | | | | - / / // | | | | - |/ / / | | | | - | / / / | | | | - | / // // | | | | - | / / / | | | | - | / / / | | | | - | / / / | | | | - | / / // | | | | - | / / / | | | | - | / / / | | | | - | / / / | | | | - | / / // | | | | - | / // / | | | | - | / / / | | | | - | / / // | | | | - | / / / | | | | - | /// /// /// | | | | - | //// ///// ///// | | | | - | ///// //// ////// | | | | - | //// ///// ///// | | | | - | //// ///// ///// | | | | - | ///// ///// ///// | | | | - | //// //// ///// | | | | - | ///// ///// ////// | | | | - | //// ///// ///// | | | | - +-------|-------+ //// ///// ///// | | | | - | | ///// //// ///// | | | | - | | //// ///// ////// | | | - | | ///// ///// ///// | | | - | | //// //// ///// | | | +----------------+ - | | ///// ///// ///// | +--------------|--+ | | | - | | //// ///// ///// | | | | | | - | | //// ///// ////// | | | | | | - | | ///// //// +---------/|/// | | +--------|-----+ | | - | | //// ///// | | ///// | | | | | - | | ///// ///// | | ///// | | | | | - | | //// |///// | | ///// | | | | | - | | //// | ////| | ////// | | | | - | | ///// | ///// | |///// | | | | - | | //// | | /// | /// | | | - | | /// | | | | | | | - Prediction Service | ...etc | | Memcache | | Manhattan | | Scoring | - | | | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | +---------+ | | +--------------+ | | - | | | | | | - | | | | | | - | | | | | | - | | +-----------------+ | | - | | +-------|--------+ - | | | - | | | - +---------------+ | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - +-------|-------+ - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - Prediction Service - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - +---------------+ + +----+ +-----+ +-----+ + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + +----+ +-----+ +-----+ + + | | | + | | | + || | | + || | || + | | || + | | | + || | | + ||+--+--+|| + || || + | | + | | + | | + | | + | | + | | + | | + | | + / | | + +-----+ + + + / / + | | + || | + || | + | | + || | + | | + || | + | | + || | + +------+--------------------------------------------+---+ + | | | | + | | | | + | | +--+--+| + | | | || + | +----+----+ | || + | | | | || + | | | +----------------------+ | || + | | - | | | | || + | | | | | | || + | | | +----------------------+ //| || + | +---------+ | || + | | | || + | | | || + | | // | || + | | +-----+| + | | | + | | | | + | | / | | + +-------+-----------------------------------------------+ || + || | | + || | | + | | || + || | + || || + |/// | + // // | + | + | + | + |/ +----------------------------------------------------++ + | | | + | | | + | | +------------+ | + | | | | | + | | | | | + | | | | | + | | | | | + +--+--+ | | | | + | | | | | | + | | | | | | + | | | + - -- | | + | | | | - | | + | | | | | | + +--++++ | | | | + | |||| | | | | + / / | | | | | | | | + || | | || | | | | + | | || | | | | | + | | | | | | | | + / | | | || | +------------+ | + || | | || | | + | | | | | | | +-----------------------------------------------------+ + | || | | | || || | | | | | | + | | | | | | | | | | | | | + || | | | | | || | | | | | | + | || | | | || | | | | | | | + || | | | || | | | | | | | | + | | | | | | | | | | | | | + || || | | | | | || | | | | | + | | || | | || | | || | | | | + | || | | | | | | | | | | | + | | | | | | / || | | | | + | | | | || || | | | | | + | | | | | || | || | | | + | | | | || || | | | | | +-----+ + | | | | | | | || | | | | | ++--+--+ +-+--+ +--+--+ +--+-+ +--+---+ ++----+ +----+ +--+-+ +-----+ +------+ | | +| | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | ++-----+ +----+ +-----+ +----+ +------+ +--+--+ | | +----+ | | | | | | + | +----+ +-----+ +/-----+ | | + || +--+--+ + | || + | | + | / / | + | | + | | + | | + | // | + | | + | | + || | + // | | + | | | + | | | + | +--+----------------------------------------+ | + | | | / | +-----+ + | | | | | | + +--+--+ | ++--+ +----+ +---+ +---+ +-----+| | | + | | | | | | | | | | | | || | | + | | | | | | | | | | | | || | | + | | | | | | | | | | | | || | | + | | | | | | | | | | | | || | | + | | | | | | | | | | | | || | | + ++-++-+ | +---+ +----+ +---+ +---+ +-----+| / | | + ||| | | | ++---++ + | || | +-------------------------------------------+ | | + || || | | | + | || || | | | + | | | | | + | | | | | + | | | | | + | / | | | | + | | | | | + | | | | | + | || | || | + | / / / | | | | + | | | | | + | | | | | + | | | | | + | /// /// //// | | | | + +--+--+ | | | | + | | || || | +-----+ + | | ||+-----++ | | | + | | // /// +---|/| | +--+-+ | | + | | | | | | | | | | + | | | | | | | | | | + | | | | | | | | | | + | | | | | | | | | | + | | | | | | | | | | + | | +---+ | | +----+ | | + | | +------+ +--+--+ + | | | + +-----+ | + | + | + | + | + | + | + | + | + +--+--+ + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + +-----+ diff --git a/docs/examples/vector-grid/vector-grid.txt b/docs/examples/vector-grid/vector-grid.txt index 50bd9979b..c26b789cb 100644 --- a/docs/examples/vector-grid/vector-grid.txt +++ b/docs/examples/vector-grid/vector-grid.txt @@ -1,261 +1,94 @@ -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| +----------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------+ | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | Random Matrix Generator | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| +----------------------------------------------------------------------------------------------------------------------------------------+ +-----------------|------------------+ | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------+ - | - | - | - | - | - | - | - | - | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------+ -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| +-----------------------------------------------------------------------------------+ +---------------------------+ +-----------------------------------|----------------------------+ +-----------+ +-----------------------------------------------------------------------------------+ | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | +------------+ | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | | +-----------++-----------+-----------++-----------+ | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | 0.62 | 0.15 |-------------zen V|------------- 0.91 || 0.48 | | | | | | | | 0.41 || 0.32 | 0.92 || 0.13 | | | | | | 0.62 | 0.15 |-------------zem Ve-------------- 0.91 | 0.48 | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | +------------+ | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | +-----------++-----------+-----------++-----------+ | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | -| | | | | | | || | || | | | | | | | -| | | | +---------+ | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | +-+ | | | | || | || | | | | | | | -| | | | | | | | | | | || | || | | | | | | | -| | | | Dot |r|duct | | | 0.74 || 0.15 | 0.53 || 0.21 | | | | | | | -| | | | | | | | | | | || | || | | | | | | | -| | | | | | | | | | | || | || | | | | | | | -| | | | | +-+ | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | | | || | || | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | +---------+ | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | +-----------++-----------+-----------++-----------+ | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | ----------------------- | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | 0.62 | 0.15 |-------------zen V|------------- 0.91 || 0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 |-------------zem Ve-------------- 0.91 | 0.48 | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | 0.97 || 0.45 | 0.11 || 0.05 | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | || | || | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | +-----------++-----------+-----------++-----------+ | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | || | || | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | 0.61 || 0.77 | 0.59 || 0.83 | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | 0.62 | 0.15 || n-s|zen V||tor | 0.91 || 0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 || m-s|zem Ve|tor || 0.91 | 0.48 | | | -| | | | |------------- |------------- || | | | | | | || | || | | | | | | | |------------- -------------- | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | +-----------++-----------+-----------++-----------+ | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| +-----------------------------------------------------------------------------------+ +---------------------------+ +----------------------------------------------------------------+ +-----------+ +-----------------------------------------------------------------------------------+ | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ++--------------------------------------------------------------------------------------------------------------+ +| | +| | +| | +| | +| +------------------------------------------------+ +------------+ | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| +------------------------------------------------+ +-----+------+ | +| | | +| | | +| | | +| | | ++-----------------------------------------------------------+--------------------------------------------------+ + | + | + | ++-----------------------------------------------------------+--------------------------------------------------+ +| | | +| | | +| | | +| | | +| +-----------------------------+ +---------+ +------------+---------+ +---+ +-----------------------------+ | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | +----+ | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | +--+--+----+-+---+---+--+ | | | | | | +----+---+---++---+ | | | | +--+--++---+-+----+--+--+ | | +| | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | +----+ +---+ | | | | | | | | | | | || | | | | | | | |+---+ +----+ | | | | +| | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | +----+ | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | +--+--+----+-+---+---+--+ | | +---+ | | +----+---+---++---+ | | | | +--+--++---+-+----+--+--+ | | +| | | | | | | | | | | || | | | | | | | +| | | | | | | | | | | || | | | | | | | +| | | | | + | | | | | | || | | | | | | | +| | | | | | | | | | | | || | | | | | | | +| | | | | + | | | | | | || | | | | | | | +| | +--+--+----+-+---+---+--+ | | | | | | | | | || | | | | | +--+--++---+-+----+--+--+ | | +| | | | | | | | | | | | +---+ | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | +----+---+---++---+ | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | || | +-+---+-+ | | || | | | | | | | +| | | | +----+ +---+ | | | | | | | | | || | | | | | | | |+---+ +----+ | | | | +| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | +--+--+----+-+---+---+--+ | | | | | | | || | | | | | +--+--++---+-+----+--+--+ | | +| | | | | | | | | || | | | | | | | +| | | | | | +----+---+---++---+ | | | | | | +| | | | | | | | | || | | | | | | | +| | | | | | | | | || | | | | | | | +| | | | | | | | | || | | | | | | | +| | +--+--+----+-+---+---+--+ | | | | | | | || | | | | | +--+--++---+-+----+--+--+ | | +| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | -| | | | | | | | | | | | || | | | | | | | || -| | | | | | | +| | | | +----+ +---+ | | | | | | +----+---+---++---+ | | | | | | |+---+ +----+ | | | | +| | | | | | | | | | | | | | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | | | | || | | | | | | | +| | +--+--+----+-+---+---+--+ | | | | | | | | +--+--++---+-+----+--+--+ | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| +-----------------------------+ +---------+ +----------------------+ +---+ +-----------------------------+ | +| | +| | +| | +| | +| | ++--------------------------------------------------------------------------------------------------------------+ From 3c92ce1679682f04e12fbe0a1a757bc8881307b1 Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Mon, 17 Feb 2025 07:19:44 +0700 Subject: [PATCH 05/11] don't maintain aspect ration --- d2renderers/d2ascii/d2ascii.go | 29 +-- docs/examples/chess/dia.txt | 202 +++---------------- docs/examples/flipt/output.txt | 16 +- docs/examples/japan-grid/japan.txt | 135 +------------ docs/examples/twitter/out.txt | 170 +++------------- docs/examples/vector-grid/vector-grid.txt | 28 +-- docs/flow.txt | 233 +--------------------- 7 files changed, 89 insertions(+), 724 deletions(-) diff --git a/d2renderers/d2ascii/d2ascii.go b/d2renderers/d2ascii/d2ascii.go index 146c9abf1..038b113fd 100644 --- a/d2renderers/d2ascii/d2ascii.go +++ b/d2renderers/d2ascii/d2ascii.go @@ -2,6 +2,7 @@ package d2ascii import ( "bytes" + "fmt" "math" "strings" @@ -62,14 +63,17 @@ func Render(diagram *d2target.Diagram, opts *RenderOpts) ([]byte, error) { } } - // If the canvas is too large, downscale it - const maxWidth = 120 - if canvas.w > maxWidth { - ratio := float64(canvas.h) / float64(canvas.w) - newWidth := maxWidth - newHeight := int(float64(maxWidth) * ratio) - canvas.DownscaleGrid(newWidth, newHeight) - } + const ( // common terminal size + maxWidth = 120 + maxHeight = 90 + ) // TODO: detect smallest shape then make it as a baseline + + width = min(canvas.w, maxWidth) + height = min(canvas.h, maxHeight) + + fmt.Println("==== ", canvas.w, canvas.h, "====") + fmt.Println("==== ", width, height, "====") + canvas.ReScale(width, height) return canvas.TrimBytes(), nil } @@ -317,12 +321,9 @@ func (c *Canvas) TrimBytes() []byte { return buf.Bytes() } -// DownscaleGrid reduces the size of ASCII art using a pixel-like sampling technique -func (c *Canvas) DownscaleGrid(targetWidth, targetHeight int) { - if targetWidth >= c.w || targetHeight >= c.h { - return // No downscaling needed - } - +// ReScale reduces the size of ASCII art using a pixel-like sampling technique +// BUG: somehow the text label disappear 😂 +func (c *Canvas) ReScale(targetWidth, targetHeight int) { // Calculate sampling box size boxWidth := float64(c.w) / float64(targetWidth) boxHeight := float64(c.h) / float64(targetHeight) diff --git a/docs/examples/chess/dia.txt b/docs/examples/chess/dia.txt index b040be722..e6dfb888a 100644 --- a/docs/examples/chess/dia.txt +++ b/docs/examples/chess/dia.txt @@ -3,71 +3,21 @@ | | | | | | - | | - | | - | | - | Hans Niemann | - | | - | | - | | - | | - | | - / | - //| | - / +-----|------|----/ - // | | / - // | | / - / | | // - // | | / - / | | / - // | | / - / | | / - // | | / - // | | // - / | | / - // | | / - | | | / - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | + +-----|------|----| + || || + | || + || || + | || || + || | | | + || | || | | | | | - | | | | - | | | | - | | | | - | | | | + | || | || | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | -+-|----------------------|---------------------+| | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| +--------------|---+ || | -| | | || | -| | | || | -| | | || | -| | | || | -| | | || | -| | | || | -| | | || | -| | Magnus Carlsen | || | -| | | || | -| | | || | + | || || | + | || | | ++-|---------------------+|+--------------------+| | +| ||| || | +| +--------------|+--+ || | | | | || | | | | || | | | | || | @@ -83,85 +33,22 @@ | | || | | | || | | | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | | +----------|----------+ || | | | | || | | | | || | | | | || | | | | || | -| | | || | -| | | || | -| | | || | -| | Play Magnus Group | || | -| | | || | -| | | || | -| | | || | -| | | || | -| | | || | -| | | || | -| | | || | | +----------|----------+ || | | | || | | | || | | | || | | | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | | | -| | | | -| | defendants || | -| | || | -| | | | | -| | | | | -| | | | | -| | / | | -| | / | | -| | / | | -| | / | | -| | / | | -| | / | | -| | / | | -| | / | | -| | / | | -| | / | | -| | / | | -| +---|----------/ | | -| | | | | -| | | | | -| | | | | -| | | | | -| | | | | -| | | | | -| | | | | -| | Chess.com | | | -| | | | | -| | | | | +| || || | +| | || | | +| || | | +| || | | +| || | | +| +--+|---------- | | | | | | | | | | | | | | | | | @@ -170,44 +57,13 @@ | +-------|------+ | | | | | | | | | | -| | | | -| | | | -| | | | -| | | | -| | | | -| | | | -| | | | -| | | | -| | | | -| | | | -| | | | -| | | | -| | | | -| | | | -| | | | -| | | | -| | | / -| | | // -| | | / -| | | / -| | | / -| | | / -| | | // -| | | / -| | | / -| | |/ -| | // -| +-------|------------+ / | -| | |/ | -| | | | -| | | | -| | | | -| | | | -| | | | -| | | | -| | Hikaru Nakamura | | -| | | | -| | | | +| | | || +| | | || +| | | || +| || | +| || | +| || | +| +------+|------------+ | | | | | | | | | | | | | @@ -215,10 +71,4 @@ | | | | | +--------------------+ | | | -| | -| | -| | -| | -| | -| | +----------------------------------------------+ diff --git a/docs/examples/flipt/output.txt b/docs/examples/flipt/output.txt index 7eacda64c..d8f49498d 100644 --- a/docs/examples/flipt/output.txt +++ b/docs/examples/flipt/output.txt @@ -1,7 +1,6 @@ +------------------------------+ | | | | - | | | +--------------------------+ | | | | | | | | | @@ -15,13 +14,12 @@ | | | | | | | | | | | | +-----------------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | +--+ +--+ +--+ +--+ | | | +---+ | | | | | | | | | + | | | | | | | | +-----------------------------------+ | | | | | | | | | | | | | | | | | | -| | | | | | | ---+ | | -| | | | +--+ +--+ +--+ +--+ | | | // | | | +| | | | +--+ +--+ +--+ +--+ | | | /---+ | | | | | | | | | | | | | | | | | | | | | | +-----+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -33,13 +31,12 @@ | | | | ||| | | | | | | | | | | | +-----| +-----+ || | | | | | | | | | | | | | | | | | | +--+ +--+ +--+ +--+ | | | +--| | -| | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | +---+ | +| | | | | | | | | | | | | | | | | | | || +---+ | | | | | | | | | | | | | | | | | | | | | | | | -| | | | +-+---------+-+ | | | | | | | | | | | | | | | +| | | | +-+---------+-+ | | | | | | | | | | | || | | | +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +--+ +--+ +--+ +--+ | | | / | | | | | | | | | | | | | | ---+ | | -| | | | | | | | | | | | | | | +-----+ +-----+ | | | | | | | | | | | | || | | || | | | | | | | | | | | || | | ||+-----+ | | | | | | | | | @@ -52,13 +49,12 @@ | | | | | | | | | | | | | | | | | | -| | | | | | +-----------------------------------+ | | | | + | | | | | | | | | | | | | +--------------------------+ | | | | | | | - | | +------------------------------+ diff --git a/docs/examples/japan-grid/japan.txt b/docs/examples/japan-grid/japan.txt index ee7b4bc8c..89297af0c 100644 --- a/docs/examples/japan-grid/japan.txt +++ b/docs/examples/japan-grid/japan.txt @@ -5,28 +5,13 @@ | || | | || | | | | || | | | | || | | || | | | | || | | | | || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | +-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ | || | | || | | | | || | | | | || | | || | | | | || | | | | || | | || | | | | || | | | | || | | || | | | | || | | | | || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ | || | | || | | | | || | | | | || | | || | | | | || | | | | || | | || | | | | || | | | @@ -39,10 +24,7 @@ | || | | || | | | | || | | | | || | | || | | | | || | | | | || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ | || | | || | | | | || | | | | || | | || | | | | || | | | | || | | || | | | | || | | | @@ -55,11 +37,13 @@ | || | | || | | | | || | | | | || | | || | | | | || | | | | || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ | || | | || | | | | || | | | | || | | || | | | | || | | | | || | | || | | | | || | | | | || | | || | | | | || | | | | || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ | || | | || | | | | || | | | | || | | || | | | | || | | | | || | | || | | | | || | | | @@ -72,11 +56,7 @@ | || | | || | | | | || | | | | || | | || | | | | || | | | | || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ | || | | || | | | | || | | | | || | | || | | | | || | | | | || | | || | | | | || | | | @@ -89,115 +69,10 @@ | || | | || | | | | || | | | | || | | || | | | | || | | | | || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | +-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ | || | | || | | | | || | | | | || | | || | | | | || | | | | || | | || | | | | || | | | | || | | || | | | | || | | | | || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -+-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -+-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -+-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -+-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -+-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | +-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ diff --git a/docs/examples/twitter/out.txt b/docs/examples/twitter/out.txt index 819e7ea2b..58b55a5a7 100644 --- a/docs/examples/twitter/out.txt +++ b/docs/examples/twitter/out.txt @@ -3,179 +3,75 @@ | | | | | | | | | | | | | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | +----+ +-----+ +-----+ - - | | | | | | || | | - || | || - | | || - | | | - || | | - ||+--+--+|| + ||| | ||| + |||+--+--+||| || || | | | | | | - | | - | | - | | - | | - | | - / | | +-----+ - - / / - | | - || | + || || || | - | | - || | - | | - || | - | | + || || || | +------+--------------------------------------------+---+ - | | | | - | | | | | | +--+--+| - | | | || - | +----+----+ | || - | | | | || - | | | +----------------------+ | || + | +----+----+ +----------------------+ | || | | - | | | | || - | | | | | | || - | | | +----------------------+ //| || - | +---------+ | || + | +----+----+ +----------------------+ | || | | | || - | | | || - | | // | || | | +-----+| - | | | - | | | | - | | / | | - +-------+-----------------------------------------------+ || + +------++-----------------------------------------------+ | || | | - || | | - | | || - || | + || | || || || - |/// | - // // | | - | - | - |/ +----------------------------------------------------++ - | | | - | | | + | +----------------------------------------------------++ | | +------------+ | | | | | | | | | | | - | | | | | - | | | | | +--+--+ | | | | - | | | | | | - | | | | | | | | | + - -- | | - | | | | - | | - | | | | | | +--++++ | | | | - | |||| | | | | - / / | | | | | | | | - || | | || | | | | - | | || | | | | | - | | | | | | | | - / | | | || | +------------+ | - || | | || | | - | | | | | | | +-----------------------------------------------------+ - | || | | | || || | | | | | | - | | | | | | | | | | | | | - || | | | | | || | | | | | | - | || | | | || | | | | | | | - || | | | || | | | | | | | | - | | | | | | | | | | | | | - || || | | | | | || | | | | | - | | || | | || | | || | | | | - | || | | | | | | | | | | | - | | | | | | / || | | | | - | | | | || || | | | | | - | | | | | || | || | | | - | | | | || || | | | | | +-----+ - | | | | | | | || | | | | | + || |||||| | | | | + || | || || | | | | + | || | || ||| | +------------+ | + || || || | | || || +-+----+----+---------+-------+---------------+-------+ + || || | | | || || | | | | | | + | | | | | | || | | | | | | + || || || | | || || | || | | | | + | | | | || || ||| | | | | + | | | | || ||| ||| || | | | +-----+ +--+--+ +-+--+ +--+--+ +--+-+ +--+---+ ++----+ +----+ +--+-+ +-----+ +------+ | | | | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | | +-----+ +----+ +-----+ +----+ +------+ +--+--+ | | +----+ | | | | | | - | +----+ +-----+ +/-----+ | | - || +--+--+ - | || + || +----+ +-----+ + -----+ +--+--+ | | - | / / | - | | - | | - | | - | // | | | | | || | - // | | - | | | | | | | +--+----------------------------------------+ | - | | | / | +-----+ - | | | | | | - +--+--+ | ++--+ +----+ +---+ +---+ +-----+| | | + +--+--+ | ++--+ +----+ +---+ +---+ +-----+| +-----+ | | | | | | | | | | | | || | | | | | | | | | | | | | | || | | - | | | | | | | | | | | | || | | - | | | | | | | | | | | | || | | - | | | | | | | | | | | | || | | - ++-++-+ | +---+ +----+ +---+ +---+ +-----+| / | | - ||| | | | ++---++ - | || | +-------------------------------------------+ | | - || || | | | - | || || | | | - | | | | | - | | | | | - | | | | | - | / | | | | - | | | | | - | | | | | - | || | || | - | / / / | | | | + +++++++ | +---+ +----+ +---+ +---+ +-----+| ++---++ + || || || +-------------------------------------------+ | | + | || || || | | | + | | || | | + | | || | | | | | | | - | | | | | - | | | | | - | /// /// //// | | | | - +--+--+ | | | | - | | || || | +-----+ - | | ||+-----++ | | | - | | // /// +---|/| | +--+-+ | | + | ||| || | | + +--+--+ || | || | + | | +---||+-----++ +--+-+ +-----+ | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | +---+ | | +----+ | | - | | +------+ +--+--+ - | | | - +-----+ | - | - | - | - | - | + | | +---+ +------+ +----+ | | + +-----+ +--+--+ | | | @@ -184,10 +80,4 @@ | | | | | | - | | - | | - | | - | | - | | - | | +-----+ diff --git a/docs/examples/vector-grid/vector-grid.txt b/docs/examples/vector-grid/vector-grid.txt index c26b789cb..c155d0829 100644 --- a/docs/examples/vector-grid/vector-grid.txt +++ b/docs/examples/vector-grid/vector-grid.txt @@ -2,7 +2,6 @@ | | | | | | -| | | +------------------------------------------------+ +------------+ | | | | | | | | | | | | | @@ -16,27 +15,20 @@ | | | | | | | | | | | | | | | | | | -| | | | | | -| | | | | | | +------------------------------------------------+ +-----+------+ | | | | | | | | | | -| | | +-----------------------------------------------------------+--------------------------------------------------+ | | - | +-----------------------------------------------------------+--------------------------------------------------+ | | | | | | | | | -| | | | +-----------------------------+ +---------+ +------------+---------+ +---+ +-----------------------------+ | | | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | +| | | | | | || | | | | | | | | | | | | | | | | | | | | | | | +----+ | | | | | | | | | | | | | | | | | | | | | | | @@ -44,17 +36,14 @@ | | +--+--+----+-+---+---+--+ | | | | | | +----+---+---++---+ | | | | +--+--++---+-+----+--+--+ | | | | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | | | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | -| | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | | | | | +----+ +---+ | | | | | | | | | | | || | | | | | | | |+---+ +----+ | | | | | | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | | | | | | | | | | | | | +----+ | | | | | || | | | | | | | || | | | | | | | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | -| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | -| | +--+--+----+-+---+---+--+ | | +---+ | | +----+---+---++---+ | | | | +--+--++---+-+----+--+--+ | | -| | | | | | | | | | | || | | | | | | | +| | +--+--+----+-+---+---+--+ | | | | +----+---+---++---+ | | | | +--+--++---+-+----+--+--+ | | +| | | | +---+ | | | | | || | | | | | | | | | | | | | | | | | | || | | | | | | | | | | | | + | | | | | | || | | | | | | | -| | | | | | | | | | | | || | | | | | | | | | | | | + | | | | | | || | | | | | | | | | +--+--+----+-+---+---+--+ | | | | | | | | | || | | | | | +--+--++---+-+----+--+--+ | | | | | | | | | | | | | | +---+ | | | | | || | | | | | | | || | | | | | | | @@ -63,32 +52,25 @@ | | | | +----+ +---+ | | | | | | | | | || | | | | | | | |+---+ +----+ | | | | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | -| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | -| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | | | +--+--+----+-+---+---+--+ | | | | | | | || | | | | | +--+--++---+-+----+--+--+ | | | | | | | | | | | || | | | | | | | | | | | | | +----+---+---++---+ | | | | | | | | | | | | | | | || | | | | | | | | | | | | | | | | || | | | | | | | -| | | | | | | | | || | | | | | | | | | +--+--+----+-+---+---+--+ | | | | | | | || | | | | | +--+--++---+-+----+--+--+ | | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | -| | | | | -| | | | | | | | | | | | || | | | | | | | || -| | | | | | | -| | | | +----+ +---+ | | | | | | +----+---+---++---+ | | | | | | |+---+ +----+ | | | | -| | | | | | | | | | | | | | | | | | | | || | | | | | | | +| | | | +----+ +---+ | | | | | | | | | || | | | | | | | |+---+ +----+ | | | | +| | | | | | | | | | | | | | +----+---+---++---+ | | | | | | || | | | | | | | | | | | | | | | | | | | | | | | | | | | || | | | | | | | | | | | | | | | | | | | | | | | | | | | || | | | | | | | | | +--+--+----+-+---+---+--+ | | | | | | | | +--+--++---+-+----+--+--+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | +-----------------------------+ +---------+ +----------------------+ +---+ +-----------------------------+ | | | | | | | -| | -| | +--------------------------------------------------------------------------------------------------------------+ diff --git a/docs/flow.txt b/docs/flow.txt index 380dd86c7..63e9b1283 100644 --- a/docs/flow.txt +++ b/docs/flow.txt @@ -2,59 +2,16 @@ | | | | | | - | | - | | - | | - | | - | inputFile | - | | - | | - | | - | | - | | - | | - | | +------|-----+ | | | | | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +------|-----+ | | | | | | - | | - | | - | | - | | - | d2parser | - | | - | | - | | - | | - | | - | | - | | +------------+ | | @@ -62,102 +19,21 @@ | | | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +----|----+ | | | | | | - | | - | | - | | - | | - | d2ast | - | | - | | - | | - | | - | | - | | - | | +----|----+ | | | | | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +-------|------+ | | | | | | - | | - | | - | | - | | - | d2compiler | - | | - | | - | | - | | - | | - | | - | | - +--------------+ - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | + +-------+------+ | | | @@ -168,79 +44,17 @@ | | | | | | - | | - | | - | | - | | - | d2graph | - | | - | | - | | - | | - | | - | | - | | +-----|------+ | | | | | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +-------------|-------------+ | | | | | | -| | -| | -| | -| | -| d2layouts/d2dagrelayout | -| | -| | -| | -| | -| | -| | -| | -+---------------------------+ - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | ++-------------+-------------+ | | | @@ -251,57 +65,14 @@ | | | | | | - | | - | | - | | - | | - | d2exporter | - | | - | | - | | - | | - | | - | | - | | +-------|------+ | | | | | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +-----|------+ | | | | | | - | | - | | - | | - | | - | d2target | - | | - | | - | | - | | - | | - | | - | | +------------+ From 24a413a73770024aac96aa40b16774ac8330784e Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Tue, 18 Feb 2025 12:22:19 +0700 Subject: [PATCH 06/11] retain text/label --- d2renderers/d2ascii/d2ascii.go | 115 +++++++++------ docs/examples/chess/dia.txt | 70 ++++----- docs/examples/flipt/output.txt | 120 ++++++++-------- docs/examples/japan-grid/japan.txt | 156 ++++++++++---------- docs/examples/twitter/out.txt | 166 +++++++++++----------- docs/examples/vector-grid/vector-grid.txt | 152 ++++++++++---------- docs/flow.txt | 44 +++--- 7 files changed, 428 insertions(+), 395 deletions(-) diff --git a/d2renderers/d2ascii/d2ascii.go b/d2renderers/d2ascii/d2ascii.go index 038b113fd..a1ba56e1f 100644 --- a/d2renderers/d2ascii/d2ascii.go +++ b/d2renderers/d2ascii/d2ascii.go @@ -79,6 +79,11 @@ func Render(diagram *d2target.Diagram, opts *RenderOpts) ([]byte, error) { } // Canvas handles the ASCII grid and drawing operations +type TextPosition struct { + x, y, w, h int + text string +} + type Canvas struct { grid [][]rune w, h int @@ -87,6 +92,9 @@ type Canvas struct { scaleX, scaleY float64 offsetX, offsetY int pad int + + // Track text positions + textPositions []TextPosition } func NewCanvas(w, h int) *Canvas { @@ -250,6 +258,9 @@ func (c *Canvas) drawLine(x1, y1, x2, y2 int) { } func (c *Canvas) drawCenteredText(x, y, w, h int, text string) { + // Record position first + c.textPositions = append(c.textPositions, TextPosition{x, y, w, h, text}) + lines := strings.Split(text, "\n") startY := y + (h-len(lines))/2 @@ -322,62 +333,84 @@ func (c *Canvas) TrimBytes() []byte { } // ReScale reduces the size of ASCII art using a pixel-like sampling technique -// BUG: somehow the text label disappear 😂 func (c *Canvas) ReScale(targetWidth, targetHeight int) { - // Calculate sampling box size - boxWidth := float64(c.w) / float64(targetWidth) - boxHeight := float64(c.h) / float64(targetHeight) + scaleX := float64(targetWidth) / float64(c.w) + scaleY := float64(targetHeight) / float64(c.h) // Create new grid newGrid := make([][]rune, targetHeight) for i := range newGrid { newGrid[i] = make([]rune, targetWidth) + for j := range newGrid[i] { + newGrid[i][j] = ' ' + } } - // Sample characters from original grid - for y := 0; y < targetHeight; y++ { - for x := 0; x < targetWidth; x++ { - // Calculate sampling box boundaries - startX := int(float64(x) * boxWidth) - endX := int(float64(x+1) * boxWidth) - startY := int(float64(y) * boxHeight) - endY := int(float64(y+1) * boxHeight) + // First scale the borders and lines (source -> target mapping) + for y := 0; y < c.h; y++ { + targetY := int(float64(y) * scaleY) + if targetY >= targetHeight { + continue + } - // Count character occurrences in the sampling box - charCount := make(map[rune]int) - for sy := startY; sy < endY && sy < c.h; sy++ { - for sx := startX; sx < endX && sx < c.w; sx++ { - ch := c.grid[sy][sx] - charCount[ch]++ - } + for x := 0; x < c.w; x++ { + targetX := int(float64(x) * scaleX) + if targetX >= targetWidth { + continue } - // Choose the most appropriate character - var maxCount int - var dominant rune = ' ' + ch := c.grid[y][x] + if ch == '+' || ch == '-' || ch == '|' || ch == '/' || ch == '\\' || ch == '.' { + newGrid[targetY][targetX] = ch + } + } + } - // Priority order for characters - priorities := []rune{'+', '|', '-', '/', '\\', '.', ' '} - for _, ch := range priorities { - if count := charCount[ch]; count > maxCount { - maxCount = count - dominant = ch - } + // Then redraw text at scaled positions + for _, pos := range c.textPositions { + // Get box dimensions in source coordinates first + srcBoxCenterY := pos.y + pos.h/2 + + // Split text into lines + lines := strings.Split(pos.text, "\n") + textHeight := len(lines) + + // Calculate text start Y in source coordinates + srcStartY := srcBoxCenterY - textHeight/2 + + // Scale to target coordinates + newX := int(float64(pos.x) * scaleX) + newY := int(float64(srcStartY) * scaleY) + newW := int(float64(pos.w) * scaleX) + + // Draw each line centered horizontally + for i, line := range lines { + targetY := newY + i + if targetY >= targetHeight { + break + } + if targetY < 0 { + continue } - // Special cases for line preservation - hasVertical := charCount['|'] > 0 || charCount['+'] > 0 - hasHorizontal := charCount['-'] > 0 || charCount['+'] > 0 + // Center text horizontally within the scaled box + startX := newX + (newW-len(line))/2 + for j, ch := range line { + targetX := startX + j + if targetX >= targetWidth { + break + } + if targetX < 0 { + continue + } - // Determine final character - if hasVertical && hasHorizontal { - newGrid[y][x] = '+' - } else if hasVertical { - newGrid[y][x] = '|' - } else if hasHorizontal { - newGrid[y][x] = '-' - } else { - newGrid[y][x] = dominant + // Only overwrite space or existing text + existing := newGrid[targetY][targetX] + if existing == ' ' || (existing != '+' && existing != '-' && + existing != '|' && existing != '/' && existing != '\\' && + existing != '.') { + newGrid[targetY][targetX] = ch + } } } } diff --git a/docs/examples/chess/dia.txt b/docs/examples/chess/dia.txt index e6dfb888a..ce91a3a42 100644 --- a/docs/examples/chess/dia.txt +++ b/docs/examples/chess/dia.txt @@ -1,27 +1,26 @@ - +-----------------+ + |-----------------| | | + | Hans Niemann | | | - | | - | | - +-----|------|----| - || || - | || - || || - | || || - || | | | - || | || | + / | + /////+-----|------|----// + ///// || | //// + //// || | /// + ///// || | //// + ||// | | /| + ||| || | || + || | || | | | | | - | || | || + | | | || | | | | - | || || | + | | | || | || | | -+-|---------------------+|+--------------------+| | -| ||| || | -| +--------------|+--+ || | -| | | || | -| | | || | +|-|---------------------||---------------------|| | +| ||| || | +| |--------------|---| || | | | | || | | | | || | +| | Magnus Carlsen | || | | | | || | | +---------|--------+ || | | | || | @@ -33,9 +32,10 @@ | | || | | | || | | | || | -| +----------|----------+ || | -| | | || | +| | || | +| |----------|----------| || | | | | || | +| | Play Magnus Group | || | | | | || | | | | || | | +----------|----------+ || | @@ -43,32 +43,32 @@ | | || | | | || | | | || | -| || || | -| | || | | -| || | | -| || | | -| || | | -| +--+|---------- | | -| | | | | -| | | | | +| || defendants ||| | +| || /|| | | +| || /// | | +| || /// | | +| || /// | | +| |---|----------|/ | | | | | | | | | | | | +| | Chess.com | | | | | | | | | +-------|------+ | | | | | | | | | | +| | | | | | | || -| | | || -| | | || -| || | -| || | -| || | -| +------+|------------+ | -| | | | -| | | | +| || | || +| | | /|| +| | | //// +| | | //// +| | |/// +| |-------|------------|///| | | | | | | | | +| | Hikaru Nakamura | | | | | | | +--------------------+ | | | +| | +----------------------------------------------+ diff --git a/docs/examples/flipt/output.txt b/docs/examples/flipt/output.txt index d8f49498d..6cacc11d9 100644 --- a/docs/examples/flipt/output.txt +++ b/docs/examples/flipt/output.txt @@ -1,60 +1,60 @@ - +------------------------------+ - | | - | | - | +--------------------------+ | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | +--+ +--+ +--+ +--+ | | - | | | | | | | | | | | | - | | | | | | | | | | | | +-----------------+ - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | +--+ +--+ +--+ +--+ | | | +---+ | - | | | | | | | | - | | | | | | | | -+-----------------------------------+ | | | | | | | | -| | | | | | | | | | -| | | | +--+ +--+ +--+ +--+ | | | /---+ | | -| | | | | | | | | | | | | | | | | | | -| +-----+ | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | +---+ | -| | | | | | +--+ +--+ +--+ +--+ | | | +--+ | -| ---- ---/ | | | | | | | | | -| / | | | | | | | | | | | | -| || | | | +-----+ | | | +-+---------+-+ | | -| | | | ||| | | | | | | | | | | -| +-----| +-----+ || | | | | | | | | | | -| | | | | | | | +--+ +--+ +--+ +--+ | | | +--| | -| | | | | | | | | | | | | | | | | | | || +---+ | -| | | | | | | | | | | | | | | | | | | | | | | -| | | | +-+---------+-+ | | | | | | | | | | | || | | | -| | | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | +--+ +--+ +--+ +--+ | | | / | | | -| | | | | | | | | | | ---+ | | -| +-----+ +-----+ | | | | | | | | | | | -| || | | || | | | | | | | | | | -| || | | ||+-----+ | | | | | | | | | -| | | | || | | | +--+ +--+ +--+ +--+ | | | +---+ | -| /---+ +--/ | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | +-----------------+ -| +-----+ | | | +--+ +--+ +--+ +--+ | | -| | | | | | -| | | | | | -| | | | | | -+-----------------------------------+ | | | | - | | | | - | | | | - | | | | - | +--------------------------+ | - | | - | | - | | - +------------------------------+ + +-------------------------------+ + | | + | | + | | + | |--------------------------| | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | |--| |--| |--| |--| | | + | | | | | | | | | | | | +-----------------+ + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | ---+ +--+ ---+ +--+ | | | |----|| + | | | | | | || ++------------------------------------+ | | | | | | || +| | | | | | | | || +| | | | | | | --- || +| | | | |--| |--| |--| |--| | | | // | || +| +-----+ | | | | | | | | | | | | | | || | || +| | | | | | | | | | | | | | | | | | | || +| | | | | | | | | | | | | | | | | || +----+| +| | | | | | | | | | | | | | | | | | | +| | | | | | ---+ +--+ ---+ +--+ | | | --+| | +| /--|linke|--// | | | | | | | | | +| |/ | | | +------+ | | | | | | | | | +| | | | || | | | | Test |-|--------|--| |Release | +| | | | || | | | | | | | | | | +| |-----| +-----+ | | | | | ---+ +--+ ---+ +--+ | | | --| | +| | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | |----|| +| | | | | | | | | | | | | | | | | | | | | || +| |sourc| Build | |-|--------|--| | | | | | | | | | | | | | || +| | | | | | | | ---+ +--+ ---+ +--+ | | | / | || +| | | | | | | | | | | /--- || +| | | +-----+ | | | | | | | | | || +| +-----+| | | | | | | | | | | | || +| || | | || | | | | | | | | || +| | | | ||+------+ | | | ---+ +--+ ---+ +--+ | | | +----+| +| // |asset| /| | | | | | | | | | | | | | | | +| --| |--/ | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | +-----------------+ +| +-----+ | | | ---+ +--+ ---+ +--+ | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | ++------------------------------------+ | | | | + | | | | + | | | | + | ---------------------------+ | + | | + | | + | | + +-------------------------------+ diff --git a/docs/examples/japan-grid/japan.txt b/docs/examples/japan-grid/japan.txt index 89297af0c..577bf3082 100644 --- a/docs/examples/japan-grid/japan.txt +++ b/docs/examples/japan-grid/japan.txt @@ -1,78 +1,78 @@ -+-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -+-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -+-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -+-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -+-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -+-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -+-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -+-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -+-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -+-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -+-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -+-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -| || | | || | | | | || | | | -+-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +|-------|--------|-------|-------||-------|-------||--------|-------|-------|--------|-------|--------| +| | | | || | || | | | | | | +| | | | || | || | | | | | | +| | | | || | || | | | | |北 海 道 | +| | | | || | || | | | | | | +| | | | || | || | | | | | | +--------+--------+-------+-------++-------+-------++------------------------+----------------+--------+ +| | | | || | || | | | | | | +| | | | || | || | | | | | | +| | | | || | || | | | | | | +| | | | || | || | | | | | | +| | | | || | || | | | | | | +| | | | || | || | | | | | | +|-------|--------|-------|-------||-------|-------||--------|-------|-------|--------|-------|--------| +| | | | || | || | | | | | | +| | | | || | || | | | | | | +| | | | || | || | | | |青 森 | | +| | | | || | || | | | | | | +| | | | || | || | | | | | | +|-------|--------|-------|-------||-------|-------||--------|-------|-------|--------|-------|--------| +| | | | || | || | | | | | | +| | | | || | || | | | | | | +| | | | || | || | | | |秋 田 | 岩 手 | +| | | | || | || | | | | | | +| | | | || | || | | | | | | +| | | | || | || | | | | | | +|-------|--------|-------|-------||-------|-------||--------|-------|-------|--------|-------|--------| +| | | | || | || | | | | | | +| | | | || | || | | | | | | +| | | | || | || | 川 | |新 潟 |山 形 | 宮 城 | +| | | | || | || | | | | | | +| | | | || | || | | | | | | +|-------|--------|-------|-------||-------|-------||--------|-------|-------|--------|-------|--------| +| | | | || | || | | | | | | +| | | | || | || | | | | | | +| | | | || | || | 井 | 山 |群 馬 |栃 木 | 福 島 | +| | | | || | || | | | | | | +| | | | || | || | | | | | | +--------+--------+-------+-------++-------+-------++------------------------+----------------+--------+ +| | | | || | || | | | | | | +| | | | || | || | | | | | | +| | | | || | || | | | | | | +| | |山 口 |島 根 ||鳥 取 |兵 庫 || 京 都 | 賀 | 野 |山 梨 |埼 玉 | 茨 城 | +| | | | || | || | | | | | | +| | | | || | || | | | | | | +|-------|--------|-------|-------||-------|-------||--------|-------|-------|--------|-------|--------| +| | | | || | || | | | | | | +| | | | || | || | | | | | | +| | | |広 島 ||岡 山 |大 阪 || 奈 良 | 阜 | 知 |静 岡 |TOKYO | 千 葉 | +| | | | || | || | | | | | | +| | | | || | || | | | | | | +|-------|--------|-------|-------||-------|-------||--------|-------|-------|--------|-------|--------| +| | | | || | || | | | | | | +| | | | || | || | | | | | | +| | | | || | || | | | | | | +| 崎 | 佐 賀 |福 岡 | || | ||和 歌 山 | 重 | | | 奈 川 | | +| | | | || | || | | | | | | +| | | | || | || | | | | | | +|-------|--------|-------|-------||-------|-------||--------|-------|-------|--------|-------|--------| +| | | | || | || | | | | | | +| | | | || | || | | | | | | +| | 熊 本 |大 分 | ||愛 媛 |香 川 || | | | | | | +| | | | || | || | | | | | | +| | | | || | || | | | | | | +|-------|--------|-------|-------||-------|-------||--------|-------|-------|--------|-------|--------| +| | | | || | || | | | | | | +| | | | || | || | | | | | | +| |鹿 児 島 |宮 崎 | ||高 知 |徳 島 || | | | | | | +| | | | || | || | | | | | | +| | | | || | || | | | | | | +--------+--------+-------+-------++-------+-------++------------------------+----------------+--------+ +| | | | || | || | | | | | | +| | | | || | || | | | | | | +| | | | || | || | | | | | | +| 縄 | | | || | || | | | | | | +| | | | || | || | | | | | | +| | | | || | || | | | | | | +--------+--------+-------+-------++-------+-------++------------------------+----------------+--------+ diff --git a/docs/examples/twitter/out.txt b/docs/examples/twitter/out.txt index 58b55a5a7..82657d4ab 100644 --- a/docs/examples/twitter/out.txt +++ b/docs/examples/twitter/out.txt @@ -1,83 +1,83 @@ - +----+ +-----+ +-----+ - | | | | | | - | | | | | | - | | | | | | - | | | | | | - +----+ +-----+ +-----+ - | | | - || | | - ||| | ||| - |||+--+--+||| - || || - | | - | | - | | - +-----+ - - || || - || | - || || - || | - +------+--------------------------------------------+---+ - | | +--+--+| - | +----+----+ +----------------------+ | || - | | - | | | | || - | +----+----+ +----------------------+ | || - | | | || - | | +-----+| - +------++-----------------------------------------------+ | - || | | - || | || - || || - | - | +----------------------------------------------------++ - | | +------------+ | - | | | | | - | | | | | - +--+--+ | | | | - | | | + - -- | | - +--++++ | | | | - || |||||| | | | | - || | || || | | | | - | || | || ||| | +------------+ | - || || || | | || || +-+----+----+---------+-------+---------------+-------+ - || || | | | || || | | | | | | - | | | | | | || | | | | | | - || || || | | || || | || | | | | - | | | | || || ||| | | | | - | | | | || ||| ||| || | | | +-----+ -+--+--+ +-+--+ +--+--+ +--+-+ +--+---+ ++----+ +----+ +--+-+ +-----+ +------+ | | -| | | | | | | | | | | | | | | | | | | | | | -+-----+ +----+ +-----+ +----+ +------+ +--+--+ | | +----+ | | | | | | - || +----+ +-----+ + -----+ +--+--+ - | | - | | - | | - || | - | | | - | +--+----------------------------------------+ | - +--+--+ | ++--+ +----+ +---+ +---+ +-----+| +-----+ - | | | | | | | | | | | | || | | - | | | | | | | | | | | | || | | - +++++++ | +---+ +----+ +---+ +---+ +-----+| ++---++ - || || || +-------------------------------------------+ | | - | || || || | | | - | | || | | - | | || | | - | | | | | - | ||| || | | - +--+--+ || | || | - | | +---||+-----++ +--+-+ +-----+ - | | | | | | | | | | - | | | | | | | | | | - | | +---+ +------+ +----+ | | - +-----+ +--+--+ - | - | - | - +--+--+ - | | - | | - | | - | | - +-----+ + |-----| |-----| |-----| + | | | | | | + | | | | | | + |ndroi| |phone| | Web | + | | | | | | + +-----+ ------+ +-----+ + | | | + || | || + ||| | ||| + ||||-----||| + || | + | | + Tw////| Fron/end + ////// | |/// + //////// ------+ /// + ////// /// + || | + || || + || | + --------------------------------------------------------+ + | | | | + | | |-----|| + ||----------| |---------------------| | || + TLS-AP||(-eing/dep|ec|ted)/ hydration, visi|ility filt//ingQL|| + |+-----|----+ ----------------------+ F////////|Strat||/olumn + | | /////// | ||//// + | | //////// ------+| //// + -------||---------------//------------------------------+ | + || |/ || + ||| ///// || + ///////// | + /////// ///////// | + |///// |--------------/------------------------------------|| + | | |------------| | + | | | | | + | | | | | + |-----| | ## *|Timeline mix|r** | + H/|e mix|r | - Inject ads,|wh--t--follo|, onboard|ng + //////|-||||// | - Co|versation mo|ule | + ////////|| | |||/// | - Cur|oring,pagina|ion | + ////////// ||| | || ||/// | - Tw-------------+ion | + ///// /// || || || || /// | - Served data logging | + ||| | | | | || || -|-----|----|---------|-------|--------------|-------+ + || | | | | | || | | | | | | + || || || | | || || | || | | | | + || || | | || || |/ /| || || | | | + | | | | || || //// || || | | | + | | | | || ///| /|/|-----+ | +-----+ -------+ |----| + |----| |-----| |----| |-----| |------| |-----| /| | |----| | | | | | | +Tw|ety |ie|ial g|ap|modu|kM|nhatt|nl|ne Ser|ic| Rank|ri|elin| A| mix|On|oardi|g Peopl| disco|e/|/tch| + -----+ +-----+ -----+ +-----+ -------+ --|---+//|//er| +----+ |ervic| |e/////|/ | | + | --/////// +-----+ ////////-----+ ---||+ + | ///// /////// | + | ///////// //// | + | ///////// /// | + /////|//// /// | + |//// | //// | + | |--|-----------////-------------------------| ------+ + |-----| ||----| ////// |---| |--| |--| |-----| | | | + Hom| Scor|r ||rMix|/// Ea|lyB|rd|ta| S|ac|Co|munit|e| F|ature| + | | || | | | | | | | | | | /|/ | + ||||||+ |+----+ ----+ +--+ ---+ +-----+ | /////-|--|-+ + || || || --------------------------------------------+ //////// || | + /// |// //// || || | || + /// /// /// || | || | + |/// //// //// || || | | + | /// /// //// || || | | + | //////////////////////// ||| || | | + |----| ///////////////////////// || || || | + | | ///////////////////---|/|///---| |----| |-----| + Predic|ion |ervice ///////|.//|/| ////|//|hatt|n | | + | | | |M|mcache| | | S|oring| + | | ----+ -------+ -----+ ------+ + -----+ | + | + | + | + |-----| + | | + Predic|ion S|rvice + | | + | | + ------+ diff --git a/docs/examples/vector-grid/vector-grid.txt b/docs/examples/vector-grid/vector-grid.txt index c155d0829..3368c7823 100644 --- a/docs/examples/vector-grid/vector-grid.txt +++ b/docs/examples/vector-grid/vector-grid.txt @@ -1,76 +1,76 @@ -+--------------------------------------------------------------------------------------------------------------+ -| | -| | -| | -| +------------------------------------------------+ +------------+ | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| +------------------------------------------------+ +-----+------+ | -| | | -| | | -| | | -+-----------------------------------------------------------+--------------------------------------------------+ - | - | -+-----------------------------------------------------------+--------------------------------------------------+ -| | | -| | | -| | | -| +-----------------------------+ +---------+ +------------+---------+ +---+ +-----------------------------+ | -| | | | | | | | | | | | | -| | | | | | || | | | | | | -| | | | | | | | | | | | | -| | | | +----+ | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | +--+--+----+-+---+---+--+ | | | | | | +----+---+---++---+ | | | | +--+--++---+-+----+--+--+ | | -| | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | -| | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | -| | | | +----+ +---+ | | | | | | | | | | | || | | | | | | | |+---+ +----+ | | | | -| | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | -| | | | | | | | | | | | +----+ | | | | | || | | | | | | | || | | | | | | | -| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | -| | +--+--+----+-+---+---+--+ | | | | +----+---+---++---+ | | | | +--+--++---+-+----+--+--+ | | -| | | | +---+ | | | | | || | | | | | | | -| | | | | | | | | | | || | | | | | | | -| | | | | + | | | | | | || | | | | | | | -| | | | | + | | | | | | || | | | | | | | -| | +--+--+----+-+---+---+--+ | | | | | | | | | || | | | | | +--+--++---+-+----+--+--+ | | -| | | | | | | | | | | | +---+ | | | | | || | | | | | | | || | | | | | | | -| | | | | | | | | | | | | | +----+---+---++---+ | | | | | | || | | | | | | | -| | | | | | | | | | | | | | | | | || | +-+---+-+ | | || | | | | | | | -| | | | +----+ +---+ | | | | | | | | | || | | | | | | | |+---+ +----+ | | | | -| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | -| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | -| | +--+--+----+-+---+---+--+ | | | | | | | || | | | | | +--+--++---+-+----+--+--+ | | -| | | | | | | | | || | | | | | | | -| | | | | | +----+---+---++---+ | | | | | | -| | | | | | | | | || | | | | | | | -| | | | | | | | | || | | | | | | | -| | +--+--+----+-+---+---+--+ | | | | | | | || | | | | | +--+--++---+-+----+--+--+ | | -| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | -| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | -| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | -| | | | +----+ +---+ | | | | | | | | | || | | | | | | | |+---+ +----+ | | | | -| | | | | | | | | | | | | | +----+---+---++---+ | | | | | | || | | | | | | | -| | | | | | | | | | | | | | | | | | | | || | | | | | | | -| | | | | | | | | | | | | | | | | | | | || | | | | | | | -| | +--+--+----+-+---+---+--+ | | | | | | | | +--+--++---+-+----+--+--+ | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| +-----------------------------+ +---------+ +----------------------+ +---+ +-----------------------------+ | -| | -| | -| | -+--------------------------------------------------------------------------------------------------------------+ +|-------------------------------------------------------------------------------------------------------------| +| | +| | +| | +| |------------------------------------------------| |------------| | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | Ran|o| Matrix Gene|ator | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| -------------------------------------------------+ -------------+ | +| | | +| | | +| | | +| | | +------------------------------------------------------------|-------------------------------------------------+ + | +--------------------------------------------------------------------------------------------------------------+ +| || | +| | | +| | | +| | | +| |-----------------------------| |---------||------------|----------||----| |-----------------------------| | +| | | | || | || | | | | +| | | | || | || | | | | +| | | | || | || | | | | +| | | | |----| || | || | | | | +| | | | | | || || | | | | +| | +--+-------+-+-------+---+ | | | | || ----+--------+----+ || | | +------+----------+------+ | | +| | | | | | || | || | | | | | || | || | | | || | | | | | | | || | | | | +| | | | | | || | || | | | | | || | || | | | || | | | | | | | || | | | | +| | | | | | || | || | | | | | || | || | | | || | | | | | | | || | | | | +| | |..|..5|---|n||---|9.||.8| | | | | || |..1||.32|..2|0.13| || | | |..0|.5|----| |---||.0|.8| | | +| | | | | | || | || | | | -----+ || | || | | | || | | | | | | | || | | | | +| | | | | | || | || | | | || | || | | | || | | | | | | | || | | | | +| | | | | | || | || | | | || | || | | | || | | | | | | | || | | | | +| | +--+-------+-+-------+---+ | | ---+ || |---||---|---|----| || | | +------+----------+------+ | | +| | | | | | || | || | | | || | | | | +| | | | | | || | || | | | || | | | | +| | |D|t ||||uct|| |..4||.15|..3|0.21| || | | | | +| | | | |++| || | || | | | || | | | | +| | |--|---|---|-||---|--||--| | | | | || | || | | | || | | |---|--|----|-|---||--|--| | | +| | | | | | || | || | | | ---+ || | || | | | || | | | | | | | || | | | | +| | | | | | || | || | | | ||ar|---||---|---|----|x --------- | | | | | || | | | | +| | | .| . ----- |----- .||. | | | || | || | | | || | | | . |. ------ ------. |. | | | +| | |.6|.15|siz|n||ec0|91||48| | | || | || | | | || | | |.60|15|size| |ect||90|48| | | +| | | | | | || | || | | | || | . ||. | . | . | || | | | | | | | || | | | | +| | | | | | || | || | | | || |.97||.45|.11|0.05| || | | | | | | | || | | | | +| | +--+-------+-+-------+---+ | | || | || | | | || | | +------+----------+------+ | | +| | | | || | || | | | || | | | | +| | | | || |---||---|---|----| || | | | | +| | | | || | || | | | || | | | | +| | | | || | || | | | || | | | | +| | |--|---|---|-||---|--||--| | | || | || | | | || | | |---|--|----|-|---||--|--| | | +| | | | | | || | || | | | || |..1||.77|..9|0.83| || | | | | | | | || | | | | +| | | | | | || | || | | | || | || | | | || | | | | | | | || | | | | +| | | | | | || | || | | | || | || | | | || | | | | | | | || | | | | +| | |..|..5|---|n||---|9.||.8| | | || ----+--------+----+ || | | |..0|.5|----| |---||.0|.8| | | +| | | | | | || | || | | | || || | | | | | | | || | | | | +| | | | | | || | || | | | || || | | | | | | | || | | | | +| | +--+-------+-+-------+---+ | | || || | | +------+----------+------+ | | +| | | | || || | | | | +| | | | || || | | | | +| | | | || || | | | | +| | | | || || | | | | +| ------------------------------+ ----------++-----------------------++----+ ------------------------------+ | +| | +| | +| | +--------------------------------------------------------------------------------------------------------------+ diff --git a/docs/flow.txt b/docs/flow.txt index 63e9b1283..d0d31b83b 100644 --- a/docs/flow.txt +++ b/docs/flow.txt @@ -1,6 +1,6 @@ - +------------+ - | | + |------------| | | + | inputFile | | | +------|-----+ | @@ -8,20 +8,20 @@ | | | + |------|-----| + | | + | d2parser | + | | +------|-----+ - | | - | | - | | - +------------+ | | | | | | - +----|----+ - | | + |----|----| | | + | d2ast | | | +----|----+ | @@ -29,20 +29,20 @@ | | | + |-------|------| + | | + | d2compiler | + | | +-------|------+ - | | - | | - | | - +-------+------+ | | | | | | - +-----|------+ - | | + |-----|------| | | + | d2graph | | | +-----|------+ | @@ -50,12 +50,11 @@ | | | +|-------------|-------------| +| | +| d2layouts/d2dagrelayout | +| | +-------------|-------------+ -| | -| | -| | -+-------------+-------------+ - | | | | @@ -63,7 +62,7 @@ | +-------|------+ | | - | | + | d2exporter | | | +-------|------+ | @@ -71,8 +70,9 @@ | | | - +-----|------+ - | | + | + |-----|------| | | + | d2target | | | +------------+ From d94491dc226351282826011039dca629e5c1ee23 Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sun, 23 Feb 2025 07:00:40 +0700 Subject: [PATCH 07/11] add AutoSize() too determine optimal width and height --- d2renderers/d2ascii/d2ascii.go | 134 ++++++++++- docs/examples/chess/dia.txt | 97 ++------ docs/examples/flipt/output.txt | 76 ++----- docs/examples/japan-grid/japan.txt | 239 +++++++++++++------- docs/examples/twitter/out.txt | 211 +++++++++++------- docs/examples/vector-grid/vector-grid.txt | 260 +++++++++++++++------- docs/flow.txt | 109 +++------ 7 files changed, 669 insertions(+), 457 deletions(-) diff --git a/d2renderers/d2ascii/d2ascii.go b/d2renderers/d2ascii/d2ascii.go index a1ba56e1f..72bf593fc 100644 --- a/d2renderers/d2ascii/d2ascii.go +++ b/d2renderers/d2ascii/d2ascii.go @@ -4,6 +4,7 @@ import ( "bytes" "fmt" "math" + "sort" "strings" "oss.terrastruct.com/d2/d2target" @@ -63,14 +64,7 @@ func Render(diagram *d2target.Diagram, opts *RenderOpts) ([]byte, error) { } } - const ( // common terminal size - maxWidth = 120 - maxHeight = 90 - ) // TODO: detect smallest shape then make it as a baseline - - width = min(canvas.w, maxWidth) - height = min(canvas.h, maxHeight) - + width, height = canvas.AutoSize() fmt.Println("==== ", canvas.w, canvas.h, "====") fmt.Println("==== ", width, height, "====") canvas.ReScale(width, height) @@ -332,6 +326,130 @@ func (c *Canvas) TrimBytes() []byte { return buf.Bytes() } +func (c *Canvas) AutoSize() (width, height int) { + type boxInfo struct { + x, y, w, h int + text string + hasUp, hasDown bool + hasLeft, hasRight bool + } + + boxes := make([]boxInfo, 0) + maxX := 0 // Track rightmost position + + // Collect boxes and connections + for _, pos := range c.textPositions { + up, down, left, right := false, false, false, false + + // Vertical connections + for x := pos.x; x < pos.x+pos.w; x++ { + if pos.y > 0 && c.grid[pos.y-1][x] == '|' { + up = true + } + if pos.y+pos.h < c.h && c.grid[pos.y+pos.h][x] == '|' { + down = true + } + maxX = max(maxX, x+1) // Track rightmost position + } + + // Horizontal connections + for y := pos.y; y < pos.y+pos.h; y++ { + if pos.x > 0 && c.grid[y][pos.x-1] == '-' { + left = true + } + if pos.x+pos.w < c.w && c.grid[y][pos.x+pos.w] == '-' { + right = true + } + } + + boxes = append(boxes, boxInfo{ + x: pos.x, y: pos.y, + w: pos.w, h: pos.h, + text: pos.text, + hasUp: up, hasDown: down, + hasLeft: left, hasRight: right, + }) + } + + // Sort for vertical processing + yBoxes := make([]boxInfo, len(boxes)) + copy(yBoxes, boxes) + sort.Slice(yBoxes, func(i, j int) bool { + return yBoxes[i].y < yBoxes[j].y + }) + + // Calculate vertical layout + currY := 0 + yMapping := make(map[int]int) + + for i, box := range yBoxes { + lines := strings.Split(box.text, "\n") + minHeight := len(lines) + 2 // text + borders + + if i == 0 { + yMapping[box.y] = 0 + currY = minHeight + continue + } + + spacing := 1 // minimum spacing + if yBoxes[i-1].hasDown && box.hasUp { + spacing = 2 // space for connections + } + + yMapping[box.y] = currY + spacing + currY = yMapping[box.y] + minHeight + } + + // Calculate final height + maxH := 0 + for _, box := range yBoxes { + newY := yMapping[box.y] + lines := strings.Split(box.text, "\n") + boxHeight := len(lines) + 2 + maxH = max(maxH, newY+boxHeight) + } + + // Add padding for edge connections + for x := 0; x < c.w; x++ { + if c.grid[0][x] != ' ' || c.grid[c.h-1][x] != ' ' { + maxH++ + break + } + } + + // Find actual rightmost content + actualMaxX := 0 + for y := 0; y < c.h; y++ { + for x := c.w - 1; x >= 0; x-- { + if c.grid[y][x] != ' ' { + actualMaxX = max(actualMaxX, x+1) + break + } + } + } + + // Add minimal padding for edges + if actualMaxX > 0 { + actualMaxX += 1 // Right padding + } + + // Find leftmost content to determine if we need left padding + needLeftPad := false + for y := 0; y < c.h; y++ { + if c.grid[y][0] != ' ' { + needLeftPad = true + break + } + } + if needLeftPad { + actualMaxX += 1 + } + + // Return optimized dimensions + return actualMaxX, maxH +} + // ReScale reduces the size of ASCII art using a pixel-like sampling technique func (c *Canvas) ReScale(targetWidth, targetHeight int) { scaleX := float64(targetWidth) / float64(c.w) diff --git a/docs/examples/chess/dia.txt b/docs/examples/chess/dia.txt index ce91a3a42..b7c1c140b 100644 --- a/docs/examples/chess/dia.txt +++ b/docs/examples/chess/dia.txt @@ -1,74 +1,23 @@ - |-----------------| - | | - | Hans Niemann | - | | - / | - /////+-----|------|----// - ///// || | //// - //// || | /// - ///// || | //// - ||// | | /| - ||| || | || - || | || | - | | | | - | | | || - | | | | - | | | || - | || | | -|-|---------------------||---------------------|| | -| ||| || | -| |--------------|---| || | -| | | || | -| | | || | -| | Magnus Carlsen | || | -| | | || | -| +---------|--------+ || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| |----------|----------| || | -| | | || | -| | Play Magnus Group | || | -| | | || | -| | | || | -| +----------|----------+ || | -| | || | -| | || | -| | || | -| | || | -| || defendants ||| | -| || /|| | | -| || /// | | -| || /// | | -| || /// | | -| |---|----------|/ | | -| | | | | -| | | | | -| | Chess.com | | | -| | | | | -| +-------|------+ | | -| | | | -| | | | -| | | | -| | | || -| || | || -| | | /|| -| | | //// -| | | //// -| | |/// -| |-------|------------|///| -| | | | -| | | | -| | Hikaru Nakamura | | -| | | | -| +--------------------+ | -| | -| | -+----------------------------------------------+ + |------------| + //|ans Niemann | + //////////// -||||----||||////////// + |||||// || || //|| + | ||| || | +||--------------|||----------------|| || +| |--------------| || | +| +-------|------+ || | +| | || | +| | || | +| --------|-------+ || | +| P|ay Magnus Group| || | +| --------|-------+ || | +| | ||| | +| |||endants /////||| | +| |--|--------|//// | | +| |Chess..om | | | +| +------|----+ | | +| | | /|||| +| ||| /////////// +| |-----|---------|//| +| +---------------+ | +-----------------------------------+ diff --git a/docs/examples/flipt/output.txt b/docs/examples/flipt/output.txt index 6cacc11d9..6467ac936 100644 --- a/docs/examples/flipt/output.txt +++ b/docs/examples/flipt/output.txt @@ -1,60 +1,16 @@ - +-------------------------------+ - | | - | | - | | - | |--------------------------| | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | |--| |--| |--| |--| | | - | | | | | | | | | | | | +-----------------+ - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | ---+ +--+ ---+ +--+ | | | |----|| - | | | | | | || -+------------------------------------+ | | | | | | || -| | | | | | | | || -| | | | | | | --- || -| | | | |--| |--| |--| |--| | | | // | || -| +-----+ | | | | | | | | | | | | | | || | || -| | | | | | | | | | | | | | | | | | | || -| | | | | | | | | | | | | | | | | || +----+| -| | | | | | | | | | | | | | | | | | | -| | | | | | ---+ +--+ ---+ +--+ | | | --+| | -| /--|linke|--// | | | | | | | | | -| |/ | | | +------+ | | | | | | | | | -| | | | || | | | | Test |-|--------|--| |Release | -| | | | || | | | | | | | | | | -| |-----| +-----+ | | | | | ---+ +--+ ---+ +--+ | | | --| | -| | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | |----|| -| | | | | | | | | | | | | | | | | | | | | || -| |sourc| Build | |-|--------|--| | | | | | | | | | | | | | || -| | | | | | | | ---+ +--+ ---+ +--+ | | | / | || -| | | | | | | | | | | /--- || -| | | +-----+ | | | | | | | | | || -| +-----+| | | | | | | | | | | | || -| || | | || | | | | | | | | || -| | | | ||+------+ | | | ---+ +--+ ---+ +--+ | | | +----+| -| // |asset| /| | | | | | | | | | | | | | | | -| --| |--/ | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | +-----------------+ -| +-----+ | | | ---+ +--+ ---+ +--+ | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -+------------------------------------+ | | | | - | | | | - | | | | - | ---------------------------+ | - | | - | | - | | - +-------------------------------+ + |----------------------------------------------------| + | |----------------------------------------------| | + | | | | + | | |----| |----| |----| |----| | | |------------------------------| + | | +----+ +----+ +----+ +----+ | | | |-------| | +|--------------------------------------------------------------| | | | | | ------ | | +| |---------| | | | |----| |----| |----| |----| | | | ||||/ +-------+ | +| |//-----| linked |----///|| +----------+ | | | +----+ +----+ +----+ +----+ | | | |----||| | +| |---------|||| +---------+ |||| | | | | |----| |----|est |----| |----| |-|----------------|---+----|| Release | +| |source | Build | |--|----------------|---| +----+ +----+ +----+ +----+ | | | |||/ |-------| | +| ----------+|| |---------| ||| | | | | | | | /-----| | | +| ||//-----| assets |----///|||| +----------+ | | | |----| |----| |----| |----| | | | +-------+ | +| +---------+ | | | +----+ +----+ +----+ +----+ | | +------------------------------+ ++--------------------------------------------------------------+ | | | | + | -----------------------------------------------+ | + +----------------------------------------------------+ diff --git a/docs/examples/japan-grid/japan.txt b/docs/examples/japan-grid/japan.txt index 577bf3082..01b9f9b5f 100644 --- a/docs/examples/japan-grid/japan.txt +++ b/docs/examples/japan-grid/japan.txt @@ -1,78 +1,161 @@ -|-------|--------|-------|-------||-------|-------||--------|-------|-------|--------|-------|--------| -| | | | || | || | | | | | | -| | | | || | || | | | | | | -| | | | || | || | | | | |北 海 道 | -| | | | || | || | | | | | | -| | | | || | || | | | | | | ---------+--------+-------+-------++-------+-------++------------------------+----------------+--------+ -| | | | || | || | | | | | | -| | | | || | || | | | | | | -| | | | || | || | | | | | | -| | | | || | || | | | | | | -| | | | || | || | | | | | | -| | | | || | || | | | | | | -|-------|--------|-------|-------||-------|-------||--------|-------|-------|--------|-------|--------| -| | | | || | || | | | | | | -| | | | || | || | | | | | | -| | | | || | || | | | |青 森 | | -| | | | || | || | | | | | | -| | | | || | || | | | | | | -|-------|--------|-------|-------||-------|-------||--------|-------|-------|--------|-------|--------| -| | | | || | || | | | | | | -| | | | || | || | | | | | | -| | | | || | || | | | |秋 田 | 岩 手 | -| | | | || | || | | | | | | -| | | | || | || | | | | | | -| | | | || | || | | | | | | -|-------|--------|-------|-------||-------|-------||--------|-------|-------|--------|-------|--------| -| | | | || | || | | | | | | -| | | | || | || | | | | | | -| | | | || | || | 川 | |新 潟 |山 形 | 宮 城 | -| | | | || | || | | | | | | -| | | | || | || | | | | | | -|-------|--------|-------|-------||-------|-------||--------|-------|-------|--------|-------|--------| -| | | | || | || | | | | | | -| | | | || | || | | | | | | -| | | | || | || | 井 | 山 |群 馬 |栃 木 | 福 島 | -| | | | || | || | | | | | | -| | | | || | || | | | | | | ---------+--------+-------+-------++-------+-------++------------------------+----------------+--------+ -| | | | || | || | | | | | | -| | | | || | || | | | | | | -| | | | || | || | | | | | | -| | |山 口 |島 根 ||鳥 取 |兵 庫 || 京 都 | 賀 | 野 |山 梨 |埼 玉 | 茨 城 | -| | | | || | || | | | | | | -| | | | || | || | | | | | | -|-------|--------|-------|-------||-------|-------||--------|-------|-------|--------|-------|--------| -| | | | || | || | | | | | | -| | | | || | || | | | | | | -| | | |広 島 ||岡 山 |大 阪 || 奈 良 | 阜 | 知 |静 岡 |TOKYO | 千 葉 | -| | | | || | || | | | | | | -| | | | || | || | | | | | | -|-------|--------|-------|-------||-------|-------||--------|-------|-------|--------|-------|--------| -| | | | || | || | | | | | | -| | | | || | || | | | | | | -| | | | || | || | | | | | | -| 崎 | 佐 賀 |福 岡 | || | ||和 歌 山 | 重 | | | 奈 川 | | -| | | | || | || | | | | | | -| | | | || | || | | | | | | -|-------|--------|-------|-------||-------|-------||--------|-------|-------|--------|-------|--------| -| | | | || | || | | | | | | -| | | | || | || | | | | | | -| | 熊 本 |大 分 | ||愛 媛 |香 川 || | | | | | | -| | | | || | || | | | | | | -| | | | || | || | | | | | | -|-------|--------|-------|-------||-------|-------||--------|-------|-------|--------|-------|--------| -| | | | || | || | | | | | | -| | | | || | || | | | | | | -| |鹿 児 島 |宮 崎 | ||高 知 |徳 島 || | | | | | | -| | | | || | || | | | | | | -| | | | || | || | | | | | | ---------+--------+-------+-------++-------+-------++------------------------+----------------+--------+ -| | | | || | || | | | | | | -| | | | || | || | | | | | | -| | | | || | || | | | | | | -| 縄 | | | || | || | | | | | | -| | | | || | || | | | | | | -| | | | || | || | | | | | | ---------+--------+-------+-------++-------+-------++------------------------+----------------+--------+ +|----------||-----------|----------|----------||----------|-----------||-----------|----------|----------||----------|-----------|-----------| +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | 北 海 道 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++----------++-----------+----------+----------++----------+-----------++-----------+----------+----------++----------+-----------+-----------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++----------++-----------+----------+----------++----------+-----------++-----------+----------+----------++----------+-----------+-----------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | 青 森 | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +|----------||-----------|----------|----------||----------|-----------||-----------|----------|----------||----------|-----------|-----------| +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | 秋 田 | 岩 手 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++----------++-----------+----------+----------++----------+-----------++-----------+----------+----------++----------+-----------+-----------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | 石 川 | || 新 潟 | 山 形 | 宮 城 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++----------++-----------+----------+----------++----------+-----------++-----------+----------+----------++----------+-----------+-----------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | 福 井 | 富 山 || 群 馬 | 栃 木 | 福 島 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +|----------||-----------|----------|----------||----------|-----------||-----------|----------|----------||----------|-----------|-----------| +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | 山 口 | 島 根 || 鳥 取 | 兵 庫 || 京 都 | 滋 賀 | 長 野 || 山 梨 | 埼 玉 | 茨 城 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++----------++-----------+----------+----------++----------+-----------++-----------+----------+----------++----------+-----------+-----------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | 広 島 || 岡 山 | 大 阪 || 奈 良 | 岐 阜 | 愛 知 || 静 岡 | TOKYO | 千 葉 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++----------++-----------+----------+----------++----------+-----------++-----------+----------+----------++----------+-----------+-----------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| 長 崎 || 佐 賀 | 福 岡 | || | || 和 歌 山 | 三 重 | || | 神 奈 川 | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +|----------||-----------|----------|----------||----------|-----------||-----------|----------|----------||----------|-----------|-----------| +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || 熊 本 | 大 分 | || 愛 媛 | 香 川 || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++----------++-----------+----------+----------++----------+-----------++-----------+----------+----------++----------+-----------+-----------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || 鹿 児 島 | 宮 崎 | || 高 知 | 徳 島 || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++----------++-----------+----------+----------++----------+-----------++-----------+----------+----------++----------+-----------+-----------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| 沖 縄 || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++----------++-----------+----------+----------++----------+-----------++-----------+----------+----------++----------+-----------+-----------+ diff --git a/docs/examples/twitter/out.txt b/docs/examples/twitter/out.txt index 82657d4ab..4ab174354 100644 --- a/docs/examples/twitter/out.txt +++ b/docs/examples/twitter/out.txt @@ -1,83 +1,128 @@ - |-----| |-----| |-----| - | | | | | | - | | | | | | - |ndroi| |phone| | Web | - | | | | | | - +-----+ ------+ +-----+ - | | | - || | || - ||| | ||| - ||||-----||| - || | - | | - Tw////| Fron/end - ////// | |/// - //////// ------+ /// - ////// /// - || | - || || - || | - --------------------------------------------------------+ - | | | | - | | |-----|| - ||----------| |---------------------| | || - TLS-AP||(-eing/dep|ec|ted)/ hydration, visi|ility filt//ingQL|| - |+-----|----+ ----------------------+ F////////|Strat||/olumn - | | /////// | ||//// - | | //////// ------+| //// - -------||---------------//------------------------------+ | - || |/ || - ||| ///// || - ///////// | - /////// ///////// | - |///// |--------------/------------------------------------|| - | | |------------| | - | | | | | - | | | | | - |-----| | ## *|Timeline mix|r** | - H/|e mix|r | - Inject ads,|wh--t--follo|, onboard|ng - //////|-||||// | - Co|versation mo|ule | - ////////|| | |||/// | - Cur|oring,pagina|ion | - ////////// ||| | || ||/// | - Tw-------------+ion | - ///// /// || || || || /// | - Served data logging | - ||| | | | | || || -|-----|----|---------|-------|--------------|-------+ - || | | | | | || | | | | | | - || || || | | || || | || | | | | - || || | | || || |/ /| || || | | | - | | | | || || //// || || | | | - | | | | || ///| /|/|-----+ | +-----+ -------+ |----| - |----| |-----| |----| |-----| |------| |-----| /| | |----| | | | | | | -Tw|ety |ie|ial g|ap|modu|kM|nhatt|nl|ne Ser|ic| Rank|ri|elin| A| mix|On|oardi|g Peopl| disco|e/|/tch| - -----+ +-----+ -----+ +-----+ -------+ --|---+//|//er| +----+ |ervic| |e/////|/ | | - | --/////// +-----+ ////////-----+ ---||+ - | ///// /////// | - | ///////// //// | - | ///////// /// | - /////|//// /// | - |//// | //// | - | |--|-----------////-------------------------| ------+ - |-----| ||----| ////// |---| |--| |--| |-----| | | | - Hom| Scor|r ||rMix|/// Ea|lyB|rd|ta| S|ac|Co|munit|e| F|ature| - | | || | | | | | | | | | | /|/ | - ||||||+ |+----+ ----+ +--+ ---+ +-----+ | /////-|--|-+ - || || || --------------------------------------------+ //////// || | - /// |// //// || || | || - /// /// /// || | || | - |/// //// //// || || | | - | /// /// //// || || | | - | //////////////////////// ||| || | | - |----| ///////////////////////// || || || | - | | ///////////////////---|/|///---| |----| |-----| - Predic|ion |ervice ///////|.//|/| ////|//|hatt|n | | - | | | |M|mcache| | | S|oring| - | | ----+ -------+ -----+ ------+ - -----+ | - | - | - | - |-----| - | | - Predic|ion S|rvice - | | - | | - ------+ + |--------------| |--------------| |--------------| + | | | | | | + | | | | | | + | Android | | Iphone | | Web | + | | | | | | + | | | | | | + | | | | | | + +--------------+ +--------------+ +--------------+ + + | | | + || | || + |||| | ||| + ||| | ||| + |||| |-------|------| |||| + |||| |||| + | | + | | + |witter Fronten| + //////| / + //////////// | |/////// + ////////// | | ///// + /////////// +--------------+ ////// + ////////// //// + ||////// ////| + ||| || + || || + ||| ||| + || || + ||| || + +-----------------|----------------------------------------------------------------------------------------------------------------------|---------+ + | | | | + | | +-------|-------+ | + | | | | | + | |-------------|-------------| | | | + | | | |----------------------------------------------------------| | | | + | |TLS--PI (being deprecated) | | ## Tweet//ser content hydration, visibility filtering | | GraphQL | | + | | | +----------------------------------------------------------+ ////////|rated Strato Co/u|n + | +-------------|-------------+ /////////// | |/|//// + | | ///////////// | | | /////// + | | /////////// +---------------+ | /////// + | | /////////// | ///// + | || /////// | || + +-------------------|||--------------------------------------///////-------------------------------------------------------------------------------+ || + || | || + ||| // || + |||| //////////////// ||| + //////////////// | + //////////// ///////////// | + ////////////// /////////////// | + |////////// |---------------------------------------//------------------------------------------------------------------------------------------------|--| + | | | + | | |--------------------------------| | + | | | | | + | | | | | + | | | | | + |-------|------| | | | | + | | | -| ## **Time-in- mixer** | | + | Home mixer | | - |nject-ads, who-to-follow, onboar|ing | + /////////+--------------/ | | - Conversation module | | + //////////// ||| | || |||//// | | - Cursoring,pagination | | + //////// ///// ||| | || ||| //// | | - Tweat deduplication | | + //////// ////// ||| | || ||| //// | | - Served data logging | | + /////// ///// || | || ||| //// | +--------------------------------+ | + //////// ///// ||| || || ||| //// | | + ||/// ||/// || | | ||| //|| +---|-------------|-------------|------------------------|----------------------|---------------------------------------|--------------------+ + || | || | || || || | | | | | | + || || || | | || || | | | | | | + || || | | || | || | | | | | | + || || || | | || || | | | | | | + || || || | || || ||| || || || | | | + || || | | || |||| |//// ////| |||| || | | | + | | | | ||| || //////// |||| || | | | + | | | | ||| ||||//// ///// || || | | | + | | | | ||| //// ||| ||// +------------+ | +--------------+ +-------------------+ |--------------| +|-------------| |--------------| |--------------| |--------------| |-------------------| |----------------| ///// | |-----------| | | | | | | +| | | | | | | | | | | | | | | | | | | | | | +| Tweety Pie | | Social graph | | Gizmoduck | | Manhattan | | Timeline Service | | Home Ranker | | Timeline | | Ad mixer | | Onboarding | |People discovery | /////Fetch | +| | | | | | | | | | | |/////// Scorer | | | | service | | servic////////|//////| | ++-------------+ +--------------+ +--------------+ +--------------+ +-------------------+ +------|---------+ +-----////---+ +-----------+ +--------------+ //////---------------+ | | + || ////////// //////////// +--------|-----+ + | ///////// ///////////// | + || //////// //////// || + | ////////////// ///// | + || ///////////////// ///// | + | ///////////// ///// | + //////|/////// //// | + ///////////// | ///// | + |///// | ////// | + | +-------|--------------------------------------///------------------------------------------------------------------+ | + | | || ///////// | |---------------| + |----------------| | |-----------| ///////////// |-----------| |-------| |---------| |----------------| | | | + | | | | ///////// | | | | | | | | | | | + | Home Scorer | | | CrMixer | | EarlyBird | | Utag | | Space | | Communities | | | Feature | + | | | | | | | | | | | | | | ///// | + +--||--||---|----+ | +-----------+ +-----------+ +-------+ +---------+ +----------------+ | ////// /// | + ||| ||| || | | ////// ////+--|--------|---+ + ||| |||| ||| +-------------------------------------------------------------------------------------------------------------------+ //////// ///// || || + / | // |// ||// |/ || || + //// | ///// ///// || | | | + //// //// ///// || | || | + |//// //// ///// ||| | | | + | //// //// ///// || | | | + | ///// ////// ////// || || | | + | //////// ////////// ////////// || || | | + | ///////////////////////////////////////////////// ||| || | | + +-------|-------+ /////////////////////////////////////////////////// ||| || || | + | | //////////////////////////////////////////////////////// ||| || | +---------------+ + | | //////////////////////////////////// /////+---------/|/// |-------------|--| +-------|-----+ | | + | | ///////////////// ////////|/////////| //|///////////////// | | | | + P|ediction Servic| //////////| ...etc |//////| Memcache |///////| Manhattan | | Scoring | + | | | | | | | | | | + | | +---------+ | | +-------------+ | | + | | +----------------+ +------|--------+ + +---------------+ | + | + | + | + | + | + |------|-------| + | | + | | + | | + P|ediction Servi|e + | | + | | + | | + +--------------+ diff --git a/docs/examples/vector-grid/vector-grid.txt b/docs/examples/vector-grid/vector-grid.txt index 3368c7823..f7acc848b 100644 --- a/docs/examples/vector-grid/vector-grid.txt +++ b/docs/examples/vector-grid/vector-grid.txt @@ -1,76 +1,184 @@ -|-------------------------------------------------------------------------------------------------------------| -| | -| | -| | -| |------------------------------------------------| |------------| | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | Ran|o| Matrix Gene|ator | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| -------------------------------------------------+ -------------+ | -| | | -| | | -| | | -| | | -------------------------------------------------------------|-------------------------------------------------+ - | ---------------------------------------------------------------------------------------------------------------+ -| || | -| | | -| | | -| | | -| |-----------------------------| |---------||------------|----------||----| |-----------------------------| | -| | | | || | || | | | | -| | | | || | || | | | | -| | | | || | || | | | | -| | | | |----| || | || | | | | -| | | | | | || || | | | | -| | +--+-------+-+-------+---+ | | | | || ----+--------+----+ || | | +------+----------+------+ | | -| | | | | | || | || | | | | | || | || | | | || | | | | | | | || | | | | -| | | | | | || | || | | | | | || | || | | | || | | | | | | | || | | | | -| | | | | | || | || | | | | | || | || | | | || | | | | | | | || | | | | -| | |..|..5|---|n||---|9.||.8| | | | | || |..1||.32|..2|0.13| || | | |..0|.5|----| |---||.0|.8| | | -| | | | | | || | || | | | -----+ || | || | | | || | | | | | | | || | | | | -| | | | | | || | || | | | || | || | | | || | | | | | | | || | | | | -| | | | | | || | || | | | || | || | | | || | | | | | | | || | | | | -| | +--+-------+-+-------+---+ | | ---+ || |---||---|---|----| || | | +------+----------+------+ | | -| | | | | | || | || | | | || | | | | -| | | | | | || | || | | | || | | | | -| | |D|t ||||uct|| |..4||.15|..3|0.21| || | | | | -| | | | |++| || | || | | | || | | | | -| | |--|---|---|-||---|--||--| | | | | || | || | | | || | | |---|--|----|-|---||--|--| | | -| | | | | | || | || | | | ---+ || | || | | | || | | | | | | | || | | | | -| | | | | | || | || | | | ||ar|---||---|---|----|x --------- | | | | | || | | | | -| | | .| . ----- |----- .||. | | | || | || | | | || | | | . |. ------ ------. |. | | | -| | |.6|.15|siz|n||ec0|91||48| | | || | || | | | || | | |.60|15|size| |ect||90|48| | | -| | | | | | || | || | | | || | . ||. | . | . | || | | | | | | | || | | | | -| | | | | | || | || | | | || |.97||.45|.11|0.05| || | | | | | | | || | | | | -| | +--+-------+-+-------+---+ | | || | || | | | || | | +------+----------+------+ | | -| | | | || | || | | | || | | | | -| | | | || |---||---|---|----| || | | | | -| | | | || | || | | | || | | | | -| | | | || | || | | | || | | | | -| | |--|---|---|-||---|--||--| | | || | || | | | || | | |---|--|----|-|---||--|--| | | -| | | | | | || | || | | | || |..1||.77|..9|0.83| || | | | | | | | || | | | | -| | | | | | || | || | | | || | || | | | || | | | | | | | || | | | | -| | | | | | || | || | | | || | || | | | || | | | | | | | || | | | | -| | |..|..5|---|n||---|9.||.8| | | || ----+--------+----+ || | | |..0|.5|----| |---||.0|.8| | | -| | | | | | || | || | | | || || | | | | | | | || | | | | -| | | | | | || | || | | | || || | | | | | | | || | | | | -| | +--+-------+-+-------+---+ | | || || | | +------+----------+------+ | | -| | | | || || | | | | -| | | | || || | | | | -| | | | || || | | | | -| | | | || || | | | | -| ------------------------------+ ----------++-----------------------++----+ ------------------------------+ | -| | -| | -| | ---------------------------------------------------------------------------------------------------------------+ ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| |-----------------------------------------------------------------------------------------------------------------------------------| |----------------------------------| | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | Random Matrix Generator | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| +-----------------------------------------------------------------------------------------------------------------------------------+ +----------------|-----------------+ | +| | | +| | | +| | | +| | | +| | | +| | | +| || | +| | | +| | | +| | | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------+ + | + | + | + | + | + | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------+ +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| +--------------------------------------------------------------------------------+ +--------------------------+ +----------------------------------|---------------------------+ +----------+ +--------------------------------------------------------------------------------+ | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | +------------+ | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | |-------|--------||----------|-----||-----------|-------||--------| | | | | | | |-----------||----------|-----------||----------| | | | | |--------|-------||-----------|------|----------||--------|--------| | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | . | . |------------ |------------- . || . | | | | | | | | . || . | . || . | | | | | | . | . |------------- ------------- . | . | | | +| | |0.62 | 0.15 || n-si|en Ve||or | 0.91 || 0.48 | | | | | | | | 0.41 || 0.32 | 0.92 || 0.13 | | | | | | 0.62 | 0.15 || m-si|edmVec|or || 0.91 | 0.48 | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | +------------+ | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | --------+--------++----------+-----++-----------+-------++--------+ | | | | +-----------++----------+-----------++----------+ | | | | +--------+-------++-----------+------+----------++--------+--------+ | | +| | | | | | | || | || | | | | | | | +| | | | |---------| | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | +-+ | | | | || | || | | | | | | | +| | | | | | | | | | | || | || | | | | | | | +| | | | |ot |r|duc| | | | 0.74 || 0.15 | 0.53 || 0.21 | | | | | | | +| | | | | | | | | | | || | || | | | | | | | +| | | | | +-+ | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | --------+--------++----------+-----++-----------+-------++--------+ | | | | | | | || | || | | | | | +--------+-------++-----------+------+----------++--------+--------+ | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | +---------+ | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | +-----------++----------+-----------++----------+ | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | |----|----------|----| | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | . | . |------------ |------------- . || . | | | | | | || | || | | | | | | . | . |------------- ------------- . | . | | | +| | |0.62 | 0.15 || n-si|en Ve||or | 0.91 || 0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 || m-si|edmVec|or || 0.91 | 0.48 | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | . || . | . || . | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | 0.97 || 0.45 | 0.11 || 0.05 | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | --------+--------++----------+-----++-----------+-------++--------+ | | | | | || | || | | | | | +--------+-------++-----------+------+----------++--------+--------+ | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | +-----------++----------+-----------++----------+ | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | --------+--------++----------+-----++-----------+-------++--------+ | | | | | || | || | | | | | +--------+-------++-----------+------+----------++--------+--------+ | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | . || . | . || . | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | 0.61 || 0.77 | 0.59 || 0.83 | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | . | . || - | || | . || . | | | | | | || | || | | | | | | . | . || - | | || . | . | | | +| | |0.62 | 0.15 ||----------|en Ve||-----------| 0.91 || 0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 ||-----------|edmVec|----------|| 0.91 | 0.48 | | | +| | | | || | || | || | | | | | +-----------++----------+-----------++----------+ | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | --------+--------++----------+-----++-----------+-------++--------+ | | | | | | | | +--------+-------++-----------+------+----------++--------+--------+ | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| +--------------------------------------------------------------------------------+ +--------------------------+ +--------------------------------------------------------------+ +----------+ +--------------------------------------------------------------------------------+ | +| | +| | +| | +| | +| | +| | +| | +| | +| | ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/docs/flow.txt b/docs/flow.txt index d0d31b83b..358924ce6 100644 --- a/docs/flow.txt +++ b/docs/flow.txt @@ -1,78 +1,31 @@ - |------------| - | | - | inputFile | - | | - +------|-----+ - | - | - | - | - | - |------|-----| - | | - | d2parser | - | | - +------|-----+ - | - | - | - | - | - | - |----|----| - | | - | d2ast | - | | - +----|----+ - | - | - | - | - | - |-------|------| - | | - | d2compiler | - | | - +-------|------+ - | - | - | - | - | - | - |-----|------| - | | - | d2graph | - | | - +-----|------+ - | - | - | - | - | -|-------------|-------------| -| | -| d2layouts/d2dagrelayout | -| | -+-------------|-------------+ - | - | - | - | - | - +-------|------+ - | | - | d2exporter | - | | - +-------|------+ - | - | - | - | - | - | - |-----|------| - | | - | d2target | - | | - +------------+ + |---------| + |inputFile| + +-----|---+ + | + |-----|---| + |d2parser | + +-----|---+ + | + |---|---| + | d2ast | + +---|---+ + | + |-----|----| + |2compiler | + ------|----+ + | + |----|----| + | d2graph | + +----|----+ + | +|----------|----------| +|2layouts/d2dagrelayou| ++----------|----------+ + | + |-----|----| + |2exporter | + ------|----+ + | + |----|----| + |d2target | + +---------+ From 4eb3c2d25858b5cc66cb38cfa954a09e80d582b9 Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sun, 23 Feb 2025 10:37:49 +0700 Subject: [PATCH 08/11] revise AutoSize() --- d2renderers/d2ascii/d2ascii.go | 167 +++++--- docs/examples/chess/dia.txt | 76 ++-- docs/examples/flipt/output.txt | 53 ++- docs/examples/japan-grid/japan.txt | 447 ++++++++++++++-------- docs/examples/twitter/out.txt | 416 +++++++++++++------- docs/examples/vector-grid/vector-grid.txt | 445 ++++++++++++--------- docs/flow.txt | 93 +++-- 7 files changed, 1097 insertions(+), 600 deletions(-) diff --git a/d2renderers/d2ascii/d2ascii.go b/d2renderers/d2ascii/d2ascii.go index 72bf593fc..131a5e6b1 100644 --- a/d2renderers/d2ascii/d2ascii.go +++ b/d2renderers/d2ascii/d2ascii.go @@ -332,16 +332,24 @@ func (c *Canvas) AutoSize() (width, height int) { text string hasUp, hasDown bool hasLeft, hasRight bool + hasDiagonal bool + originalWidth int } boxes := make([]boxInfo, 0) - maxX := 0 // Track rightmost position - // Collect boxes and connections + // Collect boxes and their connections for _, pos := range c.textPositions { - up, down, left, right := false, false, false, false + up, down, left, right, diag := false, false, false, false, false - // Vertical connections + // Check surrounding area for connections + checkRange := 2 + minX := max(0, pos.x-checkRange) + maxX := min(c.w, pos.x+pos.w+checkRange) + minY := max(0, pos.y-checkRange) + maxY := min(c.h, pos.y+pos.h+checkRange) + + // Check vertical connections for x := pos.x; x < pos.x+pos.w; x++ { if pos.y > 0 && c.grid[pos.y-1][x] == '|' { up = true @@ -349,52 +357,74 @@ func (c *Canvas) AutoSize() (width, height int) { if pos.y+pos.h < c.h && c.grid[pos.y+pos.h][x] == '|' { down = true } - maxX = max(maxX, x+1) // Track rightmost position } - // Horizontal connections - for y := pos.y; y < pos.y+pos.h; y++ { - if pos.x > 0 && c.grid[y][pos.x-1] == '-' { - left = true - } - if pos.x+pos.w < c.w && c.grid[y][pos.x+pos.w] == '-' { - right = true + // Check horizontal and diagonal connections + for y := minY; y < maxY; y++ { + for x := minX; x < maxX; x++ { + ch := c.grid[y][x] + switch ch { + case '-': + if x < pos.x { + left = true + } else if x >= pos.x+pos.w { + right = true + } + case '/', '\\': + diag = true + } } } boxes = append(boxes, boxInfo{ - x: pos.x, y: pos.y, - w: pos.w, h: pos.h, - text: pos.text, - hasUp: up, hasDown: down, - hasLeft: left, hasRight: right, + x: pos.x, + y: pos.y, + w: pos.w, + h: pos.h, + text: pos.text, + hasUp: up, + hasDown: down, + hasLeft: left, + hasRight: right, + hasDiagonal: diag, + originalWidth: pos.w, }) } - // Sort for vertical processing + // Sort boxes vertically yBoxes := make([]boxInfo, len(boxes)) copy(yBoxes, boxes) sort.Slice(yBoxes, func(i, j int) bool { return yBoxes[i].y < yBoxes[j].y }) - // Calculate vertical layout + // Calculate vertical layout with increased padding currY := 0 yMapping := make(map[int]int) for i, box := range yBoxes { lines := strings.Split(box.text, "\n") - minHeight := len(lines) + 2 // text + borders + minHeight := len(lines) + 4 // padding + border + + if box.hasDiagonal { // Add extra height for diagonal connections + minHeight += 2 + } if i == 0 { - yMapping[box.y] = 0 - currY = minHeight + yMapping[box.y] = 2 // Start with some padding + currY = minHeight + 2 continue } - spacing := 1 // minimum spacing - if yBoxes[i-1].hasDown && box.hasUp { - spacing = 2 // space for connections + spacing := 2 // spacing between boxes + prevBox := yBoxes[i-1] + + // Add more spacing for connections + if box.hasUp || prevBox.hasDown { + spacing = 3 + } + if box.hasDiagonal || prevBox.hasDiagonal { + spacing = 4 } yMapping[box.y] = currY + spacing @@ -406,48 +436,71 @@ func (c *Canvas) AutoSize() (width, height int) { for _, box := range yBoxes { newY := yMapping[box.y] lines := strings.Split(box.text, "\n") - boxHeight := len(lines) + 2 + boxHeight := len(lines) + 4 // padding + border + + if box.hasDiagonal { + boxHeight += 2 + } + maxH = max(maxH, newY+boxHeight) } - // Add padding for edge connections + // Add extra vertical padding for top/bottom connections + topPad := 2 + bottomPad := 2 for x := 0; x < c.w; x++ { - if c.grid[0][x] != ' ' || c.grid[c.h-1][x] != ' ' { - maxH++ - break + if c.grid[0][x] != ' ' { + topPad = 3 + } + if c.grid[c.h-1][x] != ' ' { + bottomPad = 3 } } + maxH += topPad + bottomPad - // Find actual rightmost content - actualMaxX := 0 - for y := 0; y < c.h; y++ { - for x := c.w - 1; x >= 0; x-- { - if c.grid[y][x] != ' ' { - actualMaxX = max(actualMaxX, x+1) - break - } + // preserve the original width of each box + // but ensure it's wide enough for the content + maxW := 0 + for _, box := range boxes { + // Calculate minimum width needed for text + lines := strings.Split(box.text, "\n") + textWidth := 0 + for _, line := range lines { + textWidth = max(textWidth, len(line)) } + + requiredWidth := textWidth + 4 // Base padding + + // Add extra width for connections + if box.hasLeft { + requiredWidth += 2 + } + if box.hasRight { + requiredWidth += 2 + } + if box.hasDiagonal { + requiredWidth += 4 + } + + // Use the larger of required width or original width + effectiveWidth := max(requiredWidth, box.originalWidth) + maxW = max(maxW, box.x+effectiveWidth) } - // Add minimal padding for edges - if actualMaxX > 0 { - actualMaxX += 1 // Right padding - } - - // Find leftmost content to determine if we need left padding - needLeftPad := false + // Add padding for edge connections + leftPad := 2 + rightPad := 2 for y := 0; y < c.h; y++ { if c.grid[y][0] != ' ' { - needLeftPad = true - break + leftPad = max(leftPad, 3) + } + if c.grid[y][c.w-1] != ' ' { + rightPad = max(rightPad, 3) } } - if needLeftPad { - actualMaxX += 1 - } + maxW += leftPad + rightPad - // Return optimized dimensions - return actualMaxX, maxH + return min(c.w, maxW), min(c.h, maxH) } // ReScale reduces the size of ASCII art using a pixel-like sampling technique @@ -485,21 +538,21 @@ func (c *Canvas) ReScale(targetWidth, targetHeight int) { } // Then redraw text at scaled positions - for _, pos := range c.textPositions { + for _, label := range c.textPositions { // Get box dimensions in source coordinates first - srcBoxCenterY := pos.y + pos.h/2 + srcBoxCenterY := label.y + label.h/2 // Split text into lines - lines := strings.Split(pos.text, "\n") + lines := strings.Split(label.text, "\n") textHeight := len(lines) // Calculate text start Y in source coordinates srcStartY := srcBoxCenterY - textHeight/2 // Scale to target coordinates - newX := int(float64(pos.x) * scaleX) + newX := int(float64(label.x) * scaleX) newY := int(float64(srcStartY) * scaleY) - newW := int(float64(pos.w) * scaleX) + newW := int(float64(label.w) * scaleX) // Draw each line centered horizontally for i, line := range lines { diff --git a/docs/examples/chess/dia.txt b/docs/examples/chess/dia.txt index b7c1c140b..02a939136 100644 --- a/docs/examples/chess/dia.txt +++ b/docs/examples/chess/dia.txt @@ -1,23 +1,53 @@ - |------------| - //|ans Niemann | - //////////// -||||----||||////////// - |||||// || || //|| - | ||| || | -||--------------|||----------------|| || -| |--------------| || | -| +-------|------+ || | -| | || | -| | || | -| --------|-------+ || | -| P|ay Magnus Group| || | -| --------|-------+ || | -| | ||| | -| |||endants /////||| | -| |--|--------|//// | | -| |Chess..om | | | -| +------|----+ | | -| | | /|||| -| ||| /////////// -| |-----|---------|//| -| +---------------+ | ------------------------------------+ + |----------| + | | + H|ns Niemann| + / | + /////---||---||-/// + ///// || | //// + ////// ||| ||| ///// + ||| | | | + ||| | | | + | || | || + | | | | + | || || | +||--------------|-------------|| | +| ||| || | +| |---------|--| || | +| | | || | +| |agnus Carlse| || | +| +------------+ || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| | || | +| |-------------| || | +|Pl|y Magnus Grou| || | +| | | || | +| --------------+ || | +| | || | +| | || | +| | || | +| |efendants || | +| ||| /// | | +| | /// | | +| +---------/// | | +| | | | | +| |Ches..com| | | +| | | | | +| +----|----+ | | +| | | | +| | | | +| | | || +| || | /|| +| || | /// +| || | /// +| |----|--------|/|/ +| | | | +| |ikaru Nakamur| | +| | | | +| +-------------+ | +| | ++-----------------------------+ diff --git a/docs/examples/flipt/output.txt b/docs/examples/flipt/output.txt index 6467ac936..3ee0ca725 100644 --- a/docs/examples/flipt/output.txt +++ b/docs/examples/flipt/output.txt @@ -1,16 +1,37 @@ - |----------------------------------------------------| - | |----------------------------------------------| | - | | | | - | | |----| |----| |----| |----| | | |------------------------------| - | | +----+ +----+ +----+ +----+ | | | |-------| | -|--------------------------------------------------------------| | | | | | ------ | | -| |---------| | | | |----| |----| |----| |----| | | | ||||/ +-------+ | -| |//-----| linked |----///|| +----------+ | | | +----+ +----+ +----+ +----+ | | | |----||| | -| |---------|||| +---------+ |||| | | | | |----| |----|est |----| |----| |-|----------------|---+----|| Release | -| |source | Build | |--|----------------|---| +----+ +----+ +----+ +----+ | | | |||/ |-------| | -| ----------+|| |---------| ||| | | | | | | | /-----| | | -| ||//-----| assets |----///|||| +----------+ | | | |----| |----| |----| |----| | | | +-------+ | -| +---------+ | | | +----+ +----+ +----+ +----+ | | +------------------------------+ -+--------------------------------------------------------------+ | | | | - | -----------------------------------------------+ | - +----------------------------------------------------+ + |-----------------------------------------------------| + | | + | |-----------------------------------------------| | + | | | | + | | | | + | | | | + | | | | + | | |----| |---| |----| |---| | | + | | | | | | | | | | | | |------------------------------| + | | | | | | | | | | | | | | + | | +----+ +---+ +----+ +---+ | | | |------| | ++---------------------------------------------------------------+ | | | | | | | | +| | | | | | | | | | +| | | | |----| |---| |----| |---| | | | ///-----| | | +| |---------| | | | | | | | | | | | | | | || | | | +| | | | | | | | | | | | | | | | | || +------+ | +| | | | | | +----+ +---+ +----+ +---+ | | | +---+|| | +| |///-----|linked |----///|| +-----------+ | | | | | | | | | +| || | | || | | | | | Test |--|----------------|---| | Release | +| |---------|| ----------+ || | | | | +----+ +---+ +----+ +---+ | | | +---| | +| | | | | | | | | | | | | | | | | | | || +------+ | +| | | | | | | | | | | | | | | | | | | || | | | +| | source | Build | |--|----------------|--| | | | | | | | | | | | |/ | | | +| | | | | | | | +----+ +---+ +----+ +---+ | | | //------ | | +| +---------+| |---------| || | | | | | | | | | | +| ||| | | || +-----------+ | | | | | | | | | +| |/// |assets | //|| | | | |----| |---| |----| |---| | | | +------+ | +| -----| |----/ | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | +------------------------------+ +| ----------+ | | | +----+ +---+ +----+ +---+ | | +| | | | | | ++---------------------------------------------------------------+ | | | | + | | | | + | | | | + | +-----------------------------------------------+ | + | | + +-----------------------------------------------------+ diff --git a/docs/examples/japan-grid/japan.txt b/docs/examples/japan-grid/japan.txt index 01b9f9b5f..6b087f9fe 100644 --- a/docs/examples/japan-grid/japan.txt +++ b/docs/examples/japan-grid/japan.txt @@ -1,161 +1,286 @@ -|----------||-----------|----------|----------||----------|-----------||-----------|----------|----------||----------|-----------|-----------| -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | 北 海 道 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+----------++-----------+----------+----------++----------+-----------++-----------+----------+----------++----------+-----------+-----------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+----------++-----------+----------+----------++----------+-----------++-----------+----------+----------++----------+-----------+-----------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | 青 森 | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -|----------||-----------|----------|----------||----------|-----------||-----------|----------|----------||----------|-----------|-----------| -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | 秋 田 | 岩 手 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+----------++-----------+----------+----------++----------+-----------++-----------+----------+----------++----------+-----------+-----------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | 石 川 | || 新 潟 | 山 形 | 宮 城 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+----------++-----------+----------+----------++----------+-----------++-----------+----------+----------++----------+-----------+-----------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | 福 井 | 富 山 || 群 馬 | 栃 木 | 福 島 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -|----------||-----------|----------|----------||----------|-----------||-----------|----------|----------||----------|-----------|-----------| -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | 山 口 | 島 根 || 鳥 取 | 兵 庫 || 京 都 | 滋 賀 | 長 野 || 山 梨 | 埼 玉 | 茨 城 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+----------++-----------+----------+----------++----------+-----------++-----------+----------+----------++----------+-----------+-----------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | 広 島 || 岡 山 | 大 阪 || 奈 良 | 岐 阜 | 愛 知 || 静 岡 | TOKYO | 千 葉 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+----------++-----------+----------+----------++----------+-----------++-----------+----------+----------++----------+-----------+-----------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| 長 崎 || 佐 賀 | 福 岡 | || | || 和 歌 山 | 三 重 | || | 神 奈 川 | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -|----------||-----------|----------|----------||----------|-----------||-----------|----------|----------||----------|-----------|-----------| -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || 熊 本 | 大 分 | || 愛 媛 | 香 川 || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+----------++-----------+----------+----------++----------+-----------++-----------+----------+----------++----------+-----------+-----------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || 鹿 児 島 | 宮 崎 | || 高 知 | 徳 島 || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+----------++-----------+----------+----------++----------+-----------++-----------+----------+----------++----------+-----------+-----------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| 沖 縄 || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+----------++-----------+----------+----------++----------+-----------++-----------+----------+----------++----------+-----------+-----------+ ++-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | 北 海 道 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | 青 森 | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | 秋 田 | 岩 手 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | 石 川 | || 新 潟 | 山 形 | 宮 城 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | 福 井 | 富 山 || 群 馬 | 栃 木 | 福 島 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +|-----------||-----------|-----------|----------||-----------|----------||------------|----------|-----------||----------|------------|-----------| +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | 山 口 | 島 根 || 鳥 取 | 兵 庫 || 京 都 | 滋 賀 | 長 野 || 山 梨 | 埼 玉 | 茨 城 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | 広 島 || 岡 山 | 大 阪 || 奈 良 | 岐 阜 | 愛 知 || 静 岡 | TOKYO | 千 葉 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| 長 崎 || 佐 賀 | 福 岡 | || | || 和 歌 山 | 三 重 | || | 神 奈 川 | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || 熊 本 | 大 分 | || 愛 媛 | 香 川 || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| ||鹿 児 島 | 宮 崎 | || 高 知 | 徳 島 || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| 沖 縄 || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ diff --git a/docs/examples/twitter/out.txt b/docs/examples/twitter/out.txt index 4ab174354..fe8a8e2fc 100644 --- a/docs/examples/twitter/out.txt +++ b/docs/examples/twitter/out.txt @@ -1,128 +1,288 @@ - |--------------| |--------------| |--------------| - | | | | | | - | | | | | | - | Android | | Iphone | | Web | - | | | | | | - | | | | | | - | | | | | | - +--------------+ +--------------+ +--------------+ - - | | | - || | || - |||| | ||| - ||| | ||| - |||| |-------|------| |||| - |||| |||| - | | - | | - |witter Fronten| - //////| / - //////////// | |/////// - ////////// | | ///// - /////////// +--------------+ ////// - ////////// //// - ||////// ////| - ||| || - || || - ||| ||| - || || - ||| || - +-----------------|----------------------------------------------------------------------------------------------------------------------|---------+ - | | | | - | | +-------|-------+ | - | | | | | - | |-------------|-------------| | | | - | | | |----------------------------------------------------------| | | | - | |TLS--PI (being deprecated) | | ## Tweet//ser content hydration, visibility filtering | | GraphQL | | - | | | +----------------------------------------------------------+ ////////|rated Strato Co/u|n - | +-------------|-------------+ /////////// | |/|//// - | | ///////////// | | | /////// - | | /////////// +---------------+ | /////// - | | /////////// | ///// - | || /////// | || - +-------------------|||--------------------------------------///////-------------------------------------------------------------------------------+ || - || | || - ||| // || - |||| //////////////// ||| - //////////////// | - //////////// ///////////// | - ////////////// /////////////// | - |////////// |---------------------------------------//------------------------------------------------------------------------------------------------|--| - | | | - | | |--------------------------------| | - | | | | | - | | | | | - | | | | | - |-------|------| | | | | - | | | -| ## **Time-in- mixer** | | - | Home mixer | | - |nject-ads, who-to-follow, onboar|ing | - /////////+--------------/ | | - Conversation module | | - //////////// ||| | || |||//// | | - Cursoring,pagination | | - //////// ///// ||| | || ||| //// | | - Tweat deduplication | | - //////// ////// ||| | || ||| //// | | - Served data logging | | - /////// ///// || | || ||| //// | +--------------------------------+ | - //////// ///// ||| || || ||| //// | | - ||/// ||/// || | | ||| //|| +---|-------------|-------------|------------------------|----------------------|---------------------------------------|--------------------+ - || | || | || || || | | | | | | - || || || | | || || | | | | | | - || || | | || | || | | | | | | - || || || | | || || | | | | | | - || || || | || || ||| || || || | | | - || || | | || |||| |//// ////| |||| || | | | - | | | | ||| || //////// |||| || | | | - | | | | ||| ||||//// ///// || || | | | - | | | | ||| //// ||| ||// +------------+ | +--------------+ +-------------------+ |--------------| -|-------------| |--------------| |--------------| |--------------| |-------------------| |----------------| ///// | |-----------| | | | | | | -| | | | | | | | | | | | | | | | | | | | | | -| Tweety Pie | | Social graph | | Gizmoduck | | Manhattan | | Timeline Service | | Home Ranker | | Timeline | | Ad mixer | | Onboarding | |People discovery | /////Fetch | -| | | | | | | | | | | |/////// Scorer | | | | service | | servic////////|//////| | -+-------------+ +--------------+ +--------------+ +--------------+ +-------------------+ +------|---------+ +-----////---+ +-----------+ +--------------+ //////---------------+ | | - || ////////// //////////// +--------|-----+ - | ///////// ///////////// | - || //////// //////// || - | ////////////// ///// | - || ///////////////// ///// | - | ///////////// ///// | - //////|/////// //// | - ///////////// | ///// | - |///// | ////// | - | +-------|--------------------------------------///------------------------------------------------------------------+ | - | | || ///////// | |---------------| - |----------------| | |-----------| ///////////// |-----------| |-------| |---------| |----------------| | | | - | | | | ///////// | | | | | | | | | | | - | Home Scorer | | | CrMixer | | EarlyBird | | Utag | | Space | | Communities | | | Feature | - | | | | | | | | | | | | | | ///// | - +--||--||---|----+ | +-----------+ +-----------+ +-------+ +---------+ +----------------+ | ////// /// | - ||| ||| || | | ////// ////+--|--------|---+ - ||| |||| ||| +-------------------------------------------------------------------------------------------------------------------+ //////// ///// || || - / | // |// ||// |/ || || - //// | ///// ///// || | | | - //// //// ///// || | || | - |//// //// ///// ||| | | | - | //// //// ///// || | | | - | ///// ////// ////// || || | | - | //////// ////////// ////////// || || | | - | ///////////////////////////////////////////////// ||| || | | - +-------|-------+ /////////////////////////////////////////////////// ||| || || | - | | //////////////////////////////////////////////////////// ||| || | +---------------+ - | | //////////////////////////////////// /////+---------/|/// |-------------|--| +-------|-----+ | | - | | ///////////////// ////////|/////////| //|///////////////// | | | | - P|ediction Servic| //////////| ...etc |//////| Memcache |///////| Manhattan | | Scoring | - | | | | | | | | | | - | | +---------+ | | +-------------+ | | - | | +----------------+ +------|--------+ - +---------------+ | - | - | - | - | - | - |------|-------| - | | - | | - | | - P|ediction Servi|e - | | - | | - | | - +--------------+ + +---------------+ +--------------+ +---------------+ + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | Android | | Iphone | | Web | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + +---------------+ +--------------+ +---------------+ + + + + | | | + | | | + | | | + || | | + | | | + || | || + || | || + || | || + || | || + | | | + | +------|-------+ | + || | | || + | | | | + || || + | | + | | + | | + | | + | | + |witter Fronten| + // | + ///// | / + ///// | |/// + /// | | / + ///// | | /// + ///// | | /// + ///// | | // + ///// +--------------+ /// + ////// /// + // / + ///// /// + ////// // + |/// /// + | | + | | + | | + | | + | || + || | + || | + || | + | || + | | + || || + | | + | | + +-----------------|-------------------------------------------------------------------------------------------------------------------------|----------+ + | | | | + | | | | + | | | | + | | | | + | | |-------|-------| | + | | | | | + | | | | | + | +-------------|-------------+ | | | + | | | | | | + | | | | | | + | | | |------------------------------------------------------------| | | | + | | | | | | | | + | |TLS--PI (being deprecated) | | ## Tweet//ser content hydration, visibility filtering | | GraphQL | | + | | | | | Fe//rated Strato Co|um| + | | | | | /// | | | + | | | +------------------------------------------------------------+ ///// | / | + | +---------------------------+ ////// | |/// + | | ///// | | |//// + | | ////// | | | /// + | | ///// | | | // + | | /// | | | / + | | ///// +---------------+ | /// + | | ///// | //// + | | ////// | /// + | | ///// | /// + | | //// | | + | | //// | | + +-------------------|-----------------------------------------------/----------------------------------------------------------------------------------+ | + | //// | + || |// || + | | | + || | | + || | || + | // | + || /////// || + || /////// | + ||/ ////// | + //////// | + ////// /////// | + /// //// | + /////// /////// | + /////// //////// | + /////// /////// | + ////// //////// | + |///// |-----------------------------------------//--------------------------------------------------------------------------------------------------|--| + | | | + | | | + | | | + | | +----------------------------------+ | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + | | | | | + +-------|-------+ | | | | + | | | | | | + | | | | | | + | | | | | | + | | | -| ## **Time-in- mixer** | | + | Home mixer | | - |nject -ds, who-to-follow, onboardi|g | + | | | | - Conversation module | | + ///| | | | - Cursoring,pagination | | + //// //| | | | - Tweat deduplication | | + // // +---------------/ | | - Served data logging | | + //// // || | | || // | | | | + //// /// || | | || // | | | | + /// /// || | | | // | | | | + //// // || | | || // | | | | + //// /// || | | || // | | | | + // / | | | | / | | | | + //// // || || | || // | | | | + //// /// || | | || // | | | | + //// // || | | || // | +----------------------------------+ | + //// /// || | | | // | | + //// /// || | | || // | | + |/ / | | | | / | | + || | | | | | | +---|--------------|-------------|-------------------------|----------------------|----------------------------------------|---------------------+ + || | | | | | | | | | | | | + || || | | || || | | | | | | | + || || | | | | | | | | | | | + || | | | | | | | | | | | | + || | | | | || || | | | | | | + | | | | | | | | | | | | | + | | | | | | | | | | | | | + | || || | | | | | | | | | | + | | | | | || | | | | | | | + | | | | | | || | | | | | | + | | || | | | || | || | | | | + | | | | | | | | | | | | | + || | | | | | / /| | | | | | + | | | | || || /// /// || | | | | + | | | | || | /// || | | | | + | | | | || || /// // || | | | | + | | | | || || // /// | | | | | + | | | | || ||/ // || | | | | + | | | | | / | //| | | | | +--------------+ + | | | | | /// | |// || | | | | | + | | | | | // || || // |------------| | |---------------| |------------------| | | +|--------------| |---------------| |-------------| |--------------| |-------------------| |----------------| ///| | |-----------| | | | | | | +| | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | +| Tweety Pie | | Social graph | | Gizmoduck | | Manhattan | | Timeline Service | | Home Ranker | | Timeline | | Ad mixer | | Onboarding | |People discovery | | Fetch | +| | | | | | | | | | | | | Scorer | | | | service | | service | ///// | +| | | | | | | | | | | |// | | | | | | | |///////| | +| | | | | | | | | | | | //// | | | | | | | /////| | | ++--------------+ +---------------+ +-------------+ +--------------+ +-------------------+ +------|---------+ /|/// | +-----------+ | | | ////// | | | + | | // | | | | /// | | | + | +-----////---+ +---------------+ //////--------------+ | | + || ///// ////// +--------|-----+ + | ///// /////// | + | //// ////// | + | ///// /////// | + || //// ////// | + | // // | + | ////// // | + | /////// /// | + | /////// // | + || /////// // | + | /////// // | + | /// / | + | //////// /// | + | /////// // | + ///|/// // | + ////// || // | + /////// | /// | + /// | / | + |///// | // | + | | //// | + | || ////// | + | +-------|----------------------------------------///--------------------------------------------------------------------+ | + | | | ///// | | + | | || ///// | |----------------| + | | | /// | | | + | | | ///// | | | + |----------------| | |-----------| ///// |------------| |-------| |---------| |----------------| | | | + | | | | | ////// | | | | | | | | | | | + | | | | //// | | | | | | | | | | | + | | | | | | | | | | | | | | | | + | Home Scorer | | | CrMixer | | EarlyBird | | Utag | | Space | | Communities | | | Feature | + | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | |/// | + | | | | | | | | | | | | | | //| | + +---|--||---|----+ | +-----------+ +------------+ +-------+ +---------+ +----------------+ | //// |// | + | || || | | /// /| | + | || | | | / / | | + || | | | | | //// // +--|--------|----+ + | ||| | +-----------------------------------------------------------------------------------------------------------------------+ /// // | | + || || | /// // | | + || | | | //// // || || + /| | / / | |/ || || + // | // /// | || | | + / | / / | | | | + // | /// /// | | | | + // | // // | | || | + // // /// | | | | + |// // // || | | | + | // /// /// || | | | + | / / / | | | | + | // // /// || | | | + | // // // || || || | + | // // /// | | | | + | // /// // | || | | + | // // /// | | | | + | /////// //////// //////// | | | | + | ///// //// ////// | | | | + | //////// ////////// ////////// | || | | + | ///////// ///////// ////////// || || | | + | ///////// ////////// ////////// || || || | + |-------|-------| ///////// ///////// ////////// || || | | + | | ///////// ///////// /////////// || || | + | | //// //// ///// | | | +----------------+ + | | ///////// ////////// ////////// || |----------------| | | | + | | //////// ///////// +---------/|/// | | +--------|-----+ | | + | | ///////// ////////// | //|/////// | | | | | + | | //////// |/////////| | ////////// | | | | + | | ///////// | |/////// |//////// | | | + | | /// | | | | | | | + P|ediction Servic| | ...etc | | Memcache | | Manhattan | | Scoring | + | | | | | | | | | | + | | | | | | | | | | + | | | | | | | | | | + | | +---------+ | | +--------------+ | | + | | | | | | + | | +----------------+ | | + | | +-------|--------+ + +---------------+ | + | + | + | + | + | + | + | + | + | + | + | + | + | + |-------|-------| + | | + | | + | | + | | + | | + | | + | | + P|ediction Servic| + | | + | | + | | + | | + | | + | | + | | + | | + +---------------+ diff --git a/docs/examples/vector-grid/vector-grid.txt b/docs/examples/vector-grid/vector-grid.txt index f7acc848b..93e10dc74 100644 --- a/docs/examples/vector-grid/vector-grid.txt +++ b/docs/examples/vector-grid/vector-grid.txt @@ -1,184 +1,261 @@ -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| |-----------------------------------------------------------------------------------------------------------------------------------| |----------------------------------| | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | Random Matrix Generator | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| +-----------------------------------------------------------------------------------------------------------------------------------+ +----------------|-----------------+ | -| | | -| | | -| | | -| | | -| | | -| | | -| || | -| | | -| | | -| | | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------+ - | - | - | - | - | - | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------+ -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| +--------------------------------------------------------------------------------+ +--------------------------+ +----------------------------------|---------------------------+ +----------+ +--------------------------------------------------------------------------------+ | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | +------------+ | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | |-------|--------||----------|-----||-----------|-------||--------| | | | | | | |-----------||----------|-----------||----------| | | | | |--------|-------||-----------|------|----------||--------|--------| | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | . | . |------------ |------------- . || . | | | | | | | | . || . | . || . | | | | | | . | . |------------- ------------- . | . | | | -| | |0.62 | 0.15 || n-si|en Ve||or | 0.91 || 0.48 | | | | | | | | 0.41 || 0.32 | 0.92 || 0.13 | | | | | | 0.62 | 0.15 || m-si|edmVec|or || 0.91 | 0.48 | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | +------------+ | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | --------+--------++----------+-----++-----------+-------++--------+ | | | | +-----------++----------+-----------++----------+ | | | | +--------+-------++-----------+------+----------++--------+--------+ | | -| | | | | | | || | || | | | | | | | -| | | | |---------| | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | +-+ | | | | || | || | | | | | | | -| | | | | | | | | | | || | || | | | | | | | -| | | | |ot |r|duc| | | | 0.74 || 0.15 | 0.53 || 0.21 | | | | | | | -| | | | | | | | | | | || | || | | | | | | | -| | | | | +-+ | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | --------+--------++----------+-----++-----------+-------++--------+ | | | | | | | || | || | | | | | +--------+-------++-----------+------+----------++--------+--------+ | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | +---------+ | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | +-----------++----------+-----------++----------+ | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | |----|----------|----| | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | . | . |------------ |------------- . || . | | | | | | || | || | | | | | | . | . |------------- ------------- . | . | | | -| | |0.62 | 0.15 || n-si|en Ve||or | 0.91 || 0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 || m-si|edmVec|or || 0.91 | 0.48 | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | . || . | . || . | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | 0.97 || 0.45 | 0.11 || 0.05 | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | --------+--------++----------+-----++-----------+-------++--------+ | | | | | || | || | | | | | +--------+-------++-----------+------+----------++--------+--------+ | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | +-----------++----------+-----------++----------+ | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | --------+--------++----------+-----++-----------+-------++--------+ | | | | | || | || | | | | | +--------+-------++-----------+------+----------++--------+--------+ | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | . || . | . || . | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | 0.61 || 0.77 | 0.59 || 0.83 | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | . | . || - | || | . || . | | | | | | || | || | | | | | | . | . || - | | || . | . | | | -| | |0.62 | 0.15 ||----------|en Ve||-----------| 0.91 || 0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 ||-----------|edmVec|----------|| 0.91 | 0.48 | | | -| | | | || | || | || | | | | | +-----------++----------+-----------++----------+ | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | --------+--------++----------+-----++-----------+-------++--------+ | | | | | | | | +--------+-------++-----------+------+----------++--------+--------+ | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| +--------------------------------------------------------------------------------+ +--------------------------+ +--------------------------------------------------------------+ +----------+ +--------------------------------------------------------------------------------+ | -| | -| | -| | -| | -| | -| | -| | -| | -| | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| +-------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+ | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | Random Matrix Generator | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| +-------------------------------------------------------------------------------------------------------------------------------+ +----------------|-----------------+ | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | ++----------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------+ + | + | + | + | + | + | + | + | + | ++----------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------+ +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| +-----------------------------------------------------------------------------+ +-------------------------+ +--------------------------------|--------------------------+ +----------+ +-----------------------------------------------------------------------------+ | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | ------------+ | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | +-------+-------++----------------++----------+--------+--------+ | | | | | | +----------++----------------------++----------+ | | | | +--------+-------++----------+------+----------++-------+-------+ | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | . | . |------------- |------------ . || . | | | | | | | | . || . | . || . | | | | | | . | . |------------ ------------- . | . | | | +| | | 0.62 | 0.15 || n-si|nd V||tor | 0.91 ||0.48 | | | | | | | | 0.41 || 0.32 | 0.92 || 0.13 | | | | | | 0.62 | 0.15 || m-si|edmVec|or || 0.91 | 0.48 | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | ------------+ | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | +-------+-------++----------------++----------+--------+--------+ | | | | +----------++----------------------++----------+ | | | | +--------+-------++----------+------+----------++-------+-------+ | | +| | | | | | | || | || | | | | | | | +| | | | +---------+ | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | +-+ | | | | || | || | | | | | | | +| | | | | | | | | | | || | || | | | | | | | +| | | | Dot |r|duct | | | . || . | . || . | | | | | | | +| | | | | | | | | | | 0.74 || 0.15 | 0.53 || 0.21 | | | | | | | +| | | | | | | | | | | || | || | | | | | | | +| | | | | +-+ | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | +-------+-------++----------------++----------+--------+--------+ | | | | | | | || | || | | | | | +--------+-------++----------+------+----------++-------+-------+ | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | +---------+ | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | +----------++----------------------++----------+ | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | ---------------------- | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | . | . |------------- |------------ . || . | | | | | | || | || | | | | | | . | . |------------ ------------- . | . | | | +| | | 0.62 | 0.15 || n-si|nd V||tor | 0.91 ||0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 || m-si|edmVec|or || 0.91 | 0.48 | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | . || . | . || . | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | 0.97 || 0.45 | 0.11 || 0.05 | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | +-------+-------++----------------++----------+--------+--------+ | | | | | || | || | | | | | +--------+-------++----------+------+----------++-------+-------+ | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | +----------++----------------------++----------+ | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | +-------+-------++----------------++----------+--------+--------+ | | | | | || | || | | | | | +--------+-------++----------+------+----------++-------+-------+ | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | . || . | . || . | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | 0.61 || 0.77 | 0.59 || 0.83 | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | . | . || - | || | . || . | | | | | | || | || | | | | | | . | . || - | | || . | . | | | +| | | 0.62 | 0.15 |-------------nd V|------------ 0.91 ||0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 |------------edmVec------------- 0.91 | 0.48 | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | +----------++----------------------++----------+ | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | +-------+-------++----------------++----------+--------+--------+ | | | | | | | | +--------+-------++----------+------+----------++-------+-------+ | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| +-----------------------------------------------------------------------------+ +-------------------------+ +-----------------------------------------------------------+ +----------+ +-----------------------------------------------------------------------------+ | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/docs/flow.txt b/docs/flow.txt index 358924ce6..5fc416711 100644 --- a/docs/flow.txt +++ b/docs/flow.txt @@ -1,31 +1,62 @@ - |---------| - |inputFile| - +-----|---+ - | - |-----|---| - |d2parser | - +-----|---+ - | - |---|---| - | d2ast | - +---|---+ - | - |-----|----| - |2compiler | - ------|----+ - | - |----|----| - | d2graph | - +----|----+ - | -|----------|----------| -|2layouts/d2dagrelayou| -+----------|----------+ - | - |-----|----| - |2exporter | - ------|----+ - | - |----|----| - |d2target | - +---------+ + +-----------+ + | | + |inputFile | + | | + +------|----+ + | + | + | + | + |------|----| + | d2parser | + | | + +------|----+ + | + | + | + | + |----|---| + | | + | d2ast | + +----|---+ + | + | + | + | + |------|-----| + | | + |d2compiler | + -------|-----+ + | + | + | + | + +-----|-----+ + | | + | d2graph | + | | + +-----|-----+ + | + | + | + | +|------------|-----------| +|d2layouts//2dagrelayout | +| | ++------------|-----------+ + | + | + | + | + |------|-----| + |d2exporter | + | | + -------|-----+ + | + | + | + | + |-----|-----| + | | + | d2target | + +-----------+ From 3954431234a55f598577aae195a7b1d515365a4b Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sun, 23 Feb 2025 12:21:55 +0700 Subject: [PATCH 09/11] only auto adjust the height, remove AutoSize() seems like the layout engine always came up with the optimal width --- d2renderers/d2ascii/d2ascii.go | 182 +------- docs/examples/chess/dia.txt | 82 ++-- docs/examples/flipt/output.txt | 61 +-- docs/examples/japan-grid/japan.txt | 527 ++++++++++----------- docs/examples/twitter/out.txt | 475 ++++++++----------- docs/examples/vector-grid/vector-grid.txt | 537 +++++++++++----------- docs/flow.txt | 103 ++--- 7 files changed, 814 insertions(+), 1153 deletions(-) diff --git a/d2renderers/d2ascii/d2ascii.go b/d2renderers/d2ascii/d2ascii.go index 131a5e6b1..410dc2b15 100644 --- a/d2renderers/d2ascii/d2ascii.go +++ b/d2renderers/d2ascii/d2ascii.go @@ -4,7 +4,6 @@ import ( "bytes" "fmt" "math" - "sort" "strings" "oss.terrastruct.com/d2/d2target" @@ -64,11 +63,9 @@ func Render(diagram *d2target.Diagram, opts *RenderOpts) ([]byte, error) { } } - width, height = canvas.AutoSize() - fmt.Println("==== ", canvas.w, canvas.h, "====") - fmt.Println("==== ", width, height, "====") - canvas.ReScale(width, height) - + height = canvas.AutoHeight() + fmt.Println(canvas.h, height) + canvas.ReScale(canvas.w, height) return canvas.TrimBytes(), nil } @@ -326,181 +323,34 @@ func (c *Canvas) TrimBytes() []byte { return buf.Bytes() } -func (c *Canvas) AutoSize() (width, height int) { - type boxInfo struct { - x, y, w, h int - text string - hasUp, hasDown bool - hasLeft, hasRight bool - hasDiagonal bool - originalWidth int - } - - boxes := make([]boxInfo, 0) - - // Collect boxes and their connections - for _, pos := range c.textPositions { - up, down, left, right, diag := false, false, false, false, false - - // Check surrounding area for connections - checkRange := 2 - minX := max(0, pos.x-checkRange) - maxX := min(c.w, pos.x+pos.w+checkRange) - minY := max(0, pos.y-checkRange) - maxY := min(c.h, pos.y+pos.h+checkRange) - - // Check vertical connections - for x := pos.x; x < pos.x+pos.w; x++ { - if pos.y > 0 && c.grid[pos.y-1][x] == '|' { - up = true - } - if pos.y+pos.h < c.h && c.grid[pos.y+pos.h][x] == '|' { - down = true - } - } - - // Check horizontal and diagonal connections - for y := minY; y < maxY; y++ { - for x := minX; x < maxX; x++ { - ch := c.grid[y][x] - switch ch { - case '-': - if x < pos.x { - left = true - } else if x >= pos.x+pos.w { - right = true - } - case '/', '\\': - diag = true - } - } - } - - boxes = append(boxes, boxInfo{ - x: pos.x, - y: pos.y, - w: pos.w, - h: pos.h, - text: pos.text, - hasUp: up, - hasDown: down, - hasLeft: left, - hasRight: right, - hasDiagonal: diag, - originalWidth: pos.w, - }) - } - - // Sort boxes vertically - yBoxes := make([]boxInfo, len(boxes)) - copy(yBoxes, boxes) - sort.Slice(yBoxes, func(i, j int) bool { - return yBoxes[i].y < yBoxes[j].y - }) - - // Calculate vertical layout with increased padding +func (c *Canvas) AutoHeight() int { currY := 0 - yMapping := make(map[int]int) + mapping := make(map[int]int) - for i, box := range yBoxes { - lines := strings.Split(box.text, "\n") - minHeight := len(lines) + 4 // padding + border - - if box.hasDiagonal { // Add extra height for diagonal connections - minHeight += 2 - } + for i, label := range c.textPositions { + lines := strings.Split(label.text, "\n") + minHeight := len(lines) + 2 // +border if i == 0 { - yMapping[box.y] = 2 // Start with some padding + mapping[label.y] = 0 currY = minHeight + 2 continue } - spacing := 2 // spacing between boxes - prevBox := yBoxes[i-1] - - // Add more spacing for connections - if box.hasUp || prevBox.hasDown { - spacing = 3 - } - if box.hasDiagonal || prevBox.hasDiagonal { - spacing = 4 - } - - yMapping[box.y] = currY + spacing - currY = yMapping[box.y] + minHeight + mapping[label.y] = currY + 3 // +spacing + currY = mapping[label.y] + minHeight } - // Calculate final height maxH := 0 - for _, box := range yBoxes { - newY := yMapping[box.y] - lines := strings.Split(box.text, "\n") - boxHeight := len(lines) + 4 // padding + border - - if box.hasDiagonal { - boxHeight += 2 - } + for _, label := range c.textPositions { + newY := mapping[label.y] + lines := strings.Split(label.text, "\n") + boxHeight := len(lines) + 2 // +border maxH = max(maxH, newY+boxHeight) } - // Add extra vertical padding for top/bottom connections - topPad := 2 - bottomPad := 2 - for x := 0; x < c.w; x++ { - if c.grid[0][x] != ' ' { - topPad = 3 - } - if c.grid[c.h-1][x] != ' ' { - bottomPad = 3 - } - } - maxH += topPad + bottomPad - - // preserve the original width of each box - // but ensure it's wide enough for the content - maxW := 0 - for _, box := range boxes { - // Calculate minimum width needed for text - lines := strings.Split(box.text, "\n") - textWidth := 0 - for _, line := range lines { - textWidth = max(textWidth, len(line)) - } - - requiredWidth := textWidth + 4 // Base padding - - // Add extra width for connections - if box.hasLeft { - requiredWidth += 2 - } - if box.hasRight { - requiredWidth += 2 - } - if box.hasDiagonal { - requiredWidth += 4 - } - - // Use the larger of required width or original width - effectiveWidth := max(requiredWidth, box.originalWidth) - maxW = max(maxW, box.x+effectiveWidth) - } - - // Add padding for edge connections - leftPad := 2 - rightPad := 2 - for y := 0; y < c.h; y++ { - if c.grid[y][0] != ' ' { - leftPad = max(leftPad, 3) - } - if c.grid[y][c.w-1] != ' ' { - rightPad = max(rightPad, 3) - } - } - maxW += leftPad + rightPad - - return min(c.w, maxW), min(c.h, maxH) + return maxH } // ReScale reduces the size of ASCII art using a pixel-like sampling technique diff --git a/docs/examples/chess/dia.txt b/docs/examples/chess/dia.txt index 02a939136..4014dcbfa 100644 --- a/docs/examples/chess/dia.txt +++ b/docs/examples/chess/dia.txt @@ -1,53 +1,29 @@ - |----------| - | | - H|ns Niemann| - / | - /////---||---||-/// - ///// || | //// - ////// ||| ||| ///// - ||| | | | - ||| | | | - | || | || - | | | | - | || || | -||--------------|-------------|| | -| ||| || | -| |---------|--| || | -| | | || | -| |agnus Carlse| || | -| +------------+ || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| | || | -| |-------------| || | -|Pl|y Magnus Grou| || | -| | | || | -| --------------+ || | -| | || | -| | || | -| | || | -| |efendants || | -| ||| /// | | -| | /// | | -| +---------/// | | -| | | | | -| |Ches..com| | | -| | | | | -| +----|----+ | | -| | | | -| | | | -| | | || -| || | /|| -| || | /// -| || | /// -| |----|--------|/|/ -| | | | -| |ikaru Nakamur| | -| | | | -| +-------------+ | -| | -+-----------------------------+ + |-----------------| + / Hans Niemann | + ///////////+---|||------|||--/////// + ||////////// |||| ||| ///////| + ||||| || || || + | || | || +|-|---------------------||---------------------|| || +| |--------------|---| || | +| | Magnus Carlsen | || | +| +---------|--------+ || | +| | || | +| | || | +| | || | +| |----------|----------| || | +| | Play Magnus Group | || | +| +----------|----------+ || | +| | || | +| || defendants |||| | +| |||| //////|| | | +| |---|----------|///// | | +| | Chess.com | | | +| +-------|------+ | | +| | | | +| || | |||| +| ||| | /////////| +| |-------|------------|///|/// +| | Hikaru Nakamura | | +| +--------------------+ | ++----------------------------------------------+ diff --git a/docs/examples/flipt/output.txt b/docs/examples/flipt/output.txt index 3ee0ca725..a56cb3d78 100644 --- a/docs/examples/flipt/output.txt +++ b/docs/examples/flipt/output.txt @@ -1,37 +1,24 @@ - |-----------------------------------------------------| - | | - | |-----------------------------------------------| | - | | | | - | | | | - | | | | - | | | | - | | |----| |---| |----| |---| | | - | | | | | | | | | | | | |------------------------------| - | | | | | | | | | | | | | | - | | +----+ +---+ +----+ +---+ | | | |------| | -+---------------------------------------------------------------+ | | | | | | | | -| | | | | | | | | | -| | | | |----| |---| |----| |---| | | | ///-----| | | -| |---------| | | | | | | | | | | | | | | || | | | -| | | | | | | | | | | | | | | | | || +------+ | -| | | | | | +----+ +---+ +----+ +---+ | | | +---+|| | -| |///-----|linked |----///|| +-----------+ | | | | | | | | | -| || | | || | | | | | Test |--|----------------|---| | Release | -| |---------|| ----------+ || | | | | +----+ +---+ +----+ +---+ | | | +---| | -| | | | | | | | | | | | | | | | | | | || +------+ | -| | | | | | | | | | | | | | | | | | | || | | | -| | source | Build | |--|----------------|--| | | | | | | | | | | | |/ | | | -| | | | | | | | +----+ +---+ +----+ +---+ | | | //------ | | -| +---------+| |---------| || | | | | | | | | | | -| ||| | | || +-----------+ | | | | | | | | | -| |/// |assets | //|| | | | |----| |---| |----| |---| | | | +------+ | -| -----| |----/ | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | +------------------------------+ -| ----------+ | | | +----+ +---+ +----+ +---+ | | -| | | | | | -+---------------------------------------------------------------+ | | | | - | | | | - | | | | - | +-----------------------------------------------+ | - | | - +-----------------------------------------------------+ + +--------------------------------------------------------+ + | | + | |-------------------------------------------------| | + | | | | + | | | | + | | |----| |----| |----| |----| | | +--------------------------------+ + | | | | | | | | | | | | | | + | | +----+ +----+ +----+ +----+ | | | |-------| | +|------------------------------------------------------------------| | | | | | | | | +| +----------+ | | | |----| |----| |----| |----| | | | ||//-----| | | +| | | | | | | | | | | | | | | | | ||| +-------+ | +| ///-----| linked |----///| | | | +----+ +----+ +----+ +----+ | | | |----|| | +| |||| | | |||||-----------| | | | Test |--|-----------------|---| | Release | +| |----------| +----------+ | | | | | |----| |----| |----| |----| | | | +----||| +-------+ | +| | source | Build | |--|-----------------|---| | | | | | | | | | | | ||| | | | +| | | | | | | | +----+ +----+ +----+ +----+ | | | ///-----| | | +| +----------+||| |----------| ||| | | | | | | | | | | +| |///------ assets -----///||| +-----------+ | | | |----| |----| |----| |----| | | | +-------+ | +| | | | | | | | | | | | | | | | +--------------------------------+ +| +----------+ | | | +----+ +----+ +----+ +----+ | | ++------------------------------------------------------------------+ | | | | + | | | | + | +-------------------------------------------------+ | + +--------------------------------------------------------+ diff --git a/docs/examples/japan-grid/japan.txt b/docs/examples/japan-grid/japan.txt index 6b087f9fe..6ddb09ea4 100644 --- a/docs/examples/japan-grid/japan.txt +++ b/docs/examples/japan-grid/japan.txt @@ -1,286 +1,241 @@ -+-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | 北 海 道 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | 青 森 | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | 秋 田 | 岩 手 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | 石 川 | || 新 潟 | 山 形 | 宮 城 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | 福 井 | 富 山 || 群 馬 | 栃 木 | 福 島 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -|-----------||-----------|-----------|----------||-----------|----------||------------|----------|-----------||----------|------------|-----------| -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | 山 口 | 島 根 || 鳥 取 | 兵 庫 || 京 都 | 滋 賀 | 長 野 || 山 梨 | 埼 玉 | 茨 城 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | 広 島 || 岡 山 | 大 阪 || 奈 良 | 岐 阜 | 愛 知 || 静 岡 | TOKYO | 千 葉 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| 長 崎 || 佐 賀 | 福 岡 | || | || 和 歌 山 | 三 重 | || | 神 奈 川 | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || 熊 本 | 大 分 | || 愛 媛 | 香 川 || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| ||鹿 児 島 | 宮 崎 | || 高 知 | 徳 島 || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| 沖 縄 || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------+------------+----------------------++-----------+----------++-----------------------+-----------++----------+------------+-----------+ +|-----------||------------|-----------|-----------||-----------|-----------||------------|-----------|-----------||-----------|------------|------------| +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | 北 海 道 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +|-----------||------------|-----------|-----------||-----------|-----------||------------|-----------|-----------||-----------|------------|------------| +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +|-----------||------------|-----------|-----------||-----------|-----------||------------|-----------|-----------||-----------|------------|------------| +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | 青 森 | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +|-----------||------------|-----------|-----------||-----------|-----------||------------|-----------|-----------||-----------|------------|------------| +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | 秋 田 | 岩 手 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +|-----------||------------|-----------|-----------||-----------|-----------||------------|-----------|-----------||-----------|------------|------------| +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | 石 川 | || 新 潟 | 山 形 | 宮 城 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +|-----------||------------|-----------|-----------||-----------|-----------||------------|-----------|-----------||-----------|------------|------------| +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | 福 井 | 富 山 || 群 馬 | 栃 木 | 福 島 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +|-----------||------------|-----------|-----------||-----------|-----------||------------|-----------|-----------||-----------|------------|------------| +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | 山 口 | 島 根 || 鳥 取 | 兵 庫 || 京 都 | 滋 賀 | 長 野 || 山 梨 | 埼 玉 | 茨 城 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +|-----------||------------|-----------|-----------||-----------|-----------||------------|-----------|-----------||-----------|------------|------------| +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | 広 島 || 岡 山 | 大 阪 || 奈 良 | 岐 阜 | 愛 知 || 静 岡 | TOKYO | 千 葉 | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +|-----------||------------|-----------|-----------||-----------|-----------||------------|-----------|-----------||-----------|------------|------------| +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| 長 崎 || 佐 賀 | 福 岡 | || | || 和 歌 山 | 三 重 | || | 神 奈 川 | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +|-----------||------------|-----------|-----------||-----------|-----------||------------|-----------|-----------||-----------|------------|------------| +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || 熊 本 | 大 分 | || 愛 媛 | 香 川 || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +|-----------||------------|-----------|-----------||-----------|-----------||------------|-----------|-----------||-----------|------------|------------| +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || 鹿 児 島 | 宮 崎 | || 高 知 | 徳 島 || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +|-----------||------------|-----------|-----------||-----------|-----------||------------|-----------|-----------||-----------|------------|------------| +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| 沖 縄 || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | +| || | | || | || | | || | | | ++-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ diff --git a/docs/examples/twitter/out.txt b/docs/examples/twitter/out.txt index fe8a8e2fc..ee47d9815 100644 --- a/docs/examples/twitter/out.txt +++ b/docs/examples/twitter/out.txt @@ -1,288 +1,187 @@ - +---------------+ +--------------+ +---------------+ - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | Android | | Iphone | | Web | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - +---------------+ +--------------+ +---------------+ - - - - | | | - | | | - | | | - || | | - | | | - || | || - || | || - || | || - || | || - | | | - | +------|-------+ | - || | | || - | | | | - || || - | | - | | - | | - | | - | | - |witter Fronten| - // | - ///// | / - ///// | |/// - /// | | / - ///// | | /// - ///// | | /// - ///// | | // - ///// +--------------+ /// - ////// /// - // / - ///// /// - ////// // - |/// /// - | | - | | - | | - | | - | || - || | - || | - || | - | || - | | - || || - | | - | | - +-----------------|-------------------------------------------------------------------------------------------------------------------------|----------+ - | | | | - | | | | - | | | | - | | | | - | | |-------|-------| | - | | | | | - | | | | | - | +-------------|-------------+ | | | - | | | | | | - | | | | | | - | | | |------------------------------------------------------------| | | | - | | | | | | | | - | |TLS--PI (being deprecated) | | ## Tweet//ser content hydration, visibility filtering | | GraphQL | | - | | | | | Fe//rated Strato Co|um| - | | | | | /// | | | - | | | +------------------------------------------------------------+ ///// | / | - | +---------------------------+ ////// | |/// - | | ///// | | |//// - | | ////// | | | /// - | | ///// | | | // - | | /// | | | / - | | ///// +---------------+ | /// - | | ///// | //// - | | ////// | /// - | | ///// | /// - | | //// | | - | | //// | | - +-------------------|-----------------------------------------------/----------------------------------------------------------------------------------+ | - | //// | - || |// || - | | | - || | | - || | || - | // | - || /////// || - || /////// | - ||/ ////// | - //////// | - ////// /////// | - /// //// | - /////// /////// | - /////// //////// | - /////// /////// | - ////// //////// | - |///// |-----------------------------------------//--------------------------------------------------------------------------------------------------|--| - | | | - | | | - | | | - | | +----------------------------------+ | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - +-------|-------+ | | | | - | | | | | | - | | | | | | - | | | | | | - | | | -| ## **Time-in- mixer** | | - | Home mixer | | - |nject -ds, who-to-follow, onboardi|g | - | | | | - Conversation module | | - ///| | | | - Cursoring,pagination | | - //// //| | | | - Tweat deduplication | | - // // +---------------/ | | - Served data logging | | - //// // || | | || // | | | | - //// /// || | | || // | | | | - /// /// || | | | // | | | | - //// // || | | || // | | | | - //// /// || | | || // | | | | - // / | | | | / | | | | - //// // || || | || // | | | | - //// /// || | | || // | | | | - //// // || | | || // | +----------------------------------+ | - //// /// || | | | // | | - //// /// || | | || // | | - |/ / | | | | / | | - || | | | | | | +---|--------------|-------------|-------------------------|----------------------|----------------------------------------|---------------------+ - || | | | | | | | | | | | | - || || | | || || | | | | | | | - || || | | | | | | | | | | | - || | | | | | | | | | | | | - || | | | | || || | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | || || | | | | | | | | | | - | | | | | || | | | | | | | - | | | | | | || | | | | | | - | | || | | | || | || | | | | - | | | | | | | | | | | | | - || | | | | | / /| | | | | | - | | | | || || /// /// || | | | | - | | | | || | /// || | | | | - | | | | || || /// // || | | | | - | | | | || || // /// | | | | | - | | | | || ||/ // || | | | | - | | | | | / | //| | | | | +--------------+ - | | | | | /// | |// || | | | | | - | | | | | // || || // |------------| | |---------------| |------------------| | | -|--------------| |---------------| |-------------| |--------------| |-------------------| |----------------| ///| | |-----------| | | | | | | -| | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | | -| Tweety Pie | | Social graph | | Gizmoduck | | Manhattan | | Timeline Service | | Home Ranker | | Timeline | | Ad mixer | | Onboarding | |People discovery | | Fetch | -| | | | | | | | | | | | | Scorer | | | | service | | service | ///// | -| | | | | | | | | | | |// | | | | | | | |///////| | -| | | | | | | | | | | | //// | | | | | | | /////| | | -+--------------+ +---------------+ +-------------+ +--------------+ +-------------------+ +------|---------+ /|/// | +-----------+ | | | ////// | | | - | | // | | | | /// | | | - | +-----////---+ +---------------+ //////--------------+ | | - || ///// ////// +--------|-----+ - | ///// /////// | - | //// ////// | - | ///// /////// | - || //// ////// | - | // // | - | ////// // | - | /////// /// | - | /////// // | - || /////// // | - | /////// // | - | /// / | - | //////// /// | - | /////// // | - ///|/// // | - ////// || // | - /////// | /// | - /// | / | - |///// | // | - | | //// | - | || ////// | - | +-------|----------------------------------------///--------------------------------------------------------------------+ | - | | | ///// | | - | | || ///// | |----------------| - | | | /// | | | - | | | ///// | | | - |----------------| | |-----------| ///// |------------| |-------| |---------| |----------------| | | | - | | | | | ////// | | | | | | | | | | | - | | | | //// | | | | | | | | | | | - | | | | | | | | | | | | | | | | - | Home Scorer | | | CrMixer | | EarlyBird | | Utag | | Space | | Communities | | | Feature | - | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | |/// | - | | | | | | | | | | | | | | //| | - +---|--||---|----+ | +-----------+ +------------+ +-------+ +---------+ +----------------+ | //// |// | - | || || | | /// /| | - | || | | | / / | | - || | | | | | //// // +--|--------|----+ - | ||| | +-----------------------------------------------------------------------------------------------------------------------+ /// // | | - || || | /// // | | - || | | | //// // || || - /| | / / | |/ || || - // | // /// | || | | - / | / / | | | | - // | /// /// | | | | - // | // // | | || | - // // /// | | | | - |// // // || | | | - | // /// /// || | | | - | / / / | | | | - | // // /// || | | | - | // // // || || || | - | // // /// | | | | - | // /// // | || | | - | // // /// | | | | - | /////// //////// //////// | | | | - | ///// //// ////// | | | | - | //////// ////////// ////////// | || | | - | ///////// ///////// ////////// || || | | - | ///////// ////////// ////////// || || || | - |-------|-------| ///////// ///////// ////////// || || | | - | | ///////// ///////// /////////// || || | - | | //// //// ///// | | | +----------------+ - | | ///////// ////////// ////////// || |----------------| | | | - | | //////// ///////// +---------/|/// | | +--------|-----+ | | - | | ///////// ////////// | //|/////// | | | | | - | | //////// |/////////| | ////////// | | | | - | | ///////// | |/////// |//////// | | | - | | /// | | | | | | | - P|ediction Servic| | ...etc | | Memcache | | Manhattan | | Scoring | - | | | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | +---------+ | | +--------------+ | | - | | | | | | - | | +----------------+ | | - | | +-------|--------+ - +---------------+ | - | - | - | - | - | - | - | - | - | - | - | - | - | - |-------|-------| - | | - | | - | | - | | - | | - | | - | | - P|ediction Servic| - | | - | | - | | - | | - | | - | | - | | - | | - +---------------+ + +---------------+ +---------------+ +---------------+ + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | Android | | Iphone | | Web | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + +---------------+ +---------------+ +---------------+ + + | | | + | | | + || | || + || | || + || | || + ||| | ||| + || +-------|-------+ || + ||| | | ||| + ||| ||| + | | + | | + | | + |witter Frontend| + ///| | + //////// | |/// + //////// | | //// + ///// | | /// + //////// | | //// + //////// +---------------+ //// + /////// //// + //////// //// + ||/ /| + || | + | | + || || + || || + ||| | + || | + || | + | | + |-----------------|---------------------------------------------------------------------------------------------------------------------------|----------| + | | | | + | | | | + | | |-------|-------| | + | | | | | + | +-------------|--------------+ | | | + | | | | | | + | | | |-------------------------------------------------------------| | | | + | | TLS-API (being deprecated) | | ## Tweet/user content hydration, visibility filtering | | GraphQL | | + | | | | | ////|rated Strato Co|um| + | | | +-------------------------------------------------------------+ //////// | |//| + | +-------------|--------------+ //////// | | |//// + | | ////// | | | /// + | | //////// | | | //// + | | //////// +---------------+ | ///// + | | ///////// | ///// + | | /////// | ///| + | || ////// | || + +-------------------||---------------------------------------------///-----------------------------------------------------------------------------------+ || + ||| |//// || + || | || + || | || + || ///////// || + || ////////// || + |/////////// | + /////// /////// | + ////////// /////////// | + ////////// //////////// | + ////////// /////////// | + |///// |-----------------------------------------//----------------------------------------------------------------------------------------------------|--| + | | | + | | | + | | |----------------------------------| | + | | | | | + | | | | | + | | | | | + | | | | | + |-------|-------| | | | | + | | | | | | + | | | -| ## **Time-in- mixer** | | + | Home mixer | | -|Inject-ads, who-to-follow, onboard|ng | + ///| | | | - Conversation module | | + /////////+---------------/ | | - Cursoring,pagination | | + ////// //// || | || || /// | | - Tweat deduplication | | + //// // || || | || // | | - Served data logging | | + ////// //// || | || ||| /// | | | | + ////// //// || | || ||| /// | | | | + ////// //// || || || ||| /// | | | | + ////// //// ||| | | || /// | +----------------------------------+ | + ////// //// ||| || | || /// | | + |/// /// | | || | // | | + || || | | | || || +---|--------------|-------------|--------------------------|----------------------|-----------------------------------------|---------------------+ + || || || | || || || | | | | | | + || || | | | || || | | | | | | + || || || | | || || | | | | | | + || || | | || | || | | | | | | + || || || | | | | | | | | | | + || || | | | | | || || | | | | + || || || | || || || || || || | | | + || || | | | || |/ /| || | | | | + | | | | || ||| /////// || || | | | + | | | | || ||| //// /// ||| || | | | + | | | | || ||| //// //// || || | | | + | | | | | /|| ///|| || | | | +--------------+ + | | | | || //// ||| ||/// +------------+ | +---------------+ +-------------------+ | | +|--------------| |---------------| |--------------| |--------------| |-------------------| |----------------| ////| | |------------| | | | | | | +| | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | Timeline | | | | Onboarding | | People discovery | | | +| Tweety Pie | | Social graph | | Gizmoduck | | Manhattan | | Timeline Service | | Home Ranker | | Scorer | | Ad mixer | | service | | service | /////Fetch | +| | | | | | | | | | | |//// | | | | | | | //////////| | +| | | | | | | | | | | | //// | | | | | | ////// | | | ++--------------+ +---------------+ +--------------+ +--------------+ +-------------------+ +------|---------+ +-----//-----+ +------------+ +---------------+ +-///---------------+ | | + || /////// ///////// +--------|-----+ + | /////// ////////// || + | /////// ////////// | + || ////// //////// || + | ////// // | + | ////////// //// | + || /////////// /// | + | ////////// /// | + | /////////// //// | + ///|/////// /// | + ////////// || /// | + /////// | /// | + |///// | //// | + | || //////// | + | |-------|--------------------------------------/////---------------------------------------------------------------------| | + | | || //////// | |----------------| + | | | //////// | | | + |----------------| | |-----------| ///// |------------| |--------| |---------| |----------------| | | | + | | | | | //////// | | | | | | | | | | | + | | | | |/ | | | | | | | | | | | + | Home Scorer | | | CrMixer | | EarlyBird | | Utag | | Space | | Communities | | | Feature | + | | | | | | | | | | | | | | ///// | + +---|--||---|----+ | +-----------+ +------------+ +--------+ +---------+ +----------------+ | ///// |// | + || || || | | //// //| | + || | | | | | //// // +--|--------|----+ + || ||| || +------------------------------------------------------------------------------------------------------------------------+ ///// /// || || + || ||| || ///// /// || || + // | // // || |/ || || + /// | //// //// || | | | + /// | /// //// || || || | + // // /// | | | | + |/// //// //// || | | | + | /// /// /// | || | | + | /// /// //// || || || | + | /// //// //// || | | | + | /// /// //// || | | | + | /////// //////// //////// | | | | + | ///////////// ////////////// //////////////// || || | | + | ////////////// ////////////// //////////////// || || | | + |-------|-------| ///////////// ////////////// /////////////// ||| || | | + | | ///////////// ////////////// //////////////// ||| || | +----------------+ + | | ///////////// /////////////// //////////////// ||| |--------------|--| | | | + | | ////////////// //////////////---------||/////|/////// | |--------|-----| | | + | | //////// |/////////| | /////////// | | | | + | | //////////// |//////| |///////| | | | + |rediction Servi|e | ...etc | | Memcache | | Manhattan | | Scoring | + | | | | | | | | | | + | | +---------+ | | +--------------+ | | + | | | | | | + | | +-----------------+ +-------|--------+ + +---------------+ | + | + | + | + | + | + | + | + | + |-------|-------| + | | + | | + | | + | | + | | + |rediction Servi|e + | | + | | + | | + | | + +---------------+ diff --git a/docs/examples/vector-grid/vector-grid.txt b/docs/examples/vector-grid/vector-grid.txt index 93e10dc74..913ff4d14 100644 --- a/docs/examples/vector-grid/vector-grid.txt +++ b/docs/examples/vector-grid/vector-grid.txt @@ -1,261 +1,276 @@ -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| +-------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+ | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | Random Matrix Generator | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| +-------------------------------------------------------------------------------------------------------------------------------+ +----------------|-----------------+ | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -+----------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------+ - | - | - | - | - | - | - | - | - | -+----------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------+ -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| +-----------------------------------------------------------------------------+ +-------------------------+ +--------------------------------|--------------------------+ +----------+ +-----------------------------------------------------------------------------+ | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | ------------+ | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | +-------+-------++----------------++----------+--------+--------+ | | | | | | +----------++----------------------++----------+ | | | | +--------+-------++----------+------+----------++-------+-------+ | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | . | . |------------- |------------ . || . | | | | | | | | . || . | . || . | | | | | | . | . |------------ ------------- . | . | | | -| | | 0.62 | 0.15 || n-si|nd V||tor | 0.91 ||0.48 | | | | | | | | 0.41 || 0.32 | 0.92 || 0.13 | | | | | | 0.62 | 0.15 || m-si|edmVec|or || 0.91 | 0.48 | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | ------------+ | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | +-------+-------++----------------++----------+--------+--------+ | | | | +----------++----------------------++----------+ | | | | +--------+-------++----------+------+----------++-------+-------+ | | -| | | | | | | || | || | | | | | | | -| | | | +---------+ | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | +-+ | | | | || | || | | | | | | | -| | | | | | | | | | | || | || | | | | | | | -| | | | Dot |r|duct | | | . || . | . || . | | | | | | | -| | | | | | | | | | | 0.74 || 0.15 | 0.53 || 0.21 | | | | | | | -| | | | | | | | | | | || | || | | | | | | | -| | | | | +-+ | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | +-------+-------++----------------++----------+--------+--------+ | | | | | | | || | || | | | | | +--------+-------++----------+------+----------++-------+-------+ | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | +---------+ | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | +----------++----------------------++----------+ | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | ---------------------- | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | . | . |------------- |------------ . || . | | | | | | || | || | | | | | | . | . |------------ ------------- . | . | | | -| | | 0.62 | 0.15 || n-si|nd V||tor | 0.91 ||0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 || m-si|edmVec|or || 0.91 | 0.48 | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | . || . | . || . | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | 0.97 || 0.45 | 0.11 || 0.05 | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | +-------+-------++----------------++----------+--------+--------+ | | | | | || | || | | | | | +--------+-------++----------+------+----------++-------+-------+ | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | +----------++----------------------++----------+ | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | +-------+-------++----------------++----------+--------+--------+ | | | | | || | || | | | | | +--------+-------++----------+------+----------++-------+-------+ | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | . || . | . || . | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | 0.61 || 0.77 | 0.59 || 0.83 | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | . | . || - | || | . || . | | | | | | || | || | | | | | | . | . || - | | || . | . | | | -| | | 0.62 | 0.15 |-------------nd V|------------ 0.91 ||0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 |------------edmVec------------- 0.91 | 0.48 | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | +----------++----------------------++----------+ | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | +-------+-------++----------------++----------+--------+--------+ | | | | | | | | +--------+-------++----------+------+----------++-------+-------+ | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| +-----------------------------------------------------------------------------+ +-------------------------+ +-----------------------------------------------------------+ +----------+ +-----------------------------------------------------------------------------+ | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | +| | +| | +| | +| | +| | +| | +| | +| | + +| | +| | +| | +| | +| | +| +----------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------+ | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | + +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | Random Matrix Generator | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | + +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| +----------------------------------------------------------------------------------------------------------------------------------------+ +-----------------|------------------+ | +| | | +| | | +| | | +| | | + +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------+ + | + | + | + | + | + | + + | + | + | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------+ +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | + +| | | +| +-----------------------------------------------------------------------------------+ +---------------------------+ +-----------------------------------|----------------------------+ +-----------+ +-----------------------------------------------------------------------------------+ | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | +------------+ | | | | | | | | | +| | | | | | | | | | | | | | + +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | | +-----------++-----------+-----------++-----------+ | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | . | . |------------- |------------- . || . | | | | | | | | . || . | . || . | | | | | | . | . |------------- -------------- . | . | | | +| | | 0.62 | 0.15 || n-s|zen V||tor | 0.91 || 0.48 | | | | | | | | 0.41 || 0.32 | 0.92 || 0.13 | | | | | | 0.62 | 0.15 || m-s|zem Ve|tor || 0.91 | 0.48 | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | +------------+ | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | +-----------++-----------+-----------++-----------+ | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | +| | | | | | | || | || | | | | | | | +| | | | +---------+ | | | || | || | | | | | | | + +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | +-+ | | | | || | || | | | | | | | +| | | | | | | | | | | || | || | | | | | | | +| | | | Dot |r|duct | | | . || . | . || . | | | | | | | +| | | | | | | | | | | 0.74 || 0.15 | 0.53 || 0.21 | | | | | | | +| | | | | | | | | | | || | || | | | | | | | +| | | | | +-+ | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | | | | | | | | || | || | | | | | | | +| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | | | || | || | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | + +| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | +---------+ | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | +-----------++-----------+-----------++-----------+ | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | ----------------------- | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | . | . |------------- |------------- . || . | | | | | | || | || | | | | | | . | . |------------- -------------- . | . | | | +| | | 0.62 | 0.15 || n-s|zen V||tor | 0.91 || 0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 || m-s|zem Ve|tor || 0.91 | 0.48 | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | . || . | . || . | | | | | | | || | | || | | | | + +| | | | || | || | || | | | | | | 0.97 || 0.45 | 0.11 || 0.05 | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | || | || | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | +-----------++-----------+-----------++-----------+ | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | + +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | | | | | | || | || | | | | | | | +| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | || | || | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | . || . | . || . | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | 0.61 || 0.77 | 0.59 || 0.83 | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | + +| | | . | . || - | || | . || . | | | | | | || | || | | | | | | . | . || - | | || . | . | | | +| | | 0.62 | 0.15 |-------------zen V|------------- 0.91 || 0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 |-------------zem Ve-------------- 0.91 | 0.48 | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | +-----------++-----------+-----------++-----------+ | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | | | | | | || | | || | | | | +| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | + +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| +-----------------------------------------------------------------------------------+ +---------------------------+ +----------------------------------------------------------------+ +-----------+ +-----------------------------------------------------------------------------------+ | +| | +| | +| | +| | +| | +| | + +| | +| | +| | +| | +| | +| | +| | +| | ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/docs/flow.txt b/docs/flow.txt index 5fc416711..10b73cf24 100644 --- a/docs/flow.txt +++ b/docs/flow.txt @@ -1,62 +1,41 @@ - +-----------+ - | | - |inputFile | - | | - +------|----+ - | - | - | - | - |------|----| - | d2parser | - | | - +------|----+ - | - | - | - | - |----|---| - | | - | d2ast | - +----|---+ - | - | - | - | - |------|-----| - | | - |d2compiler | - -------|-----+ - | - | - | - | - +-----|-----+ - | | - | d2graph | - | | - +-----|-----+ - | - | - | - | -|------------|-----------| -|d2layouts//2dagrelayout | -| | -+------------|-----------+ - | - | - | - | - |------|-----| - |d2exporter | - | | - -------|-----+ - | - | - | - | - |-----|-----| - | | - | d2target | - +-----------+ + |------------| + | inputFile | + +------|-----+ + | + | + |------|-----| + | d2parser | + +------|-----+ + | + | + | + |----|----| + | d2ast | + +----|----+ + | + | + |-------|------| + | d2compiler | + +-------|------+ + | + | + | + |-----|------| + | d2graph | + +-----|------+ + | + | +|-------------|-------------| +| d2layouts/d2dagrelayout | ++-------------|-------------+ + | + | + +-------|------+ + | | + | d2exporter | + +-------|------+ + | + | + |-----|------| + | d2target | + +------------+ From a4260057cec13685170b8503cb529d1921f54bb4 Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Tue, 25 Feb 2025 15:25:18 +0700 Subject: [PATCH 10/11] draw arrow head and disable ReScale(/*for now*/) --- d2renderers/d2ascii/d2ascii.go | 58 ++++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 14 deletions(-) diff --git a/d2renderers/d2ascii/d2ascii.go b/d2renderers/d2ascii/d2ascii.go index 410dc2b15..cc131287f 100644 --- a/d2renderers/d2ascii/d2ascii.go +++ b/d2renderers/d2ascii/d2ascii.go @@ -2,7 +2,6 @@ package d2ascii import ( "bytes" - "fmt" "math" "strings" @@ -47,14 +46,6 @@ func Render(diagram *d2target.Diagram, opts *RenderOpts) ([]byte, error) { canvas.setOffset(-int(tl.X), -int(tl.Y)) canvas.setPad(pad) - // Draw shapes - for _, shape := range diagram.Shapes { - err := canvas.drawShape(shape) - if err != nil { - return nil, err - } - } - // Draw connections for _, conn := range diagram.Connections { err := canvas.drawConnection(conn) @@ -63,9 +54,16 @@ func Render(diagram *d2target.Diagram, opts *RenderOpts) ([]byte, error) { } } - height = canvas.AutoHeight() - fmt.Println(canvas.h, height) - canvas.ReScale(canvas.w, height) + // Draw shapes + for _, shape := range diagram.Shapes { + err := canvas.drawShape(shape) + if err != nil { + return nil, err + } + } + + // TODO: preserve arrow head + // canvas.ReScale(canvas.w, canvas.AutoHeight()) return canvas.TrimBytes(), nil } @@ -182,16 +180,48 @@ func (c *Canvas) drawCircle(x, y, w, h int, label string) error { } func (c *Canvas) drawConnection(conn d2target.Connection) error { - // Draw a simple line between points for now points := make([]struct{ x, y int }, len(conn.Route)) for i, p := range conn.Route { points[i].x, points[i].y = c.transformPoint(int(p.X), int(p.Y)) } - for i := 0; i < len(points)-1; i++ { + // Draw lines between points + for i := range len(points) - 1 { c.drawLine(points[i].x, points[i].y, points[i+1].x, points[i+1].y) } + // Draw destination arrow if needed + if len(points) >= 2 && conn.DstArrow != d2target.NoArrowhead { + end, prev := points[len(points)-1], points[len(points)-2] + // Calculate angle for arrow direction + dx := float64(end.x - prev.x) + dy := float64(end.y - prev.y) + angle := math.Atan2(dy, dx) + + // Determine arrow character and offsets based on angle + var arrow rune + var mx, my int + switch { + case angle > -math.Pi/4 && angle <= math.Pi/4: + arrow = '>' + mx = -1 // Move left + my = 0 + case angle > math.Pi/4 && angle <= 3*math.Pi/4: + arrow = 'v' + mx = 0 + my = -1 // Move up + case angle > 3*math.Pi/4 || angle <= -3*math.Pi/4: + arrow = '<' + mx = 1 // Move right + my = 0 + default: // -3*math.Pi/4 < angle <= -math.Pi/4 (upward) + arrow = '^' + mx = 0 + my = 1 // Move down + } + c.set(end.x+mx, end.y+my, arrow) + } + return nil } From 31299b8e6814af14312ab07a045e6e859cf5317c Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Tue, 25 Feb 2025 15:35:27 +0700 Subject: [PATCH 11/11] preserve the arrow head when ReScale() --- d2renderers/d2ascii/d2ascii.go | 64 +++++++++++++++--- docs/examples/chess/dia.txt | 24 +++---- docs/examples/flipt/output.txt | 14 ++-- docs/examples/twitter/out.txt | 82 +++++++++++------------ docs/examples/vector-grid/vector-grid.txt | 28 ++++---- docs/flow.txt | 28 ++++---- 6 files changed, 141 insertions(+), 99 deletions(-) diff --git a/d2renderers/d2ascii/d2ascii.go b/d2renderers/d2ascii/d2ascii.go index cc131287f..f02de8a49 100644 --- a/d2renderers/d2ascii/d2ascii.go +++ b/d2renderers/d2ascii/d2ascii.go @@ -62,8 +62,7 @@ func Render(diagram *d2target.Diagram, opts *RenderOpts) ([]byte, error) { } } - // TODO: preserve arrow head - // canvas.ReScale(canvas.w, canvas.AutoHeight()) + canvas.ReScale(canvas.w, canvas.AutoHeight()) return canvas.TrimBytes(), nil } @@ -383,6 +382,10 @@ func (c *Canvas) AutoHeight() int { return maxH } +func isArrowHead(ch rune) bool { + return ch == '>' || ch == '<' || ch == '^' || ch == 'v' +} + // ReScale reduces the size of ASCII art using a pixel-like sampling technique func (c *Canvas) ReScale(targetWidth, targetHeight int) { scaleX := float64(targetWidth) / float64(c.w) @@ -397,27 +400,67 @@ func (c *Canvas) ReScale(targetWidth, targetHeight int) { } } - // First scale the borders and lines (source -> target mapping) - for y := 0; y < c.h; y++ { + // First pass: scale borders and lines, but skip arrow heads + for y := range c.h { targetY := int(float64(y) * scaleY) if targetY >= targetHeight { continue } - for x := 0; x < c.w; x++ { + for x := range c.w { targetX := int(float64(x) * scaleX) if targetX >= targetWidth { continue } ch := c.grid[y][x] - if ch == '+' || ch == '-' || ch == '|' || ch == '/' || ch == '\\' || ch == '.' { + if !isArrowHead(ch) && (ch == '+' || ch == '-' || ch == '|' || ch == '/' || ch == '\\') { newGrid[targetY][targetX] = ch } } } - // Then redraw text at scaled positions + // Second pass: copy arrow heads with position adjustment + for y := range c.h { + targetY := int(float64(y) * scaleY) + if targetY >= targetHeight { + continue + } + + for x := range c.w { + targetX := int(float64(x) * scaleX) + if targetX >= targetWidth { + continue + } + + ch := c.grid[y][x] + if isArrowHead(ch) { + // Determine offset based on arrow direction + var dx, dy int + switch ch { + case '>': + dx = -1 + case '<': + dx = 1 + case 'v': + dy = -1 + case '^': + dy = 1 + } + + // Apply offset and ensure we stay within bounds + finalX := min(max(0, targetX+dx), targetWidth-1) + finalY := min(max(0, targetY+dy), targetHeight-1) + + // Only place arrow if target position is empty or has a line character + if newGrid[finalY][finalX] == ' ' || newGrid[finalY][finalX] == '-' || newGrid[finalY][finalX] == '|' { + newGrid[finalY][finalX] = ch + } + } + } + } + + // Third pass: redraw text at scaled positions for _, label := range c.textPositions { // Get box dimensions in source coordinates first srcBoxCenterY := label.y + label.h/2 @@ -455,11 +498,10 @@ func (c *Canvas) ReScale(targetWidth, targetHeight int) { continue } - // Only overwrite space or existing text + // Only overwrite if not an arrow head and not a border existing := newGrid[targetY][targetX] - if existing == ' ' || (existing != '+' && existing != '-' && - existing != '|' && existing != '/' && existing != '\\' && - existing != '.') { + if !isArrowHead(existing) && existing != '+' && existing != '-' && + existing != '|' && existing != '/' && existing != '\\' { newGrid[targetY][targetX] = ch } } diff --git a/docs/examples/chess/dia.txt b/docs/examples/chess/dia.txt index 4014dcbfa..6c1e003ef 100644 --- a/docs/examples/chess/dia.txt +++ b/docs/examples/chess/dia.txt @@ -1,29 +1,29 @@ |-----------------| - / Hans Niemann | - ///////////+---|||------|||--/////// - ||////////// |||| ||| ///////| + | Hans Niemann | + ///////////+---||--------||--+////// + ||////////// |||| ^ ^ ||| ///////| ||||| || || || - | || | || -|-|---------------------||---------------------|| || -| |--------------|---| || | + v || | || +|-----------------------|----------------------|| || +| |------------------| || | | | Magnus Carlsen | || | | +---------|--------+ || | | | || | | | || | -| | || | -| |----------|----------| || | +| v || | +| |---------------------| || | | | Play Magnus Group | || | | +----------|----------+ || | | | || | | || defendants |||| | -| |||| //////|| | | -| |---|----------|///// | | +| |||| v //////|| | | +| |--------------|///// | | | | Chess.com | | | | +-------|------+ | | | | | | | || | |||| -| ||| | /////////| -| |-------|------------|///|/// +| ||| v | /////////| +| |--------------------|///|/// | | Hikaru Nakamura | | | +--------------------+ | +----------------------------------------------+ diff --git a/docs/examples/flipt/output.txt b/docs/examples/flipt/output.txt index a56cb3d78..a73482d17 100644 --- a/docs/examples/flipt/output.txt +++ b/docs/examples/flipt/output.txt @@ -7,15 +7,15 @@ | | | | | | | | | | | | | | | | +----+ +----+ +----+ +----+ | | | |-------| | |------------------------------------------------------------------| | | | | | | | | -| +----------+ | | | |----| |----| |----| |----| | | | ||//-----| | | +| +----------+ | | | |----| |----| |----| |----| | | | ||//---> | | | | | | | | | | | | | | | | | | | | ||| +-------+ | -| ///-----| linked |----///| | | | +----+ +----+ +----+ +----+ | | | |----|| | -| |||| | | |||||-----------| | | | Test |--|-----------------|---| | Release | -| |----------| +----------+ | | | | | |----| |----| |----| |----| | | | +----||| +-------+ | -| | source | Build | |--|-----------------|---| | | | | | | | | | | | ||| | | | -| | | | | | | | +----+ +----+ +----+ +----+ | | | ///-----| | | +| ///---> | linked |----///| | | | +----+ +----+ +----+ +----+ | | | |----|| | +| |||| | | |||||-----------| | | | Test |--|-----------------|-> | | Release | +| |----------| +----------+ | | | | | |----| |----| |----| |----| | | | +----+|| +-------+ | +| | source | Build | |--|-----------------|-> | | | | | | | | | | | | ||| | | | +| | | | | | | | +----+ +----+ +----+ +----+ | | | ///---> | | | | +----------+||| |----------| ||| | | | | | | | | | | -| |///------ assets -----///||| +-----------+ | | | |----| |----| |----| |----| | | | +-------+ | +| |///---> | assets |----///||| +-----------+ | | | |----| |----| |----| |----| | | | +-------+ | | | | | | | | | | | | | | | | | +--------------------------------+ | +----------+ | | | +----+ +----+ +----+ +----+ | | +------------------------------------------------------------------+ | | | | diff --git a/docs/examples/twitter/out.txt b/docs/examples/twitter/out.txt index ee47d9815..122fd9ece 100644 --- a/docs/examples/twitter/out.txt +++ b/docs/examples/twitter/out.txt @@ -17,8 +17,8 @@ || | || || | || || | || - ||| | ||| - || +-------|-------+ || + ||| v ||| + || +---------------+ || ||| | | ||| ||| ||| | | @@ -43,13 +43,13 @@ || | | | |-----------------|---------------------------------------------------------------------------------------------------------------------------|----------| + | | v | | | | | - | | | | - | | |-------|-------| | - | | | | | - | +-------------|--------------+ | | | + | | |---------------| | + | v | | | + | +----------------------------+ | | | | | | | | | - | | | |-------------------------------------------------------------| | | | + | | | |-------------------------------------v-----------------------| | | | | | TLS-API (being deprecated) | | ## Tweet/user content hydration, visibility filtering | | GraphQL | | | | | | | ////|rated Strato Co|um| | | | +-------------------------------------------------------------+ //////// | |//| @@ -60,7 +60,7 @@ | | ///////// | ///// | | /////// | ///| | || ////// | || - +-------------------||---------------------------------------------///-----------------------------------------------------------------------------------+ || + +--------------------|---------------------------------------------//------------------------------------------------------------------------------------+ || ||| |//// || || | || || | || @@ -69,22 +69,22 @@ |/////////// | /////// /////// | ////////// /////////// | - ////////// //////////// | + ////////// //////////// v ////////// /////////// | - |///// |-----------------------------------------//----------------------------------------------------------------------------------------------------|--| + |///// |--------------------------------------------------------------------------------------------------------------------------------------------------| | | | | | | | | |----------------------------------| | | | | | | | | | | | + v | | | | | | | | | - | | | | | - |-------|-------| | | | | + |---------------| | | | | | | | | | | - | | | -| ## **Time-in- mixer** | | - | Home mixer | | -|Inject-ads, who-to-follow, onboard|ng | + | | | -| ## **vime-in- mixer** | | + | Home mixer | | -|Inject-ads,vwho-to-follow, onboard|ng | ///| | | | - Conversation module | | - /////////+---------------/ | | - Cursoring,pagination | | + /////////+---------------+ | | - Cursoring,pagination | | ////// //// || | || || /// | | - Tweat deduplication | | //// // || || | || // | | - Served data logging | | ////// //// || | || ||| /// | | | | @@ -105,15 +105,15 @@ | | | | || ||| /////// || || | | | | | | | || ||| //// /// ||| || | | | | | | | || ||| //// //// || || | | | - | | | | | /|| ///|| || | | | +--------------+ - | | | | || //// ||| ||/// +------------+ | +---------------+ +-------------------+ | | -|--------------| |---------------| |--------------| |--------------| |-------------------| |----------------| ////| | |------------| | | | | | | -| | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | Timeline | | | | Onboarding | | People discovery | | | -| Tweety Pie | | Social graph | | Gizmoduck | | Manhattan | | Timeline Service | | Home Ranker | | Scorer | | Ad mixer | | service | | service | /////Fetch | -| | | | | | | | | | | |//// | | | | | | | //////////| | -| | | | | | | | | | | | //// | | | | | | ////// | | | -+--------------+ +---------------+ +--------------+ +--------------+ +-------------------+ +------|---------+ +-----//-----+ +------------+ +---------------+ +-///---------------+ | | + v v v v | v /|| v ///|| v|| v v v +--------------+ + | | | | | //// ||| ||/// +------------+ | +---------------+ +-------------------+ | | +|--------------| |---------------| |--------------| |--------------| |-------------------| < |----------------| ////| | |------------| | | | | | | +| | | | | | | | | | | | > | | | | | | | v | | | +| | | | | | | | | v | | | | Timeline | | | | Onboavding | | People dvscovery | | | +| Tweety Pie | | Social graph | | Gizmoduck | | Manhattan | | Timeline Service | | Home Ranker | | Scorer | | Ad mixer | | service | | service | |////Fetch | +| | | | | | | | | | | |//// | | | | | | | //|///////| | +| | | | | | | | | | | | ///| | | | | | | ////// | | | ++--------------+ +---------------+ +--------------+ +--------------+ +-------------------+ +------|---------+ +------------+ +------------+ +---------------+ +-------------------+ | | || /////// ///////// +--------|-----+ | /////// ////////// || | /////// ////////// | @@ -127,16 +127,16 @@ ////////// || /// | /////// | /// | |///// | //// | - | || //////// | - | |-------|--------------------------------------/////---------------------------------------------------------------------| | - | | || //////// | |----------------| + | || //////// v + | |-------|--------------------------------------//------------------------------------------------------------------------| | + v | |v //////// | |----------------| | | | //////// | | | |----------------| | |-----------| ///// |------------| |--------| |---------| |----------------| | | | | | | | | //////// | | | | | | | | | | | - | | | | |/ | | | | | | | | | | | + | | | | | < | | | | | | | | | | | | Home Scorer | | | CrMixer | | EarlyBird | | Utag | | Space | | Communities | | | Feature | - | | | | | | | | | | | | | | ///// | - +---|--||---|----+ | +-----------+ +------------+ +--------+ +---------+ +----------------+ | ///// |// | + | | | | | | | | | | | | | | /|/// | + +----------------+ | +-----------+ +------------+ +--------+ +---------+ +----------------+ | ///// |// | || || || | | //// //| | || | | | | | //// // +--|--------|----+ || ||| || +------------------------------------------------------------------------------------------------------------------------+ ///// /// || || @@ -152,18 +152,18 @@ | /// /// //// || | | | | /////// //////// //////// | | | | | ///////////// ////////////// //////////////// || || | | - | ////////////// ////////////// //////////////// || || | | - |-------|-------| ///////////// ////////////// /////////////// ||| || | | - | | ///////////// ////////////// //////////////// ||| || | +----------------+ - | | ///////////// /////////////// //////////////// ||| |--------------|--| | | | - | | ////////////// //////////////---------||/////|/////// | |--------|-----| | | - | | //////// |/////////| | /////////// | | | | - | | //////////// |//////| |///////| | | | + v ////////////// ////////////// //////////////// || || | v + |---------------| ///////////// ////////////// /////////////// ||| v || | | + | | ///////////// ////////////// //////////////// ||| || v| +----------------+ + | | ///////////// /////////////// //////////////// ||| |-----------------| | | | + | | ////////////// /////////////|---------||/////|/////// | |--------------| | | + | | //////// |/////////| | //////////| | | | | + | v | ////////// | |///// | |////// | | | | |rediction Servi|e | ...etc | | Memcache | | Manhattan | | Scoring | | | | | | | | | | | | | +---------+ | | +--------------+ | | | | | | | | - | | +-----------------+ +-------|--------+ + | | +-----------------+ +----------------+ +---------------+ | | | @@ -172,13 +172,13 @@ | | | - | - |-------|-------| - | | + v + |---------------| | | | | | | | | + | v | |rediction Servi|e | | | | diff --git a/docs/examples/vector-grid/vector-grid.txt b/docs/examples/vector-grid/vector-grid.txt index 913ff4d14..582c319ed 100644 --- a/docs/examples/vector-grid/vector-grid.txt +++ b/docs/examples/vector-grid/vector-grid.txt @@ -58,7 +58,7 @@ | | | | | | | | | | | | | | | | | | -| +----------------------------------------------------------------------------------------------------------------------------------------+ +-----------------|------------------+ | +| +----------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------+ | | | | | | | | | | @@ -74,7 +74,7 @@ | | | | | | | | | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------+ ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | | | @@ -85,7 +85,7 @@ | | | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------+ ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | | | | | | | | | @@ -101,7 +101,7 @@ | | | | | | -| +-----------------------------------------------------------------------------------+ +---------------------------+ +-----------------------------------|----------------------------+ +-----------+ +-----------------------------------------------------------------------------------+ | +| +-----------------------------------------------------------------------------------+ +---------------------------+ +----------------------------------------------------------------+ +-----------+ +-----------------------------------------------------------------------------------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | @@ -114,8 +114,8 @@ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | +| | | | | | v | | | | | | +| | | | | | | | | | | | | | | | +------------+ | | | | | | | | | | | | | | | | | | | | | | | @@ -138,7 +138,7 @@ | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | . | . |------------- |------------- . || . | | | | | | | | . || . | . || . | | | | | | . | . |------------- -------------- . | . | | | +| | | | ||-------- - | || ------> | || | | | | | | | | || | || | | | | | | | ||-------- - | | --------|| | | | | | | | 0.62 | 0.15 || n-s|zen V||tor | 0.91 || 0.48 | | | | | | | | 0.41 || 0.32 | 0.92 || 0.13 | | | | | | 0.62 | 0.15 || m-s|zem Ve|tor || 0.91 | 0.48 | | | | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | | | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | @@ -164,7 +164,7 @@ | | | | | | | | | || | || | | | | | | | | | | | | +-+ | | | | || | || | | | | | | | | | | | | | | | | | | || | || | | | | | | | -| | | | Dot |r|duct | | | . || . | . || . | | | | | | | +| | | | Dot |r|duct | | | || | || | | | | | | | | | | | | | | | | | | 0.74 || 0.15 | 0.53 || 0.21 | | | | | | | | | | | | | | | | | | || | || | | | | | | | | | | | | +-+ | | | | || | || | | | | | | | @@ -179,18 +179,18 @@ | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | | | | | || | || | || | | | | | +-----------++-----------+-----------++-----------+ | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | ----------------------- | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | |----|-----------|--> | | | || | | || | | | | | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | . | . |------------- |------------- . || . | | | | | | || | || | | | | | | . | . |------------- -------------- . | . | | | +| | | | ||-------- - | || ------> | || | | | | | | || | || | | | | | | | ||-------- - | | --------|| | | | | | | | 0.62 | 0.15 || n-s|zen V||tor | 0.91 || 0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 || m-s|zem Ve|tor || 0.91 | 0.48 | | | | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | . || . | . || . | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | | | | | || | || | || | | | | | | 0.97 || 0.45 | 0.11 || 0.05 | | | | | | | || | | || | | | | | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | @@ -217,7 +217,7 @@ | | | | | | | || | || | | | | | | | | | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | || | || | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | . || . | . || . | | | | | | | || | | || | | | | +| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | | | | | || | || | || | | | | | | 0.61 || 0.77 | 0.59 || 0.83 | | | | | | | || | | || | | | | | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | @@ -228,8 +228,8 @@ | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | . | . || - | || | . || . | | | | | | || | || | | | | | | . | . || - | | || . | . | | | -| | | 0.62 | 0.15 |-------------zen V|------------- 0.91 || 0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 |-------------zem Ve-------------- 0.91 | 0.48 | | | +| | | | || - | || | || | | | | | | || | || | | | | | | | || - | | || | | | | +| | | 0.62 | 0.15 ||-----------|zen V||---------> | 0.91 || 0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 ||-----------|zem Ve|-----------|| 0.91 | 0.48 | | | | | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | | | | | || | || | || | | | | | +-----------++-----------+-----------++-----------+ | | | | | | || | | || | | | | | | | | || | || | || | | | | | | | | | | | || | | || | | | | diff --git a/docs/flow.txt b/docs/flow.txt index 10b73cf24..4c0b8ff5d 100644 --- a/docs/flow.txt +++ b/docs/flow.txt @@ -2,40 +2,40 @@ | inputFile | +------|-----+ | - | - |------|-----| + v + |------------| | d2parser | +------|-----+ | | - | - |----|----| + v + |---------| | d2ast | +----|----+ | - | - |-------|------| + v + |--------------| | d2compiler | +-------|------+ | + v | - | - |-----|------| + |------------| | d2graph | +-----|------+ | - | -|-------------|-------------| + v +|---------------------------| | d2layouts/d2dagrelayout | +-------------|-------------+ | - | - +-------|------+ + v + +--------------+ | | | d2exporter | +-------|------+ | - | - |-----|------| + v + |------------| | d2target | +------------+