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 | + +---------+