作者:Julianz
项目:gog
func RenderSpecialLink(rawBytes []byte, urlPrefix string) []byte {
ms := MentionPattern.FindAll(rawBytes, -1)
for _, m := range ms {
rawBytes = bytes.Replace(rawBytes, m,
[]byte(fmt.Sprintf(`<a href="/user/%s">%s</a>`, m[1:], m)), -1)
}
ms = commitPattern.FindAll(rawBytes, -1)
for _, m := range ms {
m = bytes.TrimSpace(m)
i := strings.Index(string(m), "commit/")
j := strings.Index(string(m), "#")
if j == -1 {
j = len(m)
}
rawBytes = bytes.Replace(rawBytes, m, []byte(fmt.Sprintf(
` <code><a href="%s">%s</a></code>`, m, ShortSha(string(m[i+7:j])))), -1)
}
ms = issueFullPattern.FindAll(rawBytes, -1)
for _, m := range ms {
m = bytes.TrimSpace(m)
i := strings.Index(string(m), "issues/")
j := strings.Index(string(m), "#")
if j == -1 {
j = len(m)
}
rawBytes = bytes.Replace(rawBytes, m, []byte(fmt.Sprintf(
` <a href="%s">#%s</a>`, m, ShortSha(string(m[i+7:j])))), -1)
}
ms = issueIndexPattern.FindAll(rawBytes, -1)
for _, m := range ms {
rawBytes = bytes.Replace(rawBytes, m, []byte(fmt.Sprintf(
`<a href="%s/issues/%s">%s</a>`, urlPrefix, m[1:], m)), -1)
}
return rawBytes
}
作者:kodin
项目:kodin
func create() error {
pemBytes, err := ioutil.ReadFile(*pem)
if err != nil {
return fmt.Errorf("reading -pem key failed: %s", err)
}
pubBytes, err := ioutil.ReadFile(*pub)
if err != nil {
return fmt.Errorf("reading -pub key failed: %s", err)
}
if *id == "" {
*id = uuid.NewV4().String()
}
k := &keycreator.Key{
KontrolURL: *kontrolURL,
KontrolPrivateKey: string(bytes.TrimSpace(pemBytes)),
KontrolPublicKey: string(bytes.TrimSpace(pubBytes)),
}
kiteKey, err := k.Create(*username, *id)
if err != nil {
return fmt.Errorf("signing failed: %s", err)
}
if *file == "" {
fmt.Println(kiteKey)
return nil
}
return ioutil.WriteFile(*file, bytes.TrimSpace([]byte(kiteKey)), 0644)
}
作者:paule
项目:mmar
func (options *xml2) CommentHtml(out *bytes.Buffer, text []byte) {
i := bytes.Index(text, []byte("-->"))
if i > 0 {
text = text[:i]
}
// strip, <!--
text = text[4:]
var source []byte
l := len(text)
if l > 20 {
l = 20
}
for i := 0; i < l; i++ {
if text[i] == '-' && text[i+1] == '-' {
source = text[:i]
text = text[i+2:]
break
}
}
// don't output a cref if it is not name -- remark
if len(source) != 0 {
source = bytes.TrimSpace(source)
text = bytes.TrimSpace(text)
out.WriteString("<t><cref source=\"")
out.Write(source)
out.WriteString("\">")
out.Write(text)
out.WriteString("</cref></t>\n")
}
return
}
作者:vincecim
项目:just-instal
func FileGetConfig(filenameOrURL string, timeout ...time.Duration) (map[string]string, error) {
data, err := FileGetBytes(filenameOrURL, timeout...)
if err != nil {
return nil, err
}
lines := bytes.Split(data, []byte("\n"))
config := make(map[string]string, len(lines))
for _, line := range lines {
kv := bytes.SplitN(line, []byte("="), 2)
if len(kv) < 2 {
continue
}
key := string(bytes.TrimSpace(kv[0]))
if len(key) == 0 || key[0] == '#' {
continue
}
value := string(bytes.TrimSpace(kv[1]))
if len(value) >= 2 && value[0] == '"' && value[len(value)-1] == '"' {
value = value[1 : len(value)-1]
}
config[key] = value
}
return config, nil
}
作者:MaximeFrancoeu
项目:gog
func (r *CustomRender) AutoLink(out *bytes.Buffer, link []byte, kind int) {
if kind != 1 {
r.Renderer.AutoLink(out, link, kind)
return
}
// This method could only possibly serve one link at a time, no need to find all.
m := commitPattern.Find(link)
if m != nil {
m = bytes.TrimSpace(m)
i := strings.Index(string(m), "commit/")
j := strings.Index(string(m), "#")
if j == -1 {
j = len(m)
}
out.WriteString(fmt.Sprintf(` <code><a href="%s">%s</a></code>`, m, ShortSha(string(m[i+7:j]))))
return
}
m = issueFullPattern.Find(link)
if m != nil {
m = bytes.TrimSpace(m)
i := strings.Index(string(m), "issues/")
j := strings.Index(string(m), "#")
if j == -1 {
j = len(m)
}
out.WriteString(fmt.Sprintf(` <a href="%s">#%s</a>`, m, ShortSha(string(m[i+7:j]))))
return
}
r.Renderer.AutoLink(out, link, kind)
}
作者:gitter-badge
项目:vida
func fromLine(line []byte) Project {
parts := bytes.SplitN(line, []byte{':'}, 2)
return Project{
Name: string(bytes.TrimSpace(parts[0])),
Path: string(bytes.TrimSpace(parts[1])),
}
}
作者:jetpa
项目:mmar
func (options *xml) CommentHtml(out *bytes.Buffer, text []byte) {
// nothing fancy any left of the first `:` will be used as the source="..."
// if the syntax is different, don't output anything.
i := bytes.Index(text, []byte("-->"))
if i > 0 {
text = text[:i]
}
// strip, <!--
text = text[4:]
var source []byte
l := len(text)
if l > 20 {
l = 20
}
for i := 0; i < l; i++ {
if text[i] == '-' && text[i+1] == '-' {
source = text[:i]
text = text[i+2:]
break
}
}
// don't output a cref if it is not name: remark
if len(source) != 0 {
// sanitize source here
source = bytes.TrimSpace(source)
text = bytes.TrimSpace(text)
out.WriteString("<t><cref source=\"")
out.Write(source)
out.WriteString("\">")
out.Write(text)
out.WriteString("</cref></t>\n")
}
return
}
作者:paulmac
项目:go.os
func decodeChangesetState(data []byte) (State, error) {
// example
// ---
// last_run: 2016-07-02 22:46:01.422137422 Z
// sequence: 1912325
lines := bytes.Split(data, []byte("\n"))
parts := bytes.Split(lines[1], []byte(":"))
timeString := string(bytes.TrimSpace(bytes.Join(parts[1:], []byte(":"))))
t, err := time.Parse(
"2006-01-02 15:04:05.999999999 Z",
timeString)
if err != nil {
return State{}, err
}
parts = bytes.Split(lines[2], []byte(":"))
n, err := strconv.ParseUint(string(bytes.TrimSpace(parts[1])), 10, 64)
if err != nil {
return State{}, err
}
return State{
SeqNum: n,
Timestamp: t,
}, nil
}
作者:rilino
项目:go-xm
// An <xs:annotation> element may contain zero or more <xs:documentation>
// children. The xsd package joins the content of these children, separated
// with blank lines.
func (doc *annotation) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
buf := make([][]byte, 1)
var (
tok xml.Token
err error
)
Loop:
for {
tok, err = d.Token()
if err != nil {
break
}
switch tok := tok.(type) {
case xml.EndElement:
break Loop
case xml.StartElement:
if (tok.Name != xml.Name{schemaNS, "documentation"}) {
if err := d.Skip(); err != nil {
return err
}
}
var frag []byte
if err := d.DecodeElement(&frag, &tok); err != nil {
return err
}
buf = append(buf, bytes.TrimSpace(frag))
}
}
*doc = annotation(bytes.TrimSpace(bytes.Join(buf, []byte("\n\n"))))
return err
}
作者:lyuyu
项目:loggregato
func readLine(r *bufio.Reader) (fname string, types []string, data string, err error) {
var line []byte
for len(line) == 0 {
var short bool
line, short, err = r.ReadLine()
if short {
err = fmt.Errorf("line too long")
return
}
if err != nil {
return
}
line = bytes.TrimSpace(line)
}
b, err := r.ReadByte()
if err == io.EOF || b != ' ' {
r.UnreadByte()
return parseLine(string(line))
}
for b == ' ' && err != io.EOF {
r.UnreadByte()
stub, short, err := r.ReadLine()
if !short {
err = fmt.Errorf("line too long")
return fname, types, data, err
}
line = append(line, bytes.TrimSpace(stub)...)
b, err = r.ReadByte()
}
r.UnreadByte()
return parseLine(string(line))
}
作者:nightlyon
项目:a
func parseFileHeader(header []byte) (*fileInfo, error) {
if len(header) != 60 {
panic("invalid file header")
}
if header[58] != filemagic[0] || header[59] != filemagic[1] {
return nil, CorruptArchiveError("per file magic not found")
}
name := string(bytes.TrimSpace(header[0:16]))
secs, err := strconv.ParseInt(string(bytes.TrimSpace(header[16:16+12])), 10, 64)
if err != nil {
return nil, CorruptArchiveError(err.Error())
}
filemode, err := parseFileMode(string(bytes.TrimSpace(header[40 : 40+8])))
if err != nil {
return nil, err
}
filesize, err := strconv.ParseInt(string(bytes.TrimSpace(header[48:48+10])), 10, 64)
if err != nil {
return nil, CorruptArchiveError(err.Error())
}
fi := &fileInfo{
name: name,
mtime: time.Unix(secs, 0),
mode: filemode,
size: filesize,
}
return fi, nil
}
作者:Kunde2
项目:DailyProgramme
func fillArr(s *bufio.Scanner) (l []loc) {
var err error
for s.Scan() {
if bytes.Count(s.Bytes(), []byte{','}) != 1 {
if len(l) == 0 {
ln, err := strconv.ParseInt(string(bytes.TrimSpace(s.Bytes())), 10, 0)
check(err)
l = make([]loc, 0, ln+10)
}
continue
}
t1 := make([]byte, len(s.Bytes()))
copy(t1, s.Bytes())
tmploc := loc{t1, 0, 0}
tmp := bytes.SplitN(bytes.Trim(tmploc.pts, "() "), []byte{','}, 3)
tmploc.x, err = strconv.ParseFloat(string(bytes.TrimSpace(tmp[0])), 64)
check(err)
tmploc.y, err = strconv.ParseFloat(string(bytes.TrimSpace(tmp[1])), 64)
check(err)
l = append(l, tmploc)
}
if s.Err() != nil {
log.Fatal(s.Err())
}
sort.Sort(locA(l))
return
}
作者:MrPetr
项目:util
// Parse
func (c *Config) Parse(r *bufio.Reader) error {
var section string = "defaults"
for {
l, err := r.ReadBytes('\n')
if err == io.EOF {
break
} else if err != nil {
return err
}
switch {
case PatternEmpty.Match(l):
continue
case PatternComment.Match(l):
continue
case PatternSection.Match(l):
m := PatternSection.FindSubmatch(l)
section = string(bytes.TrimSpace(m[1]))
case PatternOption.Match(l):
m := PatternOption.FindSubmatch(l)
c.Set(section, string(bytes.TrimSpace(m[1])), string(bytes.TrimSpace(m[2])))
default:
return &ConfigSyntaxError{string(l)}
}
}
return nil
}
作者:czxiche
项目:Goprogram
func ParseConfig(configpath string) (map[string]string, error) {
file, err := os.Open(configpath)
if err != nil {
return nil, err
}
defer file.Close()
M := make(map[string]string)
buf := bufio.NewReader(file)
var num int
for {
line, _, err := buf.ReadLine()
if err != nil {
if err.Error() == "EOF" {
break
}
return nil, err
}
list := bytes.Split(line, []byte("="))
if len(list) != 2 {
return nil, fmt.Errorf("第%d行 出现多次'='", num)
}
M[string(bytes.TrimSpace(list[0]))] = string(bytes.TrimSpace(list[1]))
num++
}
return M, nil
}
作者:npadman
项目:go-bigsim
func parsehdr(barr []byte, fn string) (int, error) {
barr = bytes.TrimSpace(barr)
// First character is a #
if barr[0] != '#' {
return 0, errors.New("Missing # to start header")
}
barr = barr[1:]
// Second elt is the filename
ndx1 := bytes.IndexAny(barr, ":")
if ndx1 == -1 {
return 0, errors.New("Malformed header, couldn't find filename")
}
if bytes.Compare(bytes.TrimSpace(barr[:ndx1]), []byte(fn)) != 0 {
return 0, errors.New("Malformed header, unable to find filename in header")
}
// Find ranks
barr = barr[ndx1+1:]
ndx1 = bytes.Index(barr, []byte("rank"))
if ndx1 == -1 {
return 0, errors.New("Malformed header, could not find rank")
}
// Attempt to parse the rank
rank64, err := strconv.ParseInt(string(bytes.TrimSpace(barr[:ndx1])), 10, 32)
if err != nil {
return 0, err
}
return int(rank64), nil
}
作者:treejame
项目:glide-
// From a byte slice of a Go file find the tags.
func findTags(co []byte) []string {
p := co
var tgs []string
for len(p) > 0 {
line := p
if i := bytes.IndexByte(line, '\n'); i >= 0 {
line, p = line[:i], p[i+1:]
} else {
p = p[len(p):]
}
line = bytes.TrimSpace(line)
// Only look at comment lines that are well formed in the Go style
if bytes.HasPrefix(line, []byte("//")) {
line = bytes.TrimSpace(line[len([]byte("//")):])
if len(line) > 0 && line[0] == '+' {
f := strings.Fields(string(line))
// We've found a +build tag line.
if f[0] == "+build" {
for _, tg := range f[1:] {
tgs = append(tgs, tg)
}
}
}
}
}
return tgs
}
作者:qinb
项目:vites
// readEvent reads a single binlog event. It can be a single comment line,
// or multiple lines terminated by the delimiter.
func (bls *BinlogStreamer) readEvent(bufReader *bufio.Reader) (event []byte, err error) {
for {
fragment, err := bufReader.ReadSlice('\n')
event = append(event, fragment...)
if err == bufio.ErrBufferFull {
continue
}
if err != nil {
if err == io.EOF {
return event, err
}
return event, fmt.Errorf("read error: %v", err)
}
// Use a different var than event, because you have to keep
// the trailing \n if we continue
trimmed := bytes.TrimSpace(event)
if bytes.HasPrefix(trimmed, HASH_COMMENT) ||
bytes.HasPrefix(trimmed, SLASH_COMMENT) ||
bytes.HasPrefix(trimmed, DELIM_STMT) {
return trimmed, nil
}
if bytes.HasSuffix(trimmed, bls.delim) {
return bytes.TrimSpace(trimmed[:len(trimmed)-len(bls.delim)]), nil
}
}
}
作者:rwcarlse
项目:tournamen
func ParseMatches(r io.Reader) ([]Match, error) {
s := bufio.NewScanner(os.Stdin)
s.Split(func(data []byte, atEOF bool) (advance int, token []byte, err error) {
i := bytes.IndexAny(data, "\n \t\r")
if len(data) == 0 {
return 0, nil, nil
} else if i == -1 && !atEOF {
return 0, nil, nil
} else if i == -1 && atEOF {
return len(data), bytes.TrimSpace(data), nil
}
token = bytes.TrimSpace(data[:i])
if len(token) == 0 {
token = nil
}
return i + 1, token, nil
})
matches := []Match{}
for {
if !s.Scan() {
break
}
winner := s.Text()
if !s.Scan() {
return nil, errors.New("odd number of players causes opponentless match")
}
loser := s.Text()
matches = append(matches, Match{winner, loser})
}
return matches, s.Err()
}
作者:J5iv
项目:yam
func (d *Decoder) tryLine(indent, state int) bool {
var line []byte
var pos int
if state == stateListElem {
line, pos = d.peekLine()
if len(bytes.TrimSpace(line)) != 0 {
return true
}
d.off = pos
}
for {
line, pos = d.peekLine()
if d.off == pos { // at Eof
return false
}
if len(bytes.TrimSpace(line)) != 0 {
break
}
d.off = pos
}
if hasIndent(line, indent) {
d.off += indent
return true
}
return false
}
作者:CERN-Stage-
项目:vites
//Main parse loop
func (blp *Bls) parseBinlogEvents(sendReply proto.SendBinlogResponse, binlogReader io.Reader) {
// read over the stream and buffer up the transactions
var err error
var line []byte
bigLine := make([]byte, 0, BINLOG_BLOCK_SIZE)
lineReader := bufio.NewReaderSize(binlogReader, BINLOG_BLOCK_SIZE)
readAhead := false
var event *blsEventBuffer
var delimIndex int
for {
line = line[:0]
bigLine = bigLine[:0]
line, err = blp.readBlsLine(lineReader, bigLine)
if err != nil {
if err == io.EOF {
//end of stream
blp.globalState.blsStats.parseStats.Add("EOFErrors."+blp.keyrangeTag, 1)
panic(newBinlogServerError(fmt.Sprintf("EOF")))
}
panic(newBinlogServerError(fmt.Sprintf("ReadLine err: , %v", err)))
}
if len(line) == 0 {
continue
}
if line[0] == '#' {
//parse positional data
line = bytes.TrimSpace(line)
blp.currentLine = string(line)
blp.parsePositionData(line)
} else {
//parse event data
if readAhead {
event.LogLine = append(event.LogLine, line...)
} else {
event = newBlsEventBuffer(blp.currentPosition, line)
}
delimIndex = bytes.LastIndex(event.LogLine, BINLOG_DELIMITER)
if delimIndex != -1 {
event.LogLine = event.LogLine[:delimIndex]
readAhead = false
} else {
readAhead = true
continue
}
event.LogLine = bytes.TrimSpace(event.LogLine)
event.firstKw = string(bytes.ToLower(bytes.SplitN(event.LogLine, SPACE, 2)[0]))
blp.currentLine = string(event.LogLine)
//processes statements only for the dbname that it is subscribed to.
blp.parseDbChange(event)
blp.parseEventData(sendReply, event)
}
}
}