mirror of
https://github.com/tailscale/tailscale.git
synced 2024-12-11 10:44:41 +00:00
71029cea2d
This updates all source files to use a new standard header for copyright and license declaration. Notably, copyright no longer includes a date, and we now use the standard SPDX-License-Identifier header. This commit was done almost entirely mechanically with perl, and then some minimal manual fixes. Updates #6865 Signed-off-by: Will Norris <will@tailscale.com>
59 lines
1008 B
Go
59 lines
1008 B
Go
// Copyright (c) Tailscale Inc & AUTHORS
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
// Package words contains accessors for some nice words.
|
|
package words
|
|
|
|
import (
|
|
"bytes"
|
|
_ "embed"
|
|
"strings"
|
|
"sync"
|
|
)
|
|
|
|
//go:embed tails.txt
|
|
var tailsTxt []byte
|
|
|
|
//go:embed scales.txt
|
|
var scalesTxt []byte
|
|
|
|
var (
|
|
once sync.Once
|
|
tails, scales []string
|
|
)
|
|
|
|
// Tails returns words about tails.
|
|
func Tails() []string {
|
|
once.Do(initWords)
|
|
return tails
|
|
}
|
|
|
|
// Scales returns words about scales.
|
|
func Scales() []string {
|
|
once.Do(initWords)
|
|
return scales
|
|
}
|
|
|
|
func initWords() {
|
|
tails = parseWords(tailsTxt)
|
|
scales = parseWords(scalesTxt)
|
|
}
|
|
|
|
func parseWords(txt []byte) []string {
|
|
n := bytes.Count(txt, []byte{'\n'})
|
|
ret := make([]string, 0, n)
|
|
for len(txt) > 0 {
|
|
word := txt
|
|
i := bytes.IndexByte(txt, '\n')
|
|
if i != -1 {
|
|
word, txt = word[:i], txt[i+1:]
|
|
} else {
|
|
txt = nil
|
|
}
|
|
if word := strings.TrimSpace(string(word)); word != "" && word[0] != '#' {
|
|
ret = append(ret, word)
|
|
}
|
|
}
|
|
return ret
|
|
}
|