github.com/jgarto/itcv@v0.0.0-20180826224514-4eea09c1aa0d/_vendor/src/golang.org/x/tools/present/image.go (about) 1 // Copyright 2012 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package present 6 7 import ( 8 "fmt" 9 "strings" 10 ) 11 12 func init() { 13 Register("image", parseImage) 14 } 15 16 type Image struct { 17 URL string 18 Width int 19 Height int 20 } 21 22 func (i Image) TemplateName() string { return "image" } 23 24 func parseImage(ctx *Context, fileName string, lineno int, text string) (Elem, error) { 25 args := strings.Fields(text) 26 img := Image{URL: args[1]} 27 a, err := parseArgs(fileName, lineno, args[2:]) 28 if err != nil { 29 return nil, err 30 } 31 switch len(a) { 32 case 0: 33 // no size parameters 34 case 2: 35 // If a parameter is empty (underscore) or invalid 36 // leave the field set to zero. The "image" action 37 // template will then omit that img tag attribute and 38 // the browser will calculate the value to preserve 39 // the aspect ratio. 40 if v, ok := a[0].(int); ok { 41 img.Height = v 42 } 43 if v, ok := a[1].(int); ok { 44 img.Width = v 45 } 46 default: 47 return nil, fmt.Errorf("incorrect image invocation: %q", text) 48 } 49 return img, nil 50 }