goat – github.com/bep/goat Index | Files

package goat

import "github.com/bep/goat"

Index

Functions

func BuildAndWriteSVG

func BuildAndWriteSVG(src io.Reader, dst io.Writer)

BuildAndWriteSVG reads in a newline-delimited ASCII diagram from src and writes a corresponding SVG diagram to dst.

Types

type Bridge

type Bridge struct {
	// contains filtered or unexported fields
}

Bridge correspondes to combinations of "-)-" or "-(-" and is displayed as the vertical line "hopping over" the horizontal.

func (Bridge) Draw

func (b Bridge) Draw(out io.Writer)

Draw a bridge as an SVG elliptical arc element.

type Canvas

type Canvas struct {
	Width  int
	Height int
	// contains filtered or unexported fields
}

Canvas represents a 2D ASCII rectangle.

func NewCanvas

func NewCanvas(in io.Reader) Canvas

NewCanvas creates a new canvas with contents read from the given io.Reader. Content should be newline delimited.

func (*Canvas) Bridges

func (c *Canvas) Bridges() []Drawable

Bridges returns a slice of all bridges, "-)-" or "-(-".

func (*Canvas) Circles

func (c *Canvas) Circles() []Circle

Circles returns a slice of all 'o' and '*' characters not considered text.

func (*Canvas) HalfSteps

func (c *Canvas) HalfSteps() []Line

func (*Canvas) Lines

func (c *Canvas) Lines() []Line

Lines returns a slice of all Line drawables that we can detect -- in all possible orientations.

func (*Canvas) RoundedCorners

func (c *Canvas) RoundedCorners() []RoundedCorner

RoundedCorners returns a slice of all curvy corners in the diagram.

func (*Canvas) String

func (c *Canvas) String() string

func (*Canvas) Text

func (c *Canvas) Text() []Drawable

Text returns a slice of all text characters not belonging to part of the diagram. How these characters are identified is rather complicated.

func (*Canvas) Triangles

func (c *Canvas) Triangles() []Drawable

Triangles returns a slice of all detectable Triangles.

func (*Canvas) WriteSVGBody

func (c *Canvas) WriteSVGBody(dst io.Writer)

type Circle

type Circle struct {
	// contains filtered or unexported fields
}

Circle corresponds to "o" or "*" runes in the absence of surrounding alphanumerics.

func (*Circle) Draw

func (c *Circle) Draw(out io.Writer)

Draw a solid circle as an SVG circle element.

type Drawable

type Drawable interface {
	Draw(out io.Writer)
}

Drawable represents anything that can Draw itself.

type Index

type Index struct {
	// contains filtered or unexported fields
}

Index represents a position within an ASCII diagram.

type Line

type Line struct {
	// contains filtered or unexported fields
}

Line represents a straight segment between two points.

func (Line) Draw

func (l Line) Draw(out io.Writer)

Draw a straight line as an SVG path.

type Orientation

type Orientation int

Orientation represents the primary direction that a Drawable is facing.

const (
	NONE Orientation = iota // No orientation; no structure present.
	N                       // North
	NE                      // Northeast
	NW                      // Northwest
	S                       // South
	SE                      // Southeast
	SW                      // Southwest
	E                       // East
	W                       // West
)

type Pixel

type Pixel Index

Pixel represents the on-screen coordinates for an Index.

type RoundedCorner

type RoundedCorner struct {
	// contains filtered or unexported fields
}

RoundedCorner corresponds to combinations of "-." or "-'".

func (*RoundedCorner) Draw

func (c *RoundedCorner) Draw(out io.Writer)

Draw a rounded corner as an SVG elliptical arc element.

type SVG

type SVG struct {
	Body   string
	Width  int
	Height int
}

func BuildSVG

func BuildSVG(src io.Reader) SVG

BuildSVG reads in a newline-delimited ASCII diagram from src and returns a SVG.

func (SVG) String

func (s SVG) String() string

type Text

type Text struct {
	// contains filtered or unexported fields
}

Text corresponds to any runes not reserved for diagrams, or reserved runes surrounded by alphanumerics.

func (Text) Draw

func (t Text) Draw(out io.Writer)

Draw a single text character as an SVG text element.

type Triangle

type Triangle struct {
	// contains filtered or unexported fields
}

Triangle corresponds to "^", "v", "<" and ">" runes in the absence of surrounding alphanumerics.

func (Triangle) Draw

func (t Triangle) Draw(out io.Writer)

Draw a solid triable as an SVG polygon element.

Source Files

canvas.go index.go iter.go svg.go

Version
v0.5.0 (latest)
Published
Feb 22, 2022
Platform
windows/amd64
Imports
5 packages
Last checked
now

Tools for package owners.