github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/builtins/core/arraytools/addheading.go (about) 1 package arraytools 2 3 import ( 4 "fmt" 5 6 "github.com/lmorg/murex/lang" 7 "github.com/lmorg/murex/lang/types" 8 ) 9 10 func init() { 11 lang.DefineMethod("addheading", cmdAddHeading, types.Unmarshal, types.Marshal) 12 } 13 14 func cmdAddHeading(p *lang.Process) error { 15 dt := p.Stdin.GetDataType() 16 p.Stdout.SetDataType(dt) 17 18 if err := p.ErrIfNotAMethod(); err != nil { 19 return err 20 } 21 22 v, err := lang.UnmarshalData(p, dt) 23 if err != nil { 24 return err 25 } 26 27 switch t := v.(type) { 28 case [][]string: 29 v = append([][]string{p.Parameters.StringArray()}, t...) 30 31 default: 32 return fmt.Errorf("this doesn't appear to be a table or I don't know how to tabulate `%T`", v) 33 } 34 35 b, err := lang.MarshalData(p, dt, v) 36 if err != nil { 37 return err 38 } 39 40 _, err = p.Stdout.Write(b) 41 return err 42 }