()
| 215 | } |
| 216 | |
| 217 | func (d ShellDoc) String() string { |
| 218 | width := getViewWidth() |
| 219 | |
| 220 | sb := new(strings.Builder) |
| 221 | for i, grp := range d.Groups { |
| 222 | body := grp.Body |
| 223 | |
| 224 | if grp.Title != "" { |
| 225 | sb.WriteString(indent.String(toUpperBold(grp.Title), grp.Indent)) |
| 226 | sb.WriteString("\n") |
| 227 | |
| 228 | // Indent body if there's a title |
| 229 | var i uint |
| 230 | if !strings.HasPrefix(body, strings.Repeat(" ", int(helpIndent))) { |
| 231 | i = helpIndent + grp.Indent |
| 232 | } else if grp.Indent > 0 && !strings.HasPrefix(body, strings.Repeat(" ", int(helpIndent+grp.Indent))) { |
| 233 | i = grp.Indent |
| 234 | } |
| 235 | if i > 0 { |
| 236 | wrapped := wordwrap.String(grp.Body, width-int(i)) |
| 237 | body = indent.String(wrapped, i) |
| 238 | } |
| 239 | } |
| 240 | sb.WriteString(body) |
| 241 | if !strings.HasSuffix(body, "\n") { |
| 242 | sb.WriteString("\n") |
| 243 | } |
| 244 | // Extra new line between groups |
| 245 | if i < len(d.Groups)-1 { |
| 246 | sb.WriteString("\n") |
| 247 | } |
| 248 | } |
| 249 | return sb.String() |
| 250 | } |
| 251 | |
| 252 | // FunctionUseLine returns the usage line fine for a function |
| 253 | func (h *shellCallHandler) FunctionUseLine(md *moduleDef, fn *modFunction) string { |
no test coverage detected