-
Notifications
You must be signed in to change notification settings - Fork 2
/
edge.go
49 lines (43 loc) · 1.08 KB
/
edge.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//-----------------------------------------------------------------------------
// Copyright (c) 2023-present Detlef Stern
//
// This file is part of Zettelstore.
//
// Zettelstore is licensed under the latest version of the EUPL (European Union
// Public License). Please see file LICENSE.txt for your rights and obligations
// under this license.
//
// SPDX-License-Identifier: EUPL-1.2
// SPDX-FileCopyrightText: 2023-present Detlef Stern
//-----------------------------------------------------------------------------
package id
import "slices"
// Edge is a pair of to vertices.
type Edge struct {
From, To Zid
}
// EdgeSlice is a slice of Edges
type EdgeSlice []Edge
// Equal return true if both slices are the same.
func (es EdgeSlice) Equal(other EdgeSlice) bool {
return slices.Equal(es, other)
}
// Sort the slice.
func (es EdgeSlice) Sort() EdgeSlice {
slices.SortFunc(es, func(e1, e2 Edge) int {
if e1.From < e2.From {
return -1
}
if e1.From > e2.From {
return 1
}
if e1.To < e2.To {
return -1
}
if e1.To > e2.To {
return 1
}
return 0
})
return es
}