ref.go 563 B

123456789101112131415161718192021222324252627282930313233343536
  1. package source
  2. import (
  3. "fmt"
  4. "kumachan/standalone/ctn"
  5. )
  6. type Ref struct {
  7. Namespace string
  8. ItemName string
  9. }
  10. func MakeRef(ns string, item string) Ref {
  11. return Ref {
  12. Namespace: ns,
  13. ItemName: item,
  14. }
  15. }
  16. func (r Ref) String() string {
  17. if r.Namespace == "" {
  18. return r.ItemName
  19. } else {
  20. return fmt.Sprintf("%s::%s", r.Namespace, r.ItemName)
  21. }
  22. }
  23. func RefCompare(a Ref, b Ref) ctn.Ordering {
  24. var o = ctn.StringCompare(a.Namespace, b.Namespace)
  25. if o != ctn.Equal {
  26. return o
  27. } else {
  28. return ctn.StringCompare(a.ItemName, b.ItemName)
  29. }
  30. }