本文整理汇总了Golang中go/doc.ToHTML函数的典型用法代码示例。如果您正苦于以下问题:Golang ToHTML函数的具体用法?Golang ToHTML怎么用?Golang ToHTML使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ToHTML函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: pageView
func pageView(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/html")
id := strings.TrimSpace(r.FormValue("id"))
if id != "" {
db := getDatabase()
d, found := db.FindFullPackage(id)
if !found {
pageNotFound(w, r)
return
}
if d.StarCount < 0 {
d.StarCount = 0
}
var descHTML bytesp.Slice
doc.ToHTML(&descHTML, d.Description, nil)
if err := templates.ExecuteTemplate(w, "view.html", struct {
UIUtils
gcse.HitInfo
DescHTML template.HTML
TotalDocCount int
StaticRank int
ShowReadme bool
}{
HitInfo: d,
DescHTML: template.HTML(descHTML),
TotalDocCount: db.PackageCount(),
StaticRank: d.StaticRank + 1,
ShowReadme: len(d.Description) < 10 && len(d.ReadmeData) > 0,
}); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
}
开发者ID:xavieryang007,项目名称:gcse,代码行数:35,代码来源:view.go
示例2: main
func main() {
pkg, err := build.Import("robpike.io/ivy", "", build.ImportComment)
if err != nil {
log.Fatal(err)
}
fs := token.NewFileSet()
pkgs, err := parser.ParseDir(fs, pkg.Dir, nil, parser.ParseComments)
if err != nil {
log.Fatal(err)
}
astPkg := pkgs[pkg.Name]
if astPkg == nil {
log.Fatalf("failed to locate %s package", pkg.Name)
}
docPkg := doc.New(astPkg, pkg.ImportPath, doc.AllDecls)
htmlBuf := new(bytes.Buffer)
fmt.Fprintln(htmlBuf, `<!-- auto-generated from robpike.io/ivy package doc -->`)
fmt.Fprintln(htmlBuf, head)
fmt.Fprintln(htmlBuf, `<body>`)
doc.ToHTML(htmlBuf, docPkg.Doc, nil)
fmt.Fprintln(htmlBuf, `</body></html>`)
goBuf := new(bytes.Buffer)
fmt.Fprintf(goBuf, "package mobile\n\n")
fmt.Fprintf(goBuf, "// GENERATED; DO NOT EDIT\n")
fmt.Fprintf(goBuf, "const help = `%s`\n", sanitize(htmlBuf.Bytes()))
buf, err := format.Source(goBuf.Bytes())
if err != nil {
log.Fatalf("failed to gofmt: %v", err)
}
os.Stdout.Write(buf)
}
开发者ID:zzn01,项目名称:ivy,代码行数:35,代码来源:help_gen.go
示例3: htmlCommentFmt
// Template formatter for "html-comment" format.
func htmlCommentFmt(w io.Writer, format string, x ...interface{}) {
var buf bytes.Buffer
writeAny(&buf, fileset(x), x[0])
// TODO(gri) Provide list of words (e.g. function parameters)
// to be emphasized by ToHTML.
doc.ToHTML(w, buf.Bytes(), nil) // does html-escaping
}
开发者ID:ssrl,项目名称:go,代码行数:8,代码来源:godoc.go
示例4: commentFn
// commentFn formats a source code comment as HTML.
func commentFn(v string) htemp.HTML {
var buf bytes.Buffer
godoc.ToHTML(&buf, v, nil)
p := buf.Bytes()
p = replaceAll(p, h3Pat, func(out, src []byte, m []int) []byte {
out = append(out, src[m[0]:m[1]-1]...)
out = append(out, '4')
return out
})
p = replaceAll(p, rfcPat, func(out, src []byte, m []int) []byte {
out = append(out, `<a href="http://tools.ietf.org/html/rfc`...)
out = append(out, src[m[2]:m[3]]...)
out = append(out, `">`...)
out = append(out, src[m[0]:m[1]]...)
out = append(out, `</a>`...)
return out
})
p = replaceAll(p, packagePat, func(out, src []byte, m []int) []byte {
path := bytes.TrimRight(src[m[2]:m[3]], ".!?:")
if !doc.IsValidPath(string(path)) {
return append(out, src[m[0]:m[1]]...)
}
out = append(out, src[m[0]:m[2]]...)
out = append(out, `<a href="/`...)
out = append(out, path...)
out = append(out, `">`...)
out = append(out, path...)
out = append(out, `</a>`...)
out = append(out, src[m[2]+len(path):m[1]]...)
return out
})
return htemp.HTML(p)
}
开发者ID:AlekSi,项目名称:gddo,代码行数:34,代码来源:template.go
示例5: html
func (p *Package) html(text string, scope string, ignored map[string]struct{}) template.HTML {
var buf bytes.Buffer
doc.ToHTML(&buf, text, nil)
var out bytes.Buffer
p.linkify(&out, buf.String(), scope, ignored)
return template.HTML(out.String())
}
开发者ID:rainycape,项目名称:gondola,代码行数:7,代码来源:package.go
示例6: comment_htmlFunc
func comment_htmlFunc(comment string) string {
var buf bytes.Buffer
// TODO(gri) Provide list of words (e.g. function parameters)
// to be emphasized by ToHTML.
doc.ToHTML(&buf, comment, nil) // does html-escaping
return buf.String()
}
开发者ID:tw4452852,项目名称:go-src,代码行数:7,代码来源:godoc.go
示例7: commentFn
// commentFn formats a source code comment as HTML.
func commentFn(v string) string {
var buf bytes.Buffer
godoc.ToHTML(&buf, v, nil)
p := buf.Bytes()
p = bytes.Replace(p, h3Open, h4Open, -1)
p = bytes.Replace(p, h3Close, h4Close, -1)
p = rfcRE.ReplaceAll(p, rfcReplace)
return string(p)
}
开发者ID:jeffallen,项目名称:gopkgdoc,代码行数:10,代码来源:template.go
示例8: pageView
func pageView(w http.ResponseWriter, r *http.Request) {
id := strings.TrimSpace(r.FormValue("id"))
if id != "" {
c := appengine.NewContext(r)
ddb := NewCachedDocDB(c, "doc")
var doc DocInfo
err, exists := ddb.Get(id, &doc)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
if !exists {
fmt.Fprintf(w, `<html><body>No such entry!`)
ent, _ := findCrawlingEntry(c, kindCrawlerPackage, id)
if ent != nil {
fmt.Fprintf(w, ` Scheduled to be crawled at %s`,
ent.ScheduleTime.Format("2006-01-02 15:04:05"))
} else {
fmt.Fprintf(w, ` Not found yet!`)
}
fmt.Fprintf(w, ` Click to <a href="crawl?id=%s">crawl</a>.</body></html>`,
template.URLQueryEscaper(id))
return
}
if doc.StarCount < 0 {
doc.StarCount = 0
}
var descHTML villa.ByteSlice
godoc.ToHTML(&descHTML, doc.Description, nil)
showReadme := len(doc.Description) < 10 && len(doc.ReadmeData) > 0
err = templates.ExecuteTemplate(w, "view.html", struct {
DocInfo
DescHTML template.HTML
ShowReadme bool
}{
DocInfo: doc,
DescHTML: template.HTML(descHTML),
ShowReadme: showReadme,
})
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
}
开发者ID:pombredanne,项目名称:go-code-search,代码行数:50,代码来源:main.go
示例9: commentFn
// commentFn formats a source code comment as HTML.
func commentFn(v string) htemp.HTML {
var buf bytes.Buffer
godoc.ToHTML(&buf, v, nil)
p := buf.Bytes()
p = replaceAll(p, h3Pat, func(out, src []byte, m []int) []byte {
out = append(out, `<h4 id="`...)
out = append(out, src[m[2]:m[3]]...)
out = append(out, `">`...)
out = append(out, src[m[4]:m[5]]...)
out = append(out, ` <a class="permalink" href="#`...)
out = append(out, src[m[2]:m[3]]...)
out = append(out, `">¶</a></h4>`...)
return out
})
p = replaceAll(p, rfcPat, func(out, src []byte, m []int) []byte {
out = append(out, `<a href="http://tools.ietf.org/html/rfc`...)
out = append(out, src[m[2]:m[3]]...)
// If available, add major section fragment
if m[6] != -1 {
out = append(out, `#section-`...)
out = append(out, src[m[8]:m[9]]...)
// If available, add minor section fragment
if m[13] != -1 {
out = append(out, src[m[12]:m[13]]...)
}
}
out = append(out, `">`...)
out = append(out, src[m[0]:m[1]]...)
out = append(out, `</a>`...)
return out
})
p = replaceAll(p, packagePat, func(out, src []byte, m []int) []byte {
path := bytes.TrimRight(src[m[2]:m[3]], ".!?:")
if !gosrc.IsValidPath(string(path)) {
return append(out, src[m[0]:m[1]]...)
}
out = append(out, src[m[0]:m[2]]...)
out = append(out, `<a href="/`...)
out = append(out, path...)
out = append(out, `">`...)
out = append(out, path...)
out = append(out, `</a>`...)
out = append(out, src[m[2]+len(path):m[1]]...)
return out
})
return htemp.HTML(p)
}
开发者ID:jjmiv,项目名称:gddo,代码行数:51,代码来源:template.go
示例10: toHTML
// toHTML returns Go documention in HTML format for the main package
// in the current directory. It returns an error if it finds multiple
// packages or a non-main package.
func toHTML() ([]byte, error) {
dir := "."
// create a build.Package
bpkg, err := build.ImportDir(dir, build.ImportComment)
if err != nil {
return nil, err
}
// create an ast.Package
fset := token.NewFileSet()
goFiles := map[string]struct{}{}
for _, f := range bpkg.GoFiles {
goFiles[f] = struct{}{}
}
for _, f := range bpkg.CgoFiles {
goFiles[f] = struct{}{}
}
filter := func(fi os.FileInfo) bool {
_, ok := goFiles[fi.Name()]
return ok
}
apkgs, err := parser.ParseDir(fset, dir, filter, parser.ParseComments)
if err != nil {
return nil, err
}
if len(apkgs) > 1 {
return nil, errors.New("multiple packages in directory")
}
var apkg *ast.Package
var ok bool
if apkg, ok = apkgs["main"]; !ok {
return nil, errors.New("package is a non-main package")
}
// create a doc.Package
dpkg := doc.New(apkg, bpkg.ImportPath, 0)
// return html
b := new(bytes.Buffer)
doc.ToHTML(b, dpkg.Doc, nil)
return b.Bytes(), nil
}
开发者ID:xi2,项目名称:genman,代码行数:46,代码来源:writeman.go
示例11: pageView
func pageView(w http.ResponseWriter, r *http.Request) {
id := strings.TrimSpace(r.FormValue("id"))
if id != "" {
var doc gcse.HitInfo
if !findPackage(id, &doc) {
http.Error(w, fmt.Sprintf("Package %s not found!", id), http.StatusNotFound)
return
}
indexDB, _ := indexDBBox.Get().(*index.TokenSetSearcher)
if doc.StarCount < 0 {
doc.StarCount = 0
}
var descHTML bytesp.Slice
godoc.ToHTML(&descHTML, doc.Description, nil)
showReadme := len(doc.Description) < 10 && len(doc.ReadmeData) > 0
docCount := 0
if indexDB != nil {
docCount = indexDB.DocCount()
}
if err := templates.ExecuteTemplate(w, "view.html", struct {
UIUtils
gcse.HitInfo
DescHTML template.HTML
TotalDocCount int
StaticRank int
ShowReadme bool
}{
HitInfo: doc,
DescHTML: template.HTML(descHTML),
TotalDocCount: docCount,
StaticRank: doc.StaticRank + 1,
ShowReadme: showReadme,
}); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
}
开发者ID:snowsnail,项目名称:gcse,代码行数:40,代码来源:smain.go
示例12: commentToHTML
func commentToHTML(comment string) string {
b := bytes.NewBuffer(make([]byte, 0, 128))
doc.ToHTML(b, []byte(comment), nil)
return b.String()
}
开发者ID:nsf,项目名称:gortfm,代码行数:5,代码来源:jsencode.go
示例13: renderDoc
func renderDoc(render macaron.Render, pdoc *Package, docPath string) error {
data := make(map[string]interface{})
data["PkgFullIntro"] = pdoc.Doc
exports := make([]exportSearchObject, 0, 10)
var buf bytes.Buffer
links := make([]*Link, 0, len(pdoc.Types)+len(pdoc.Imports)+len(pdoc.TestImports)+
len(pdoc.Funcs)+10)
// Get all types, functions and import packages
for _, t := range pdoc.Types {
links = append(links, &Link{
Name: t.Name,
Comment: template.HTMLEscapeString(t.Doc),
})
exports = append(exports, exportSearchObject{t.Name})
// buf.WriteString("'" + t.Name + "',")
}
for _, f := range pdoc.Funcs {
f.Code = template.HTMLEscapeString(f.Code)
links = append(links, &Link{
Name: f.Name,
Comment: template.HTMLEscapeString(f.Doc),
})
exports = append(exports, exportSearchObject{f.Name})
// buf.WriteString("'" + f.Name + "',")
}
for _, t := range pdoc.Types {
for _, f := range t.Funcs {
links = append(links, &Link{
Name: f.Name,
Comment: template.HTMLEscapeString(f.Doc),
})
exports = append(exports, exportSearchObject{f.Name})
// buf.WriteString("'" + f.Name + "',")
}
for _, m := range t.Methods {
exports = append(exports, exportSearchObject{t.Name + "." + m.Name})
// buf.WriteString("'" + t.Name + "_" + m.Name + "',")
}
}
// Ignore C.
for _, v := range append(pdoc.Imports, pdoc.TestImports...) {
if v != "C" {
links = append(links, &Link{
Name: path.Base(v) + ".",
Path: v,
})
}
}
// Set exported objects type-ahead.
// exportDataSrc := buf.String()
if len(exports) > 0 {
pdoc.IsHasExport = true
data["IsHasExports"] = true
exportDataSrc, _ := json.Marshal(exports)
data["ExportDataSrc"] = "<script>var exportDataSrc = " + string(exportDataSrc) + ";</script>"
}
pdoc.IsHasConst = len(pdoc.Consts) > 0
pdoc.IsHasVar = len(pdoc.Vars) > 0
if len(pdoc.Examples) > 0 {
pdoc.IsHasExample = true
data["IsHasExample"] = pdoc.IsHasExample
data["Examples"] = pdoc.Examples
}
// Constants.
data["IsHasConst"] = pdoc.IsHasConst
data["Consts"] = pdoc.Consts
for i, v := range pdoc.Consts {
if len(v.Doc) > 0 {
buf.Reset()
doc.ToHTML(&buf, v.Doc, nil)
v.Doc = buf.String()
}
buf.Reset()
v.Decl = template.HTMLEscapeString(v.Decl)
v.Decl = strings.Replace(v.Decl, """, "\"", -1)
FormatCode(&buf, &v.Decl, links)
v.FmtDecl = buf.String()
pdoc.Consts[i] = v
}
// Variables.
data["IsHasVar"] = pdoc.IsHasVar
data["Vars"] = pdoc.Vars
for i, v := range pdoc.Vars {
if len(v.Doc) > 0 {
buf.Reset()
doc.ToHTML(&buf, v.Doc, nil)
v.Doc = buf.String()
}
buf.Reset()
FormatCode(&buf, &v.Decl, links)
//.........这里部分代码省略.........
开发者ID:qiancy,项目名称:gowalker,代码行数:101,代码来源:doc.go
示例14: htmlCommentFmt
// Template formatter for "html-comment" format.
func htmlCommentFmt(w io.Writer, x interface{}, format string) {
var buf bytes.Buffer
writeAny(&buf, x, false)
doc.ToHTML(w, buf.Bytes()) // does html-escaping
}
开发者ID:rapgamer,项目名称:golang-china,代码行数:6,代码来源:godoc.go
示例15: generatePage
// generatePage genarates documentation page for project.
// it returns false when its a invaild(empty) project.
func generatePage(this *HomeController, pdoc *doc.Package, q string, lang string) bool {
// Set properties.
this.TplNames = "docs_" + lang + ".html"
// Refresh (within 10 seconds).
this.Data["IsRefresh"] = pdoc.Created.Add(10 * time.Second).UTC().After(time.Now().UTC())
// Get project name.
lastIndex := strings.LastIndex(q, "/")
proName := q[lastIndex+1:]
if i := strings.Index(proName, "?"); i > -1 {
proName = proName[:i]
}
this.Data["ProName"] = proName
// Project VCS home page.
switch {
case q[:4] == "code": // code.google.com
if strings.Index(q, "source/") == -1 {
this.Data["ProPath"] = strings.Replace(q, pdoc.ProjectName, pdoc.ProjectName+"/source/browse", 1)
} else {
this.Data["ProPath"] = q
}
case q[:3] == "git": // github.com
if proName != pdoc.ProjectName {
// Not root.
this.Data["ProPath"] = strings.Replace(q, proName, "tree/master/"+proName, 1)
} else {
this.Data["ProPath"] = q + "/tree/master"
}
}
this.Data["Views"] = pdoc.Views + 1
// Remove last "/".
if urlLen := len(q); q[urlLen-1] == '/' {
q = q[:urlLen-1]
}
if utils.IsGoRepoPath(pdoc.ImportPath) {
this.Data["IsGoRepo"] = true
}
pkgDocPath := q[:lastIndex]
this.Data["ProDocPath"] = pkgDocPath // Upper level project URL.
// Introduction.
this.Data["ImportPath"] = pdoc.ImportPath
// Load project data from database.
pdecl, err := models.LoadProject(pdoc.ImportPath)
if err != nil {
beego.Error("SearchController.generatePage(): models.LoadProject()", err)
return false
}
var buf bytes.Buffer
godoc.ToHTML(&buf, pdecl.Doc, nil)
pkgInfo := buf.String()
pkgInfo = strings.Replace(pkgInfo, "<p>", "<p><b>", 1)
pkgInfo = strings.Replace(pkgInfo, "</p>", "</b></p>", 1)
this.Data["PkgFullIntro"] = pkgInfo
// Convert data format.
err = ConvertDataFormat(pdoc, pdecl)
if err != nil {
beego.Error("SearchController.generatePage(): ConvertDataFormat", err)
return false
}
links := make([]*utils.Link, 0, len(pdoc.Types)+len(pdoc.Imports))
// Get all types and import packages
for _, t := range pdoc.Types {
links = append(links, &utils.Link{
Name: t.Name,
Comment: t.Doc,
})
}
for _, v := range pdoc.Imports {
links = append(links, &utils.Link{
Name: path.Base(v) + ".",
Path: v,
})
}
// Index.
this.Data["IsHasConst"] = len(pdoc.Consts) > 0
this.Data["IsHasVar"] = len(pdoc.Vars) > 0
this.Data["Funcs"] = pdoc.Funcs
for i, f := range pdoc.Funcs {
buf.Reset()
godoc.ToHTML(&buf, f.Doc, nil)
f.Doc = buf.String()
buf.Reset()
utils.FormatCode(&buf, f.Decl, links)
f.FmtDecl = buf.String()
buf.Reset()
utils.FormatCode(&buf, f.Code, links)
f.Code = buf.String()
pdoc.Funcs[i] = f
}
this.Data["Types"] = pdoc.Types
//.........这里部分代码省略.........
开发者ID:skelterjohn,项目名称:gowalker,代码行数:101,代码来源:home.go
示例16: commentFmt
// commentFmt formats a source code control comment as HTML.
func commentFmt(v string) template.HTML {
var buf bytes.Buffer
godoc.ToHTML(&buf, v, nil)
return template.HTML(buf.String())
}
开发者ID:goods,项目名称:thegoods,代码行数:6,代码来源:template.go
示例17: build
// build generates data from source files.
func (w *walker) build(srcs []*source) (*Package, error) {
// Set created time.
w.pdoc.Created = time.Now().UTC()
// Add source files to walker, I skipped references here.
w.srcs = make(map[string]*source)
for _, src := range srcs {
srcName := strings.ToLower(src.name) // For readme comparation.
switch {
case strings.HasSuffix(src.name, ".go"):
w.srcs[src.name] = src
case len(w.pdoc.Tag) > 0:
continue // Only save latest readme.
case strings.HasPrefix(srcName, "readme_zh") || strings.HasPrefix(srcName, "readme_cn"):
models.SavePkgDoc(w.pdoc.ImportPath, "zh", src.data)
case strings.HasPrefix(srcName, "readme"):
models.SavePkgDoc(w.pdoc.ImportPath, "en", src.data)
}
}
w.fset = token.NewFileSet()
// Find the package and associated files.
ctxt := build.Context{
GOOS: runtime.GOOS,
GOARCH: runtime.GOARCH,
CgoEnabled: true,
JoinPath: path.Join,
IsAbsPath: path.IsAbs,
SplitPathList: func(list string) []string { return strings.Split(list, ":") },
IsDir: func(path string) bool { panic("unexpected") },
HasSubdir: func(root, dir string) (rel string, ok bool) { panic("unexpected") },
ReadDir: func(dir string) (fi []os.FileInfo, err error) { return w.readDir(dir) },
OpenFile: func(path string) (r io.ReadCloser, err error) { return w.openFile(path) },
Compiler: "gc",
}
bpkg, err := ctxt.ImportDir(w.pdoc.ImportPath, 0)
// Continue if there are no Go source files; we still want the directory info.
_, nogo := err.(*build.NoGoError)
if err != nil {
if nogo {
err = nil
beego.Info("doc.walker.build -> No Go Source file")
} else {
return w.pdoc, errors.New("doc.walker.build -> " + err.Error())
}
}
// Parse the Go files
files := make(map[string]*ast.File)
for _, name := range append(bpkg.GoFiles, bpkg.CgoFiles...) {
file, err := parser.ParseFile(w.fset, name, w.srcs[name].data, parser.ParseComments)
if err != nil {
beego.Error("doc.walker.build -> parse go files:", err)
continue
}
w.pdoc.Files = append(w.pdoc.Files, name)
//w.pdoc.SourceSize += len(w.srcs[name].data)
files[name] = file
}
apkg, _ := ast.NewPackage(w.fset, files, simpleImporter, nil)
// Find examples in the test files.
for _, name := range append(bpkg.TestGoFiles, bpkg.XTestGoFiles...) {
file, err := parser.ParseFile(w.fset, name, w.srcs[name].data, parser.ParseComments)
if err != nil {
beego.Error("doc.walker.build -> find examples:", err)
continue
}
//w.pdoc.TestFiles = append(w.pdoc.TestFiles, &File{Name: name, URL: w.srcs[name].browseURL})
//w.pdoc.TestSourceSize += len(w.srcs[name].data)
w.examples = append(w.examples, doc.Examples(file)...)
}
//w.vetPackage(apkg)
mode := doc.Mode(0)
if w.pdoc.ImportPath == "builtin" {
mode |= doc.AllDecls
}
pdoc := doc.New(apkg, w.pdoc.ImportPath, mode)
w.pdoc.Synopsis = utils.Synopsis(pdoc.Doc)
pdoc.Doc = strings.TrimRight(pdoc.Doc, " \t\n\r")
var buf bytes.Buffer
doc.ToHTML(&buf, pdoc.Doc, nil)
w.pdoc.Doc = w.pdoc.Doc + "<br />" + buf.String()
w.pdoc.Doc = strings.Replace(w.pdoc.Doc, "<p>", "<p><b>", 1)
w.pdoc.Doc = strings.Replace(w.pdoc.Doc, "</p>", "</b></p>", 1)
w.pdoc.Doc = base32.StdEncoding.EncodeToString([]byte(w.pdoc.Doc))
w.pdoc.Examples = w.getExamples("")
w.pdoc.IsCmd = bpkg.IsCommand()
w.srcLines = make(map[string][]string)
w.pdoc.Consts = w.values(pdoc.Consts)
w.pdoc.Funcs = w.funcs(pdoc.Funcs)
//.........这里部分代码省略.........
开发者ID:seacoastboy,项目名称:gowalker,代码行数:101,代码来源:walker.go
示例18: generatePage
// generatePage genarates documentation page for project.
// it returns false when its a invaild(empty) project.
func generatePage(this *HomeController, pdoc *doc.Package, q string, lang string) bool {
// Load project data from database.
pdecl, err := models.LoadProject(pdoc.ImportPath)
if err != nil {
beego.Error("HomeController.generatePage():", err)
return false
}
// Set properties.
this.TplNames = "docs_" + lang + ".html"
// Refresh (within 10 seconds).
this.Data["IsRefresh"] = pdoc.Created.Add(10 * time.Second).UTC().After(time.Now().UTC())
// Get VCS name, project name, project home page, and Upper level project URL.
this.Data["VCS"], this.Data["ProName"], this.Data["ProPath"], this.Data["ProDocPath"] = getVCSInfo(q, pdoc)
if utils.IsGoRepoPath(pdoc.ImportPath) &&
strings.Index(pdoc.ImportPath, ".") == -1 {
this.Data["IsGoRepo"] = true
}
this.Data["Views"] = pdoc.Views + 1
// Tags.
this.Data["Tags"] = getTags(pdoc.Tags, lang)
// Introduction.
this.Data["ImportPath"] = pdoc.ImportPath
byts, _ := base32.StdEncoding.DecodeString(pdecl.Doc)
this.Data["PkgFullIntro"] = string(byts)
var buf bytes.Buffer
// Convert data format.
err = ConvertDataFormat(pdoc, pdecl)
if err != nil {
beego.Error("HomeController.generatePage(): ConvertDataFormat", err)
return false
}
links := make([]*utils.Link, 0, len(pdoc.Types)+len(pdoc.Imports)+len(pdoc.Funcs)+10)
// Get all types, functions and import packages
for _, t := range pdoc.Types {
links = append(links, &utils.Link{
Name: t.Name,
Comment: template.HTMLEscapeString(t.Doc),
})
buf.WriteString(""" + t.Name + "",")
}
for _, f := range pdoc.Funcs {
links = append(links, &utils.Link{
Name: f.Name,
Comment: template.HTMLEscapeString(f.Doc),
})
buf.WriteString(""" + f.Name + "",")
}
for _, t := range pdoc.Types {
for _, f := range t.Funcs {
links = append(links, &utils.Link{
Name: f.Name,
Comment: template.HTMLEscapeString(f.Doc),
})
buf.WriteString(""" + f.Name + "",")
}
for _, m := range t.Methods {
buf.WriteString(""" + t.Name + "." + m.Name + "",")
}
}
for _, v := range pdoc.Imports {
links = append(links, &utils.Link{
Name: path.Base(v) + ".",
Path: v,
})
}
exportDataSrc := buf.String()
if len(exportDataSrc) > 0 {
this.Data["HasExports"] = true
exportDataSrc = exportDataSrc[:len(exportDataSrc)-1]
// Set export keyword type-ahead.
this.Data["ExportDataSrc"] = exportDataSrc
}
// Index.
this.Data["IsHasConst"] = len(pdoc.Consts) > 0
this.Data["IsHasVar"] = len(pdoc.Vars) > 0
this.Data["Funcs"] = pdoc.Funcs
for i, f := range pdoc.Funcs {
buf.Reset()
godoc.ToHTML(&buf, f.Doc, nil)
f.Doc = buf.String()
buf.Reset()
utils.FormatCode(&buf, &f.Decl, links)
f.FmtDecl = buf.String()
//.........这里部分代码省略.........
开发者ID:hendyyou,项目名称:gowalker,代码行数:101,代码来源:home.go
示例19: renderDoc
func renderDoc(this *HomeRouter, pdoc *hv.Package, q, tag, docPath string) bool {
this.Data["PkgFullIntro"] = pdoc.Doc
var buf bytes.Buffer
links := make([]*utils.Link, 0, len(pdoc.Types)+len(pdoc.Imports)+len(pdoc.TestImports)+
len(pdoc.Funcs)+10)
// Get all types, functions and import packages
for _, t := range pdoc.Types {
links = append(links, &utils.Link{
Name: t.Name,
Comment: template.HTMLEscapeString(t.Doc),
})
buf.WriteString("'" + t.Name + "',")
}
for _, f := range pdoc.Funcs {
links = append(links, &utils.Link{
Name: f.Name,
Comment: template.HTMLEscapeString(f.Doc),
})
buf.WriteString("'" + f.Name + "',")
}
for _, t := range pdoc.Types {
for _, f := range t.Funcs {
links = append(links, &utils.Link{
Name: f.Name,
Comment: template.HTMLEscapeString(f.Doc),
})
buf.WriteString("'" + f.Name + "',")
}
for _, m := range t.Methods {
buf.WriteString("'" + t.Name + "." + m.Name + "',")
}
}
// Ignore C.
for _, v := range append(pdoc.Imports, pdoc.TestImports...) {
if v != "C" {
links = append(links, &utils.Link{
Name: path.Base(v) + ".",
Path: v,
})
}
}
// Set exported objects type-ahead.
exportDataSrc := buf.String()
if len(exportDataSrc) > 0 {
pdoc.IsHasExport = true
this.Data["IsHasExports"] = true
exportDataSrc = exportDataSrc[:len(exportDataSrc)-1]
this.Data["ExportDataSrc"] = "<script>$('.search-export').typeahead({local: [" +
exportDataSrc + "],limit: 10});</script>"
}
pdoc.UserExamples = getUserExamples(pdoc.ImportPath)
pdoc.IsHasConst = len(pdoc.Consts) > 0
pdoc.IsHasVar = len(pdoc.Vars) > 0
if len(pdoc.Examples)+len(pdoc.UserExamples) > 0 {
pdoc.IsHasExample = true
this.Data["IsHasExample"] = pdoc.IsHasExample
this.Data["Examples"] = append(pdoc.Examples, pdoc.UserExamples...)
}
// Commented and total objects number.
var comNum, totalNum int
// Constants.
this.Data["IsHasConst"] = pdoc.IsHasConst
this.Data["Consts"] = pdoc.Consts
for i, v := range pdoc.Consts {
if len(v.Doc) > 0 {
buf.Reset()
godoc.ToHTML(&buf, v.Doc, nil)
v.Doc = buf.String()
}
buf.Reset()
v.Decl = template.HTMLEscapeString(v.Decl)
v.Decl = strings.Replace(v.Decl, """, "\"", -1)
utils.FormatCode(&buf, &v.Decl, links)
v.FmtDecl = buf.String()
pdoc.Consts[i] = v
}
// Variables.
this.Data["IsHasVar"] = pdoc.IsHasVar
this.Data["Vars"] = pdoc.Vars
for i, v := range pdoc.Vars {
if len(v.Doc) > 0 {
buf.Reset()
godoc.ToHTML(&buf, v.Doc, nil)
v.Doc = buf.String()
}
buf.Reset()
utils.FormatCode(&buf, &v.Decl, links)
v.FmtDecl = buf.String()
pdoc.Vars[i] = v
//.........这里部分代码省略.........
开发者ID:CharlesSong,项目名称:gowalker,代码行数:101,代码来源:home.go
示例20: generatePage
//.........这里部分代码省略.........
}
// Commented and total objects number.
var comNum, totalNum int
// Index.
this.Data["IsHasConst"] = len(pdoc.Consts) > 0
this.Data["IsHasVar"] = len(pdoc.Vars) > 0
// Constants.
this.Data["Consts"] = pdoc.Consts
for i, v := range pdoc.Consts {
buf.Reset()
v.Decl = template.HTMLEscapeString(v.Decl)
v.Decl = strings.Replace(v.Decl, """, "\"", -1)
utils.FormatCode(&buf, &v.Decl, links)
v.FmtDecl = buf.String()
pdoc.Consts[i] = v
}
// Variables.
this.Data["Vars"] = pdoc.Vars
for i, v := range pdoc.Vars {
buf.Reset()
utils.FormatCode(&buf, &v.Decl, links)
v.FmtDecl = buf.String()
pdoc.Vars[i] = v
}
this.Data["Funcs"] = pdoc.Funcs
for i, f := range pdoc.Funcs {
if len(f.Doc) > 0 {
buf.Reset()
godoc.ToHTML(&buf, f.Doc, nil)
f.Doc = buf.String()
comNum++
}
buf.Reset()
utils.FormatCode(&buf, &f.Decl, links)
f.FmtDecl = buf.String()
buf.Reset()
utils.FormatCode(&buf, &f.Code, links)
f.Code = buf.String()
if exs := getExamples(pdoc, "", f.Name); len(exs) > 0 {
f.IsHasExam = true
f.Exams = exs
}
totalNum++
pdoc.Funcs[i] = f
}
this.Data["Types"] = pdoc.Types
for i, t := range pdoc.Types {
for j, f := range t.Funcs {
if len(f.Doc) > 0 {
buf.Reset()
godoc.ToHTML(&buf, f.Doc, nil)
f.Doc = buf.String()
comNum++
}
buf.Reset()
utils.FormatCode(&buf, &f.Decl, links)
f.FmtDecl = buf.String()
buf.Reset()
utils.FormatCode(&buf, &f.Code, links)
f.Code = buf.String()
开发者ID:seacoastboy,项目名称:gowalker,代码行数:67,代码来源:home.go
注:本文中的go/doc.ToHTML函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论