OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [old/] [template/] [format.go] - Rev 747

Compare with Previous | Blame | View Log

// Copyright 2009 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.

// Template library: default formatters

package template

import (
        "bytes"
        "fmt"
        "io"
)

// StringFormatter formats into the default string representation.
// It is stored under the name "str" and is the default formatter.
// You can override the default formatter by storing your default
// under the name "" in your custom formatter map.
func StringFormatter(w io.Writer, format string, value ...interface{}) {
        if len(value) == 1 {
                if b, ok := value[0].([]byte); ok {
                        w.Write(b)
                        return
                }
        }
        fmt.Fprint(w, value...)
}

var (
        esc_quot = []byte(""") // shorter than """
        esc_apos = []byte("'") // shorter than "'"
        esc_amp  = []byte("&")
        esc_lt   = []byte("<")
        esc_gt   = []byte(">")
)

// HTMLEscape writes to w the properly escaped HTML equivalent
// of the plain text data s.
func HTMLEscape(w io.Writer, s []byte) {
        var esc []byte
        last := 0
        for i, c := range s {
                switch c {
                case '"':
                        esc = esc_quot
                case '\'':
                        esc = esc_apos
                case '&':
                        esc = esc_amp
                case '<':
                        esc = esc_lt
                case '>':
                        esc = esc_gt
                default:
                        continue
                }
                w.Write(s[last:i])
                w.Write(esc)
                last = i + 1
        }
        w.Write(s[last:])
}

// HTMLFormatter formats arbitrary values for HTML
func HTMLFormatter(w io.Writer, format string, value ...interface{}) {
        ok := false
        var b []byte
        if len(value) == 1 {
                b, ok = value[0].([]byte)
        }
        if !ok {
                var buf bytes.Buffer
                fmt.Fprint(&buf, value...)
                b = buf.Bytes()
        }
        HTMLEscape(w, b)
}

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.