From 0f9e3479592b47b25f93d590ba7ba732244f57d7 Mon Sep 17 00:00:00 2001 From: Andrew Gerrand Date: Mon, 29 Sep 2014 13:55:37 +1000 Subject: [PATCH] [release-branch.go1.3] go.tools/present: allow intentionally empty parameters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ««« CL 105070043 / 1e6e75afb0cd go.tools/present: allow intentionally empty parameters Fixes golang/go#7613. LGTM=r R=adg, r CC=golang-codereviews https://golang.org/cl/105070043 »»» LGTM=dsymonds R=dsymonds CC=golang-codereviews https://golang.org/cl/148300043 --- present/code.go | 2 ++ present/doc.go | 6 +++++- present/image.go | 5 +++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/present/code.go b/present/code.go index 2816a879..a1764356 100644 --- a/present/code.go +++ b/present/code.go @@ -238,6 +238,8 @@ func parseArgs(name string, line int, args []string) (res []interface{}, err err res[i] = v case '$': res[i] = "$" + case '_': + // Do nothing; '_' indicates an intentionally empty parameter. default: return nil, fmt.Errorf("%s:%d bad code argument %q", name, line, v) } diff --git a/present/doc.go b/present/doc.go index afd50e79..da71e8d3 100644 --- a/present/doc.go +++ b/present/doc.go @@ -168,10 +168,14 @@ The template uses the function "image" to inject picture files. The syntax is simple: 1 or 3 space-separated arguments. The first argument is always the file name. If there are more arguments, they are the height and width; -both must be present. +both must be present, or substituted with an underscore. +Replacing a dimension argument with the underscore parameter +preserves the aspect ratio of the image when scaling. .image images/betsy.jpg 100 200 + .image images/janet.jpg _ 300 + iframe: The function "iframe" injects iframes (pages inside pages). diff --git a/present/image.go b/present/image.go index 2bab429c..cfa2af9b 100644 --- a/present/image.go +++ b/present/image.go @@ -32,6 +32,11 @@ func parseImage(ctx *Context, fileName string, lineno int, text string) (Elem, e case 0: // no size parameters case 2: + // If a parameter is empty (underscore) or invalid + // leave the field set to zero. The "image" action + // template will then omit that img tag attribute and + // the browser will calculate the value to preserve + // the aspect ratio. if v, ok := a[0].(int); ok { img.Height = v }