Cleanup documentation on new ContinueOnMethod code.

This commit expands on TShadwell's work attached to issue #8.  It
rounds out the documentation for the new option.
This commit is contained in:
Dave Collins 2013-03-03 12:23:56 -06:00
parent 6d6046a9de
commit 9dfc238865
4 changed files with 22 additions and 10 deletions

View File

@ -109,6 +109,10 @@ options. See the ConfigState documentation for more details.
Disables invocation of error and Stringer interface methods on types
which only accept pointer receivers from non-pointer variables.
Pointer method invocation is enabled by default.
* ContinueOnMethod
Enables recursion into types after invoking error and Stringer interface
methods. Recursion after method invocation is disabled by default.
```
## License

View File

@ -151,10 +151,10 @@ func handleMethods(cs *ConfigState, w io.Writer, v reflect.Value) (handled bool)
case error:
defer catchPanic(w, v)
if cs.ContinueOnMethod {
w.Write(append(openParenBytes, []byte(iface.Error())...))
w.Write(openParenBytes)
w.Write([]byte(iface.Error()))
w.Write(closeParenBytes)
w.Write(spaceBytes)
return false
}
@ -164,10 +164,10 @@ func handleMethods(cs *ConfigState, w io.Writer, v reflect.Value) (handled bool)
case fmt.Stringer:
defer catchPanic(w, v)
if cs.ContinueOnMethod {
w.Write(append(openParenBytes, []byte(iface.String())...))
w.Write(openParenBytes)
w.Write([]byte(iface.String()))
w.Write(closeParenBytes)
w.Write(spaceBytes)
return false
}
w.Write([]byte(iface.String()))

View File

@ -63,11 +63,14 @@ type ConfigState struct {
// inside these interface methods.
DisablePointerMethods bool
//ContinueOnMethod specifies whether recursion should stop once
//a Stringer or an error interface is encountered.
// ContinueOnMethod specifies whether or not recursion should continue once
// a custom error or Stringer interface is invoked. The default, false,
// means it will print the results of invoking the custom error or Stringer
// interface and return immediately instead of continuing to recurse into
// the internals of the data type.
//
//It defaults to false, meaning that it does not pretty-print
//the internals of Stringers or errors.
// NOTE: This flag does not have any effect if method invocation is disabled
// via the DisableMethods or DisablePointerMethods options.
ContinueOnMethod bool
}
@ -255,10 +258,11 @@ func (c *ConfigState) convertArgs(args []interface{}) (formatters []interface{})
// NewDefaultConfig returns a ConfigState with the following default settings.
//
// Indent: " "
// Indent: " "
// MaxDepth: 0
// DisableMethods: false
// DisablePointerMethods: false
// DisablePointerMethods: false
// ContinueOnMethod: false
func NewDefaultConfig() *ConfigState {
return &ConfigState{Indent: " "}
}

View File

@ -87,6 +87,10 @@ The following configuration options are available:
which only accept pointer receivers from non-pointer variables.
Pointer method invocation is enabled by default.
* ContinueOnMethod
Enables recursion into types after invoking error and Stringer interface
methods. Recursion after method invocation is disabled by default.
Dump Usage
Simply call spew.Dump with a list of variables you want to dump: