github.com/keysonzzz/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgXss/kmgXss.go (about)

     1  package kmgXss
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"html/template"
     7  )
     8  
     9  //在模板上面经常需要直接传入int等数据类型.
    10  func Urlv(obj interface{}) string {
    11  	s := fmt.Sprint(obj)
    12  	// 系统的QueryEscape版本 存在bug,主要是' '变'+'这个坑,
    13  	out := make([]byte, 0, len(s))
    14  	for i := 0; i < len(s); i++ {
    15  		c := s[i]
    16  		if 'A' <= c && c <= 'Z' || 'a' <= c && c <= 'z' || '0' <= c && c <= '9' || c == '-' || c == '.' || c == '_' {
    17  			out = append(out, byte(c))
    18  		} else {
    19  			out = append(out, '%', "0123456789ABCDEF"[c>>4], "0123456789ABCDEF"[c&15])
    20  		}
    21  	}
    22  	return string(out)
    23  }
    24  
    25  func H(obj interface{}) string {
    26  	s := fmt.Sprint(obj)
    27  	return template.HTMLEscapeString(s)
    28  }
    29  
    30  func Jsonv(obj interface{}) string {
    31  	out, err := json.Marshal(obj)
    32  	if err != nil {
    33  		panic(err)
    34  	}
    35  	return string(out)
    36  }