Skip to content

Commit

Permalink
fixup
Browse files Browse the repository at this point in the history
  • Loading branch information
alixander committed Mar 2, 2025
1 parent c06bfd5 commit 0b9bb47
Show file tree
Hide file tree
Showing 10 changed files with 1,365 additions and 1,244 deletions.
42 changes: 22 additions & 20 deletions d2compiler/compile.go
Original file line number Diff line number Diff line change
Expand Up @@ -402,28 +402,30 @@ func (c *compiler) compileLabel(attrs *d2graph.Attributes, f d2ir.Node) {
if ok {
attrs.Language = fullTag
}
switch attrs.Language {
case "latex":
attrs.Shape.Value = d2target.ShapeText
case "markdown":
rendered, err := textmeasure.RenderMarkdown(scalar.ScalarString())
if err != nil {
c.errorf(f.LastPrimaryKey(), "malformed Markdown")
}
rendered = "<div>" + rendered + "</div>"
var xmlParsed interface{}
err = xml.Unmarshal([]byte(rendered), &xmlParsed)
if err != nil {
switch xmlErr := err.(type) {
case *xml.SyntaxError:
c.errorf(f.LastPrimaryKey(), "malformed Markdown: %s", xmlErr.Msg)
default:
c.errorf(f.LastPrimaryKey(), "malformed Markdown: %s", err.Error())
if attrs.Shape.Value == "" {
switch attrs.Language {
case "latex":
attrs.Shape.Value = d2target.ShapeText
case "markdown":
rendered, err := textmeasure.RenderMarkdown(scalar.ScalarString())
if err != nil {
c.errorf(f.LastPrimaryKey(), "malformed Markdown")
}
rendered = "<div>" + rendered + "</div>"
var xmlParsed interface{}
err = xml.Unmarshal([]byte(rendered), &xmlParsed)
if err != nil {
switch xmlErr := err.(type) {
case *xml.SyntaxError:
c.errorf(f.LastPrimaryKey(), "malformed Markdown: %s", xmlErr.Msg)
default:
c.errorf(f.LastPrimaryKey(), "malformed Markdown: %s", err.Error())
}
}
attrs.Shape.Value = d2target.ShapeText
default:
attrs.Shape.Value = d2target.ShapeCode
}
attrs.Shape.Value = d2target.ShapeText
default:
attrs.Shape.Value = d2target.ShapeCode
}
attrs.Label.Value = scalar.ScalarString()
default:
Expand Down
37 changes: 35 additions & 2 deletions d2renderers/d2svg/d2svg.go
Original file line number Diff line number Diff line change
Expand Up @@ -1420,7 +1420,23 @@ func drawShape(writer, appendixWriter io.Writer, diagramHash string, targetShape
return labelMask, err
}
gEl := d2themes.NewThemableElement("g", inlineTheme)
gEl.SetTranslate(float64(box.TopLeft.X), float64(box.TopLeft.Y))

labelPosition := label.FromString(targetShape.LabelPosition)
if labelPosition == label.Unset {
labelPosition = label.InsideMiddleCenter
}
var box *geo.Box
if labelPosition.IsOutside() {
box = s.GetBox()
} else {
box = s.GetInnerBox()
}
labelTL := labelPosition.GetPointOnBox(box, label.PADDING,
float64(targetShape.LabelWidth),
float64(targetShape.LabelHeight),
)
gEl.SetTranslate(labelTL.X, labelTL.Y)

gEl.Color = targetShape.Stroke
gEl.Content = render
fmt.Fprint(writer, gEl.Render())
Expand All @@ -1429,9 +1445,26 @@ func drawShape(writer, appendixWriter io.Writer, diagramHash string, targetShape
if err != nil {
return labelMask, err
}

labelPosition := label.FromString(targetShape.LabelPosition)
if labelPosition == label.Unset {
labelPosition = label.InsideMiddleCenter
}
var box *geo.Box
if labelPosition.IsOutside() {
box = s.GetBox()
} else {
box = s.GetInnerBox()
}
labelTL := labelPosition.GetPointOnBox(box, label.PADDING,
float64(targetShape.LabelWidth),
float64(targetShape.LabelHeight),
)

fmt.Fprintf(writer, `<g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="%f" y="%f" width="%d" height="%d">`,
box.TopLeft.X, box.TopLeft.Y, targetShape.Width, targetShape.Height,
labelTL.X, labelTL.Y, targetShape.LabelWidth, targetShape.LabelHeight,
)

// we need the self closing form in this svg/xhtml context
render = strings.ReplaceAll(render, "<hr>", "<hr />")

Expand Down
26 changes: 26 additions & 0 deletions e2etests/testdata/txtar/md-label/dagre/board.exp.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 0b9bb47

Please sign in to comment.