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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [old/] [template/] [format.go] - Blame information for rev 747

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 747 jeremybenn
// Copyright 2009 The Go Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style
3
// license that can be found in the LICENSE file.
4
 
5
// Template library: default formatters
6
 
7
package template
8
 
9
import (
10
        "bytes"
11
        "fmt"
12
        "io"
13
)
14
 
15
// StringFormatter formats into the default string representation.
16
// It is stored under the name "str" and is the default formatter.
17
// You can override the default formatter by storing your default
18
// under the name "" in your custom formatter map.
19
func StringFormatter(w io.Writer, format string, value ...interface{}) {
20
        if len(value) == 1 {
21
                if b, ok := value[0].([]byte); ok {
22
                        w.Write(b)
23
                        return
24
                }
25
        }
26
        fmt.Fprint(w, value...)
27
}
28
 
29
var (
30
        esc_quot = []byte(""") // shorter than """
31
        esc_apos = []byte("'") // shorter than "'"
32
        esc_amp  = []byte("&")
33
        esc_lt   = []byte("<")
34
        esc_gt   = []byte(">")
35
)
36
 
37
// HTMLEscape writes to w the properly escaped HTML equivalent
38
// of the plain text data s.
39
func HTMLEscape(w io.Writer, s []byte) {
40
        var esc []byte
41
        last := 0
42
        for i, c := range s {
43
                switch c {
44
                case '"':
45
                        esc = esc_quot
46
                case '\'':
47
                        esc = esc_apos
48
                case '&':
49
                        esc = esc_amp
50
                case '<':
51
                        esc = esc_lt
52
                case '>':
53
                        esc = esc_gt
54
                default:
55
                        continue
56
                }
57
                w.Write(s[last:i])
58
                w.Write(esc)
59
                last = i + 1
60
        }
61
        w.Write(s[last:])
62
}
63
 
64
// HTMLFormatter formats arbitrary values for HTML
65
func HTMLFormatter(w io.Writer, format string, value ...interface{}) {
66
        ok := false
67
        var b []byte
68
        if len(value) == 1 {
69
                b, ok = value[0].([]byte)
70
        }
71
        if !ok {
72
                var buf bytes.Buffer
73
                fmt.Fprint(&buf, value...)
74
                b = buf.Bytes()
75
        }
76
        HTMLEscape(w, b)
77
}

powered by: WebSVN 2.1.0

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