renameiddelta
This commit is contained in:
parent
1cd3116747
commit
bf90a0112a
2 changed files with 55 additions and 12 deletions
|
|
@ -1436,16 +1436,12 @@ func Rename(g *d2graph.Graph, boardPath []string, key, newName string) (_ *d2gra
|
||||||
}
|
}
|
||||||
|
|
||||||
boardG := g
|
boardG := g
|
||||||
// baseAST := g.AST
|
|
||||||
|
|
||||||
if len(boardPath) > 0 {
|
if len(boardPath) > 0 {
|
||||||
// When compiling a nested board, we can read from boardG but only write to baseBoardG
|
|
||||||
boardG = GetBoardGraph(g, boardPath)
|
boardG = GetBoardGraph(g, boardPath)
|
||||||
if boardG == nil {
|
if boardG == nil {
|
||||||
return nil, "", fmt.Errorf("board %v not found", boardPath)
|
return nil, "", fmt.Errorf("board %v not found", boardPath)
|
||||||
}
|
}
|
||||||
// TODO beter name
|
|
||||||
// baseAST = boardG.BaseAST
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(mk.Edges) > 0 && mk.EdgeKey == nil {
|
if len(mk.Edges) > 0 && mk.EdgeKey == nil {
|
||||||
|
|
@ -2845,7 +2841,7 @@ func DeleteIDDeltas(g *d2graph.Graph, key string) (deltas map[string]string, err
|
||||||
return deltas, nil
|
return deltas, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func RenameIDDeltas(g *d2graph.Graph, key, newName string) (deltas map[string]string, err error) {
|
func RenameIDDeltas(g *d2graph.Graph, boardPath []string, key, newName string) (deltas map[string]string, err error) {
|
||||||
defer xdefer.Errorf(&err, "failed to get deltas for renaming of %#v to %#v", key, newName)
|
defer xdefer.Errorf(&err, "failed to get deltas for renaming of %#v to %#v", key, newName)
|
||||||
deltas = make(map[string]string)
|
deltas = make(map[string]string)
|
||||||
|
|
||||||
|
|
@ -2854,11 +2850,19 @@ func RenameIDDeltas(g *d2graph.Graph, key, newName string) (deltas map[string]st
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boardG := g
|
||||||
|
if len(boardPath) > 0 {
|
||||||
|
boardG = GetBoardGraph(g, boardPath)
|
||||||
|
if boardG == nil {
|
||||||
|
return nil, fmt.Errorf("board %v not found", boardPath)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
edgeTrimCommon(mk)
|
edgeTrimCommon(mk)
|
||||||
obj := g.Root
|
obj := boardG.Root
|
||||||
if mk.Key != nil {
|
if mk.Key != nil {
|
||||||
var ok bool
|
var ok bool
|
||||||
obj, ok = g.Root.HasChild(d2graph.Key(mk.Key))
|
obj, ok = boardG.Root.HasChild(d2graph.Key(mk.Key))
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
@ -2896,7 +2900,7 @@ func RenameIDDeltas(g *d2graph.Graph, key, newName string) (deltas map[string]st
|
||||||
}
|
}
|
||||||
|
|
||||||
mk.Key.Path[len(mk.Key.Path)-1].Unbox().SetString(newName)
|
mk.Key.Path[len(mk.Key.Path)-1].Unbox().SetString(newName)
|
||||||
uniqueKeyStr, _, err := generateUniqueKey(g, strings.Join(d2graph.Key(mk.Key), "."), obj, nil)
|
uniqueKeyStr, _, err := generateUniqueKey(boardG, strings.Join(d2graph.Key(mk.Key), "."), obj, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7933,6 +7933,7 @@ func TestRenameIDDeltas(t *testing.T) {
|
||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
name string
|
name string
|
||||||
|
|
||||||
|
boardPath []string
|
||||||
text string
|
text string
|
||||||
key string
|
key string
|
||||||
newName string
|
newName string
|
||||||
|
|
@ -8061,6 +8062,44 @@ x.y.z.w.e.p.l -> x.y.z.1.2.3.4
|
||||||
|
|
||||||
exp: `{
|
exp: `{
|
||||||
"x.y.z.(w.e.p.l -> 1.2.3.4)[1]": "x.y.z.(w.e.p.l <-> 1.2.3.4)[1]"
|
"x.y.z.(w.e.p.l -> 1.2.3.4)[1]": "x.y.z.(w.e.p.l <-> 1.2.3.4)[1]"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "layers-basic",
|
||||||
|
|
||||||
|
text: `x
|
||||||
|
|
||||||
|
layers: {
|
||||||
|
y: {
|
||||||
|
a
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
boardPath: []string{"y"},
|
||||||
|
key: "a",
|
||||||
|
newName: "b",
|
||||||
|
|
||||||
|
exp: `{
|
||||||
|
"a": "b"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "scenarios-conflict",
|
||||||
|
|
||||||
|
text: `x
|
||||||
|
|
||||||
|
scenarios: {
|
||||||
|
y: {
|
||||||
|
a
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
boardPath: []string{"y"},
|
||||||
|
key: "a",
|
||||||
|
newName: "x",
|
||||||
|
|
||||||
|
exp: `{
|
||||||
|
"a": "x 2"
|
||||||
}`,
|
}`,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
@ -8076,7 +8115,7 @@ x.y.z.w.e.p.l -> x.y.z.1.2.3.4
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
deltas, err := d2oracle.RenameIDDeltas(g, tc.key, tc.newName)
|
deltas, err := d2oracle.RenameIDDeltas(g, tc.boardPath, tc.key, tc.newName)
|
||||||
if tc.expErr != "" {
|
if tc.expErr != "" {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatalf("expected error with: %q", tc.expErr)
|
t.Fatalf("expected error with: %q", tc.expErr)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue