Documentation
¶
Overview ¶
Package com is an open source project for commonly used functions for the Go programming language.
Index ¶
- Constants
- Variables
- func AppendStr(strs []string, str string) []string
- func Base64Decode(str string) (string, error)
- func Base64Encode(str string) string
- func Basename(file string) string
- func ColorLog(format string, a ...interface{})
- func ColorLogS(format string, a ...interface{}) string
- func CompareSliceStr(s1, s2 []string) bool
- func CompareSliceStrU(s1, s2 []string) bool
- func Copy(srcPath, destPath string) error
- func CopyDir(srcPath, destPath string, filters ...func(filePath string) bool) error
- func Date(ti int64, format string) string
- func DateS(ts string, format string) string
- func DateT(t time.Time, format string) string
- func Dirname(file string) string
- func ExecCmd(cmdName string, args ...string) (string, string, error)
- func ExecCmdBytes(cmdName string, args ...string) ([]byte, []byte, error)
- func ExecCmdDir(dir, cmdName string, args ...string) (string, string, error)
- func ExecCmdDirBytes(dir, cmdName string, args ...string) ([]byte, []byte, error)
- func Expand(template string, match map[string]string, subs ...string) string
- func Explode(str string, sep string) []string
- func FetchFiles(client *http.Client, files []RawFile, header http.Header) error
- func FetchFilesCurl(files []RawFile, curlOptions ...string) error
- func FileMTime(file string) (int64, error)
- func FileSize(file string) (int64, error)
- func GetGOPATHs() []string
- func GetSrcPath(importPath string) (appPath string, err error)
- func HomeDir() (home string, err error)
- func Html2JS(data []byte) []byte
- func HtmlDecode(str string) string
- func HtmlEncode(str string) string
- func HttpGet(client *http.Client, url string, header http.Header) (io.ReadCloser, error)
- func HttpGetBytes(client *http.Client, url string, header http.Header) ([]byte, error)
- func HttpGetJSON(client *http.Client, url string, v interface{}) error
- func IsDir(dir string) bool
- func IsEmail(email string) bool
- func IsEmailRFC(email string) bool
- func IsExist(path string) bool
- func IsFile(filePath string) bool
- func IsLetter(l uint8) bool
- func IsSliceContainsStr(sl []string, str string) bool
- func IsUrl(url string) bool
- func Join(str []string, sep string) string
- func Ltrim(str string) string
- func Md5(str string) string
- func Nl2br(str string) string
- func Now() int64
- func ReadFile(filePath string) ([]byte, error)
- func ReadFileS(filePath string) (string, error)
- func RealPath(file string) (string, error)
- func Reverse(s string) string
- func Rtrim(str string) string
- func SaveFile(filePath string, b []byte) (int, error)
- func SaveFileS(filePath string, s string) (int, error)
- func Sha1(str string) string
- func Sha256(str string) string
- func StatDir(dirPath string, includeDir ...bool) ([]string, error)
- func StrPos(str string, find string) int
- func StrRepeat(str string, times int) string
- func StrReplace(str string, find string, to string) string
- func StrToLower(str string) string
- func StrToUpper(str string) string
- func StripTags(src string) string
- func SubStr(str string, start, length int) string
- func Trim(str string) string
- func UcFirst(str string) string
- func UnTarGz(srcFilePath string, destDirPath string) ([]string, error)
- func Unzip(srcPath, destPath string) ([]string, error)
- func UrlDecode(str string) (string, error)
- func UrlEncode(str string) string
- type NotFoundError
- type RawFile
- type RemoteError
Examples ¶
Constants ¶
const ( Gray = uint8(iota + 90) Red Green Yellow Blue Magenta //NRed = uint8(31) // Normal EndColor = "\033[0m" )
Variables ¶
var UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1541.0 Safari/537.36"
Functions ¶
func AppendStr ¶
AppendStr appends string to slice with no duplicates.
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
s := []string{"a"}
s = com.AppendStr(s, "a")
s = com.AppendStr(s, "b")
fmt.Println(s)
}
Output: [a b]
func ColorLog ¶
func ColorLog(format string, a ...interface{})
ColorLog colors log and print to stdout. See color rules in function 'ColorLogS'.
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
com.ColorLog(fmt.Sprintf(
"[WARN] This is a tesing log that should be colored, path( %s ),"+
" highlight # %s #, error [ %s ].",
"path to somewhere", "highlighted content", "tesing error"))
}
func ColorLogS ¶
ColorLogS colors log and return colored content. Log format: <level> <content [highlight][path]> [ error ]. Level: TRAC -> blue; ERRO -> red; WARN -> Magenta; SUCC -> green; others -> default. Content: default; path: yellow; error -> red. Level has to be surrounded by "[" and "]". Highlights have to be surrounded by "# " and " #"(space), "#" will be deleted. Paths have to be surrounded by "( " and " )"(space). Errors have to be surrounded by "[ " and " ]"(space). Note: it hasn't support windows yet, contribute is welcome.
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
coloredLog := com.ColorLogS(fmt.Sprintf(
"[WARN] This is a tesing log that should be colored, path( %s ),"+
" highlight # %s #, error [ %s ].",
"path to somewhere", "highlighted content", "tesing error"))
fmt.Println(coloredLog)
}
func CompareSliceStr ¶
CompareSliceStr compares two 'string' type slices. It returns true if elements and order are both the same.
func CompareSliceStrU ¶
CompareSliceStr compares two 'string' type slices. It returns true if elements are the same, and ignores the order.
func Copy ¶
Copy copies file from source to target path. It returns false and error when error occurs in underlying functions.
func CopyDir ¶
CopyDir copy files recursively from source to target directory.
The filter accepts a function that process the path info. and should return true for need to filter.
It returns error when error occurs in underlying functions.
func DateT ¶
Format time.Time struct to string MM - month - 01 M - month - 1, single bit DD - day - 02 D - day 2 YYYY - year - 2006 YY - year - 06 HH - 24 hours - 03 H - 24 hours - 3 hh - 12 hours - 03 h - 12 hours - 3 mm - minute - 04 m - minute - 4 ss - second - 05 s - second = 5
func ExecCmd ¶
ExecCmd executes system command and returns output, stderr(both string type) and error.
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
stdout, stderr, err := com.ExecCmd("go", "help", "get")
fmt.Println(stdout, stderr, err)
}
func ExecCmdDir ¶
ExecCmd executes system command and returns output, stderr(both string type) and error in given work directory.
func ExecCmdDirBytes ¶
func Expand ¶
Expand replaces {k} in template with match[k] or subs[atoi(k)] if k is not in match.
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
match := map[string]string{
"domain": "gowalker.org",
"subdomain": "github.com",
}
s := "http://{domain}/{subdomain}/{0}/{1}"
fmt.Println(com.Expand(s, match, "Unknwon", "gowalker"))
}
Output: http://gowalker.org/github.com/Unknwon/gowalker
func FetchFiles ¶
FetchFiles fetches files specified by the rawURL field in parallel.
Example ¶
package main
import (
"fmt"
"net/http"
"github.com/Unknwon/com"
)
type rawFile struct {
name string
rawURL string
data []byte
}
func (rf *rawFile) Name() string {
return rf.name
}
func (rf *rawFile) RawUrl() string {
return rf.rawURL
}
func (rf *rawFile) Data() []byte {
return rf.data
}
func (rf *rawFile) SetData(p []byte) {
rf.data = p
}
func main() {
// Code that should be outside of your function body.
// type rawFile struct {
// name string
// rawURL string
// data []byte
// }
// func (rf *rawFile) Name() string {
// return rf.name
// }
// func (rf *rawFile) RawUrl() string {
// return rf.rawURL
// }
// func (rf *rawFile) Data() []byte {
// return rf.data
// }
// func (rf *rawFile) SetData(p []byte) {
// rf.data = p
// }
files := []com.RawFile{
&rawFile{rawURL: "http://example.com"},
&rawFile{rawURL: "http://example.com/foo"},
}
err := com.FetchFiles(&http.Client{}, files, nil)
fmt.Println(err, len(files[0].Data()), len(files[1].Data()))
}
func FetchFilesCurl ¶
FetchFiles uses command `curl` to fetch files specified by the rawURL field in parallel.
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
type rawFile struct {
name string
rawURL string
data []byte
}
func (rf *rawFile) Name() string {
return rf.name
}
func (rf *rawFile) RawUrl() string {
return rf.rawURL
}
func (rf *rawFile) Data() []byte {
return rf.data
}
func (rf *rawFile) SetData(p []byte) {
rf.data = p
}
func main() {
// Code that should be outside of your function body.
// type rawFile struct {
// name string
// rawURL string
// data []byte
// }
// func (rf *rawFile) Name() string {
// return rf.name
// }
// func (rf *rawFile) RawUrl() string {
// return rf.rawURL
// }
// func (rf *rawFile) Data() []byte {
// return rf.data
// }
// func (rf *rawFile) SetData(p []byte) {
// rf.data = p
// }
files := []com.RawFile{
&rawFile{rawURL: "http://example.com"},
&rawFile{rawURL: "http://example.com/foo"},
}
err := com.FetchFilesCurl(files)
fmt.Println(err, len(files[0].Data()), len(files[1].Data()))
}
func GetGOPATHs ¶
func GetGOPATHs() []string
GetGOPATHs returns all paths in GOPATH variable.
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
gps := com.GetGOPATHs()
fmt.Println(gps)
}
func GetSrcPath ¶
GetSrcPath returns app. source code path. It only works when you have src. folder in GOPATH, it returns error not able to locate source folder path.
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
srcPath, err := com.GetSrcPath("github.com/Unknwon/com")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(srcPath)
}
func HomeDir ¶
HomeDir returns path of '~'(in Linux) on Windows, it returns error when the variable does not exist.
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
hd, err := com.HomeDir()
fmt.Println(hd, err)
}
func Html2JS ¶
Html2JS converts []byte type of HTML content into JS format.
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
htm := "<div id=\"button\" class=\"btn\">Click me</div>\n\r"
js := string(com.Html2JS([]byte(htm)))
fmt.Println(js)
}
Output: <div id=\"button\" class=\"btn\">Click me</div>\n
func HttpGet ¶
HttpGet gets the specified resource. ErrNotFound is returned if the server responds with status 404.
Example ¶
package main
import (
"io/ioutil"
"net/http"
"github.com/Unknwon/com"
)
func main() ([]byte, error) {
rc, err := com.HttpGet(&http.Client{}, "http://gowalker.org", nil)
if err != nil {
return nil, err
}
p, err := ioutil.ReadAll(rc)
rc.Close()
return p, err
}
func HttpGetBytes ¶
HttpGetBytes gets the specified resource. ErrNotFound is returned if the server responds with status 404.
Example ¶
package main
import (
"net/http"
"github.com/Unknwon/com"
)
func main() ([]byte, error) {
p, err := com.HttpGetBytes(&http.Client{}, "http://gowalker.org", nil)
return p, err
}
func HttpGetJSON ¶
HttpGetJSON gets the specified resource and mapping to struct. ErrNotFound is returned if the server responds with status 404.
Example ¶
package main
import (
"net/http"
"github.com/Unknwon/com"
)
func main() interface{} {
j := com.HttpGetJSON(&http.Client{}, "http://gowalker.org", nil)
return j
}
func IsDir ¶
IsDir checks whether the path is a directory. It returns false when it's a file or does not exist.
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
if com.IsDir("files") {
fmt.Println("directory 'files' exists")
return
}
fmt.Println("'files' is not a directory or does not exist")
}
func IsEmail ¶
validate string is an email address, if not return false basically validation can match 99% cases
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
fmt.Println(com.IsEmail("test@example.com"))
fmt.Println(com.IsEmail("@example.com"))
}
Output: true false
func IsEmailRFC ¶
validate string is an email address, if not return false this validation omits RFC 2822
func IsExist ¶
IsExist checks whether a file or directory exists. It returns false when the file or directory does not exist.
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
if com.IsExist("file.go") {
fmt.Println("file.go exists")
return
}
fmt.Println("file.go does not exist")
}
func IsFile ¶
IsFile checks whether the path is a file, it returns false when it's a directory or does not exist.
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
if com.IsFile("file.go") {
fmt.Println("file.go exists")
return
}
fmt.Println("file.go is not a file or does not exist")
}
func IsLetter ¶
IsLetter returns true if the 'l' is an English letter.
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
fmt.Println(com.IsLetter('1'))
fmt.Println(com.IsLetter('['))
fmt.Println(com.IsLetter('a'))
fmt.Println(com.IsLetter('Z'))
}
Output: false false true true
func IsSliceContainsStr ¶
IsSliceContainsStr returns true if a string exists in given slice.
func IsUrl ¶
validate string is a url link, if not return false simple validation can match 99% cases
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
fmt.Println(com.IsUrl("http://example.com"))
fmt.Println(com.IsUrl("http//example.com"))
}
Output: true false
func ReadFile ¶
ReadFile reads data type '[]byte' from file by given path. It returns error when fail to finish operation.
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
b, err := com.ReadFile("SaveFile.txt")
fmt.Println(string(b), err)
}
func ReadFileS ¶
ReadFileS reads data type 'string' from file by given path. It returns error when fail to finish operation.
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
s, err := com.ReadFileS("SaveFileS.txt")
fmt.Println(s, err)
}
func SaveFile ¶
SaveFile saves content type '[]byte' to file by given path. It returns error when fail to finish operation.
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
s := "ExampleSaveFile"
n, err := com.SaveFile("SaveFile.txt", []byte(s))
fmt.Println(n, err)
}
func SaveFileS ¶
SaveFileS saves content type 'string' to file by given path. It returns error when fail to finish operation.
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
s := "ExampleSaveFileS"
n, err := com.SaveFileS("SaveFileS.txt", s)
fmt.Println(n, err)
}
func StatDir ¶
StatDir gathers information of given directory by depth-first. It returns slice of file list and includes subdirectories if enabled; it returns error and nil slice when error occurs in underlying functions, or given path is not a directory or does not exist.
Slice does not include given path itself. If subdirectories is enabled, they will have suffix '/'.
func StrReplace ¶
replace find all occurs to string
func UnTarGz ¶
UnTarGz ungzips and untars .tar.gz file to 'destPath' and returns sub-directories. It returns error when fail to finish operation.
Example ¶
package main
import (
"fmt"
"github.com/Unknwon/com"
)
func main() {
dirs, err := com.UnTarGz("src/file/path", "dest/file/path")
fmt.Println(dirs, err)
}
Types ¶
type NotFoundError ¶
type NotFoundError struct {
Message string
}
func (NotFoundError) Error ¶
func (e NotFoundError) Error() string
type RemoteError ¶
func (*RemoteError) Error ¶
func (e *RemoteError) Error() string
