Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

acii art renderer #2353

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
10 changes: 6 additions & 4 deletions d2cli/export.go
Original file line number Diff line number Diff line change
@@ -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 != "" {
19 changes: 18 additions & 1 deletion d2cli/main.go
Original file line number Diff line number Diff line change
@@ -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
Loading
Oops, something went wrong.