aboutsummaryrefslogtreecommitdiff
path: root/src/cmd
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@golang.org>2013-02-01 08:41:25 -0800
committerBrad Fitzpatrick <bradfitz@golang.org>2013-02-01 08:41:25 -0800
commite515d80d5dfd5621a16f6fc9f08cc3c0958a8414 (patch)
tree343538fd82efacfb61675e27dc2ebf19b0b6057e /src/cmd
parentfe14ee52ccf89fa02366a06fe892a7fcf135e214 (diff)
downloadgo-e515d80d5dfd5621a16f6fc9f08cc3c0958a8414.tar.xz
bytes, strings: add TrimPrefix and TrimSuffix
Everybody either gets confused and thinks this is TrimLeft/TrimRight or does this by hand which gets repetitive looking. R=rsc, kevlar CC=golang-dev https://golang.org/cl/7239044
Diffstat (limited to 'src/cmd')
-rw-r--r--src/cmd/api/goapi.go3
-rw-r--r--src/cmd/cgo/gcc.go4
-rw-r--r--src/cmd/cgo/godefs.go2
-rw-r--r--src/cmd/fix/typecheck.go4
-rw-r--r--src/cmd/go/testflag.go4
-rw-r--r--src/cmd/godoc/dirtrees.go13
-rw-r--r--src/cmd/godoc/filesystem.go4
-rw-r--r--src/cmd/godoc/godoc.go4
-rw-r--r--src/cmd/godoc/main.go2
-rw-r--r--src/cmd/vet/method.go4
10 files changed, 13 insertions, 31 deletions
diff --git a/src/cmd/api/goapi.go b/src/cmd/api/goapi.go
index 906cd3a68d..0d76b0cdb6 100644
--- a/src/cmd/api/goapi.go
+++ b/src/cmd/api/goapi.go
@@ -778,8 +778,7 @@ func (w *Walker) walkConst(vs *ast.ValueSpec) {
}
}
}
- if strings.HasPrefix(litType, constDepPrefix) {
- dep := litType[len(constDepPrefix):]
+ if dep := strings.TrimPrefix(litType, constDepPrefix); dep != litType {
w.constDep[ident.Name] = dep
continue
}
diff --git a/src/cmd/cgo/gcc.go b/src/cmd/cgo/gcc.go
index 3266abe618..1449a8d6b5 100644
--- a/src/cmd/cgo/gcc.go
+++ b/src/cmd/cgo/gcc.go
@@ -1542,8 +1542,8 @@ func godefsFields(fld []*ast.Field) {
npad := 0
for _, f := range fld {
for _, n := range f.Names {
- if strings.HasPrefix(n.Name, prefix) && n.Name != prefix {
- n.Name = n.Name[len(prefix):]
+ if n.Name != prefix {
+ n.Name = strings.TrimPrefix(n.Name, prefix)
}
if n.Name == "_" {
// Use exported name instead.
diff --git a/src/cmd/cgo/godefs.go b/src/cmd/cgo/godefs.go
index fec70a334b..20376170da 100644
--- a/src/cmd/cgo/godefs.go
+++ b/src/cmd/cgo/godefs.go
@@ -180,7 +180,7 @@ func (p *Package) cdefs(f *File, srcfile string) string {
for _, line := range lines {
line = strings.TrimSpace(line)
if strings.HasPrefix(line, "type ") && strings.HasSuffix(line, " struct {") {
- s := line[len("type ") : len(line)-len(" struct {")]
+ s := strings.TrimSuffix(strings.TrimPrefix(line, "type "), " struct {")
printf("typedef struct %s %s;\n", s, s)
}
}
diff --git a/src/cmd/fix/typecheck.go b/src/cmd/fix/typecheck.go
index d54d375478..d33b69fddc 100644
--- a/src/cmd/fix/typecheck.go
+++ b/src/cmd/fix/typecheck.go
@@ -395,9 +395,7 @@ func typecheck1(cfg *TypeConfig, f interface{}, typeof map[interface{}]string, a
// Field or method.
name := n.Sel.Name
if t := typeof[n.X]; t != "" {
- if strings.HasPrefix(t, "*") {
- t = t[1:] // implicit *
- }
+ t = strings.TrimPrefix(t, "*") // implicit *
if typ := cfg.Type[t]; typ != nil {
if t := typ.dot(cfg, name); t != "" {
typeof[n] = t
diff --git a/src/cmd/go/testflag.go b/src/cmd/go/testflag.go
index 8dd51437d7..b2ca66b094 100644
--- a/src/cmd/go/testflag.go
+++ b/src/cmd/go/testflag.go
@@ -195,9 +195,7 @@ func testFlag(args []string, i int) (f *testFlagSpec, value string, extra bool)
}
name := arg[1:]
// If there's already "test.", drop it for now.
- if strings.HasPrefix(name, "test.") {
- name = name[5:]
- }
+ name = strings.TrimPrefix(name, "test.")
equals := strings.Index(name, "=")
if equals >= 0 {
value = name[equals+1:]
diff --git a/src/cmd/godoc/dirtrees.go b/src/cmd/godoc/dirtrees.go
index 29bd39e6b0..08dbfc2e8b 100644
--- a/src/cmd/godoc/dirtrees.go
+++ b/src/cmd/godoc/dirtrees.go
@@ -229,9 +229,7 @@ func (dir *Directory) lookupLocal(name string) *Directory {
}
func splitPath(p string) []string {
- if strings.HasPrefix(p, "/") {
- p = p[1:]
- }
+ p = strings.TrimPrefix(p, "/")
if p == "" {
return nil
}
@@ -310,14 +308,9 @@ func (root *Directory) listing(skipRoot bool) *DirList {
// the path is relative to root.Path - remove the root.Path
// prefix (the prefix should always be present but avoid
// crashes and check)
- path := d.Path
- if strings.HasPrefix(d.Path, root.Path) {
- path = d.Path[len(root.Path):]
- }
+ path := strings.TrimPrefix(d.Path, root.Path)
// remove leading separator if any - path must be relative
- if len(path) > 0 && path[0] == '/' {
- path = path[1:]
- }
+ path = strings.TrimPrefix(path, "/")
p.Path = path
p.Name = d.Name
p.HasPkg = d.HasPkg
diff --git a/src/cmd/godoc/filesystem.go b/src/cmd/godoc/filesystem.go
index c4afbed800..0309d7cabe 100644
--- a/src/cmd/godoc/filesystem.go
+++ b/src/cmd/godoc/filesystem.go
@@ -459,9 +459,7 @@ func (ns nameSpace) ReadDir(path string) ([]os.FileInfo, error) {
if hasPathPrefix(old, path) && old != path {
// Find next element after path in old.
elem := old[len(path):]
- if strings.HasPrefix(elem, "/") {
- elem = elem[1:]
- }
+ elem = strings.TrimPrefix(elem, "/")
if i := strings.Index(elem, "/"); i >= 0 {
elem = elem[:i]
}
diff --git a/src/cmd/godoc/godoc.go b/src/cmd/godoc/godoc.go
index 4d66c3011c..887480911a 100644
--- a/src/cmd/godoc/godoc.go
+++ b/src/cmd/godoc/godoc.go
@@ -419,9 +419,7 @@ func pkgLinkFunc(path string) string {
relpath := path[1:]
// because of the irregular mapping under goroot
// we need to correct certain relative paths
- if strings.HasPrefix(relpath, "src/pkg/") {
- relpath = relpath[len("src/pkg/"):]
- }
+ relpath = strings.TrimPrefix(relpath, "src/pkg/")
return pkgHandler.pattern[1:] + relpath // remove trailing '/' for relative URL
}
diff --git a/src/cmd/godoc/main.go b/src/cmd/godoc/main.go
index 02891444b0..1344100906 100644
--- a/src/cmd/godoc/main.go
+++ b/src/cmd/godoc/main.go
@@ -347,7 +347,7 @@ func main() {
fs.Bind(target, OS(path), "/", bindReplace)
abspath = target
} else if strings.HasPrefix(path, cmdPrefix) {
- path = path[len(cmdPrefix):]
+ path = strings.TrimPrefix(path, cmdPrefix)
forceCmd = true
} else if bp, _ := build.Import(path, "", build.FindOnly); bp.Dir != "" && bp.ImportPath != "" {
fs.Bind(target, OS(bp.Dir), "/", bindReplace)
diff --git a/src/cmd/vet/method.go b/src/cmd/vet/method.go
index 41df96cec5..dcfa8a02f3 100644
--- a/src/cmd/vet/method.go
+++ b/src/cmd/vet/method.go
@@ -90,9 +90,7 @@ func (f *File) checkCanonicalMethod(id *ast.Ident, t *ast.FuncType) {
fmt.Fprintf(&f.b, "<%s>", err)
}
actual := f.b.String()
- if strings.HasPrefix(actual, "func(") {
- actual = actual[4:]
- }
+ actual = strings.TrimPrefix(actual, "func(")
actual = id.Name + actual
f.Warnf(id.Pos(), "method %s should have signature %s", actual, expectFmt)