mirror of
https://github.com/golang/go
synced 2024-11-22 11:54:50 -07:00
- using doc template for gds now
- no interface extraction yet R=r OCL=25808 CL=25808
This commit is contained in:
parent
af678a593d
commit
42b49b1907
@ -11,6 +11,7 @@ import (
|
||||
"tabwriter";
|
||||
"flag";
|
||||
"fmt";
|
||||
"strings";
|
||||
Utils "utils";
|
||||
"token";
|
||||
"ast";
|
||||
@ -388,8 +389,64 @@ func (P *Printer) Error(pos int, tok int, msg string) {
|
||||
// ----------------------------------------------------------------------------
|
||||
// HTML support
|
||||
|
||||
const template_name = "template.html"
|
||||
var html_template string // TODO should probably be []byte
|
||||
|
||||
// tags for substitution in html_template
|
||||
const body_tag = "<!--BODY-->";
|
||||
|
||||
// indexes of various tags in html_template
|
||||
var body_index int;
|
||||
|
||||
func init() {
|
||||
fd, err0 := os.Open(template_name, os.O_RDONLY, 0);
|
||||
defer fd.Close();
|
||||
if err0 != nil {
|
||||
panic("cannot open html template");
|
||||
}
|
||||
|
||||
// TODO not sure why this didn't work
|
||||
/*
|
||||
var buf io.ByteBuffer;
|
||||
len, err1 := io.Copy(fd, buf);
|
||||
if err1 == io.ErrEOF {
|
||||
err1 = nil;
|
||||
}
|
||||
if err1 != nil {
|
||||
panic("cannot read html template");
|
||||
}
|
||||
if len == 0 {
|
||||
panic("html template empty");
|
||||
}
|
||||
html_template = string(buf.AllData());
|
||||
*/
|
||||
|
||||
var buf [8*1024]byte;
|
||||
len, err1 := io.Readn(fd, buf);
|
||||
if err1 == io.ErrEOF {
|
||||
err1 = nil;
|
||||
}
|
||||
if err1 != nil {
|
||||
panic("cannot read html template");
|
||||
}
|
||||
if len == 0 {
|
||||
panic("html template empty");
|
||||
}
|
||||
html_template = string(buf[0 : len]);
|
||||
|
||||
body_index = strings.Index(html_template, body_tag);
|
||||
if body_index < 0 {
|
||||
panic("html_template has no BODY tag");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
func (P *Printer) HtmlPrologue(title string) {
|
||||
if P.html {
|
||||
P.Printf("%s\n", html_template[0 : body_index]);
|
||||
P.Printf("<h1>%s</h1>\n", "package " + title);
|
||||
P.Printf("<pre>\n");
|
||||
/*
|
||||
P.TaggedString(0,
|
||||
"<html>\n"
|
||||
"<head>\n"
|
||||
@ -402,18 +459,24 @@ func (P *Printer) HtmlPrologue(title string) {
|
||||
"<pre>\n",
|
||||
"", ""
|
||||
)
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
func (P *Printer) HtmlEpilogue() {
|
||||
if P.html {
|
||||
P.String(0, ""); // flush
|
||||
P.Printf("</pre>\n");
|
||||
P.Printf("%s", html_template[body_index : len(html_template)]);
|
||||
/*
|
||||
P.TaggedString(0,
|
||||
"</pre>\n"
|
||||
"</body>\n"
|
||||
"<html>\n",
|
||||
"", ""
|
||||
)
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
@ -1130,7 +1193,7 @@ func Print(writer io.Write, html bool, prog *ast.Program) {
|
||||
P.Init(text, html, prog.Comments);
|
||||
|
||||
// TODO would be better to make the name of the src file be the title
|
||||
P.HtmlPrologue("package " + prog.Ident.Str);
|
||||
P.HtmlPrologue(prog.Ident.Str);
|
||||
P.Program(prog);
|
||||
P.HtmlEpilogue();
|
||||
|
||||
|
@ -130,8 +130,9 @@ func f3(a *[]int, m map[string] int) {
|
||||
|
||||
type I interface {}
|
||||
|
||||
func f3(x I) int {
|
||||
switch tmp := tmp.(type) {
|
||||
/*
|
||||
func f4(x I) int {
|
||||
switch tmp := x.(type) {
|
||||
case S: return 1;
|
||||
}
|
||||
switch {
|
||||
@ -139,7 +140,7 @@ func f3(x I) int {
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
func main() {
|
||||
// the prologue
|
||||
|
6
usr/gri/pretty/template.html
Normal file
6
usr/gri/pretty/template.html
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
<!--BODY-->
|
||||
|
||||
</div> <!-- content -->
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user