|
- // Copyright 2013 The Go Authors. All rights reserved.
- //
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file or at
- // https://developers.google.com/open-source/licenses/bsd.
-
- package gosrc
-
- import (
- "regexp"
- "strconv"
- "strings"
- )
-
- var defaultTags = map[string]string{"git": "master", "hg": "default"}
-
- func bestTag(tags map[string]string, defaultTag string) (string, string, error) {
- if commit, ok := tags["go1"]; ok {
- return "go1", commit, nil
- }
- if commit, ok := tags[defaultTag]; ok {
- return defaultTag, commit, nil
- }
- return "", "", NotFoundError{Message: "Tag or branch not found."}
- }
-
- // expand replaces {k} in template with match[k] or subs[atoi(k)] if k is not in match.
- func expand(template string, match map[string]string, subs ...string) string {
- var p []byte
- var i int
- for {
- i = strings.Index(template, "{")
- if i < 0 {
- break
- }
- p = append(p, template[:i]...)
- template = template[i+1:]
- i = strings.Index(template, "}")
- if s, ok := match[template[:i]]; ok {
- p = append(p, s...)
- } else {
- j, _ := strconv.Atoi(template[:i])
- p = append(p, subs[j]...)
- }
- template = template[i+1:]
- }
- p = append(p, template...)
- return string(p)
- }
-
- var readmePat = regexp.MustCompile(`(?i)^readme(?:$|\.)`)
-
- // isDocFile returns true if a file with name n should be included in the
- // documentation.
- func isDocFile(n string) bool {
- if strings.HasSuffix(n, ".go") && n[0] != '_' && n[0] != '.' {
- return true
- }
- return readmePat.MatchString(n)
- }
-
- var linePat = regexp.MustCompile(`(?m)^//line .*$`)
-
- func OverwriteLineComments(p []byte) {
- for _, m := range linePat.FindAllIndex(p, -1) {
- for i := m[0] + 2; i < m[1]; i++ {
- p[i] = ' '
- }
- }
- }
|