1package name
2
3import (
4	"go/build"
5	"path/filepath"
6	"strings"
7)
8
9// Package will attempt to return a package version of the name
10//	$GOPATH/src/foo/bar = foo/bar
11//	$GOPATH\src\foo\bar = foo/bar
12//	foo/bar = foo/bar
13func Package(s string) string {
14	return New(s).Package().String()
15}
16
17// Package will attempt to return a package version of the name
18//	$GOPATH/src/foo/bar = foo/bar
19//	$GOPATH\src\foo\bar = foo/bar
20//	foo/bar = foo/bar
21func (i Ident) Package() Ident {
22	c := build.Default
23
24	s := i.Original
25
26	for _, src := range c.SrcDirs() {
27		s = strings.TrimPrefix(s, src)
28		s = strings.TrimPrefix(s, filepath.Dir(src)) // encase there's no /src prefix
29	}
30
31	s = strings.TrimPrefix(s, string(filepath.Separator))
32	s = strings.Replace(s, "\\", "/", -1)
33	s = strings.Replace(s, "_", "", -1)
34	return Ident{New(s).ToLower()}
35}
36