From: Robert Griesemer Date: Sat, 7 Mar 2009 00:54:26 +0000 (-0800) Subject: weekend snapshot X-Git-Tag: weekly.2009-11-06~2077 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=63090761589d4f4330c48f6e66df5d6b856fa051;p=gostls13.git weekend snapshot - fixed a minor bug - some initial code to extract interface of a package R=r OCL=25866 CL=25866 --- diff --git a/usr/gri/pretty/printer.go b/usr/gri/pretty/printer.go index 009dde35cb..5a75483fb2 100644 --- a/usr/gri/pretty/printer.go +++ b/usr/gri/pretty/printer.go @@ -1016,7 +1016,7 @@ func (P *Printer) DoVarDecl(d *ast.VarDecl) { } -func (P *Printer) DoFuncDecl(d *ast.FuncDecl) { +func (P *Printer) funcDecl(d *ast.FuncDecl, with_body bool) { P.Token(d.Pos_, token.FUNC); P.separator = blank; if recv := d.Recv; recv != nil { @@ -1032,7 +1032,7 @@ func (P *Printer) DoFuncDecl(d *ast.FuncDecl) { } P.Expr(d.Ident); P.Signature(d.Sig); - if d.Body != nil { + if with_body && d.Body != nil { P.separator = blank; P.Block(d.Body, true); } @@ -1040,6 +1040,11 @@ func (P *Printer) DoFuncDecl(d *ast.FuncDecl) { } +func (P *Printer) DoFuncDecl(d *ast.FuncDecl) { + P.funcDecl(d, true); +} + + func (P *Printer) DoDeclList(d *ast.DeclList) { if !*def || d.Tok == token.IMPORT || d.Tok == token.VAR { P.Token(d.Pos, d.Tok); @@ -1073,6 +1078,20 @@ func (P *Printer) Decl(d ast.Decl) { } +// ---------------------------------------------------------------------------- +// Interface + +func (P *Printer) Interface(p *ast.Program) { + for i := 0; i < len(p.Decls); i++ { + decl := p.Decls[i]; + // TODO use type switch + if fun, is_fun := decl.(*ast.FuncDecl); is_fun { + P.funcDecl(fun, false); + } + } +} + + // ---------------------------------------------------------------------------- // Program @@ -1110,7 +1129,8 @@ func Print(writer io.Write, html bool, prog *ast.Program) { if P.html { err := templ.Apply(text, "" : func() { /* P.Expr(prog.Ident); */ }, + "PACKAGE-->" : func() { P.Printf("%s", prog.Ident.Str); }, + "INTERFACE-->" : func() { P.Interface(prog); }, "BODY-->" : func() { P.Program(prog); }, }); if err != nil { diff --git a/usr/gri/pretty/template.html b/usr/gri/pretty/template.html index 4689bee64b..71126499b6 100644 --- a/usr/gri/pretty/template.html +++ b/usr/gri/pretty/template.html @@ -1,3 +1,4 @@ +