summaryrefslogtreecommitdiff
path: root/spew/common.go
AgeCommit message (Collapse)Author
2017-06-27correct misspell on spew/common.go#L183Bill Q
2016-10-29Update license copyright years.Dave Collins
Several files had been updated since the listed years. This updates them accordingly.
2015-06-19Add support for limited mode without unsafe pkg.Dave Collins
This commit adds support for compiling spew without the unsafe package. When compiled without the unsafe package, some of the more advanced features such as invoking stringers on pointers from non-pointer variables and unexported struct fields are not available. By default, spew will be compiled in the limited mode for Google App Engine since the unsafe package is not available there. Additionally, spew can be compiled without the unsafe package manually by specifying the "disableunsafe" build tag. Finally, a new package-level constant named "UnsafeDisabled" has been exposed which can be used to programmatically determine if spew was compiled with access to the unsafe package.
2015-04-10Enable methods to sort map keys and spew itself as last resortTim Hockin
If enabled by flags, try to use methods to stringify map keys and sort on that. If we can't use primitive sorting and we can't use methods, we can still fall back on spew itself. If SpewKeys is enabled, use Sprintf("%#v") to generate a string and sort by that.
2015-02-23Add support for sorting keys that are arrays.Anaminus
2014-11-15Improve unsafe reflect value handling.Dave Collins
This commit modifies the unsafeReflectValue function to recognize reference types even when the indirection flag is not set for the series of golang commits after ecccf07e7f9d and before 82f48826c6c7 which introduced the additional scalar field in the reflect.Value struct. That additional field has since been removed, but the intention of this code is to work properly across all Go versions and other packages make use of the logic. Thanks to @shurcooL for providing example code which wasn't working properly with the function when it was exported and therefore being called in ways which spew itself does not.
2014-10-24Add logic to deal with reflect pkg changes on tip.Dave Collins
This commit adds logic to gracefully handle the new internal reflect.Value structure on tip as of golang commit 82f48826c6c7 as well as the internal reflect.Value flag bit changes as of golang commit 90a7c3c86944. It accomplishes this by doing some inspection at init time and choosing the appropriate offsets and flag positions accordingly. There was some previous logic which dealt with a similar issue for golang commit ecccf07e7f9d. However, since the more recent commits essentially reverted the change and also modify the flag bit positions, it made more sense to rework the detection logic. In particular, the new logic examines the size of the reflect.Value struct to determine the difference and extracts the kind from the flags to determine if the flags have been changed. As a result, this commit allows spew to work properly with tip all the back to Go 1.0.
2014-05-05Dump non-zero len and cap for applicable types.Josh Rickmar
Closes #16.
2014-01-08Add logic to deal with reflect pkg changes on tip.Dave Collins
This commit adds logic to gracefully handle the new internal reflect.Value structure on tip as of golang commit ecccf07e7f9d. It accomplishes this by doing some inspection at init time and choosing the appropriate offsets as well as modifying which offset is used for the value accordingly. As a result, this allows spew to work properly with both the current release version of Go as well as tip. Fixes #15.
2013-11-14Correct valuesSorter.Less function for uintptr.Dave Collins
The function sort be sorting the uintptr itself, not the address of it. Also, the previous code could easily panic on an unaddressable reflect.Value since it was trying to take an address.
2013-11-14Reorder Less function cases to consistent order.Dave Collins
2013-11-14Reorganize the new map key sorting functionality.Dave Collins
This commit moves the new code related to sorting reflect.Value items into common.go since it is accessed by both the formatter and the dumper. It also adds comments to the new functions and unexports SortValues since it should be an internal function only.
2013-03-08Dump byte arrays and slices like hexdump -C.Dave Collins
This commit modifies the Dump family functions to output byte arrays and slices like hexdump -C as specified in issue #9.
2013-03-08Modify printInt and printUint to accept base.Dave Collins
This paves the way to improve how byte arrays are output as well as increases the flexibily of the functions.
2013-03-03Cleanup documentation on new ContinueOnMethod code.Dave Collins
This commit expands on TShadwell's work attached to issue #8. It rounds out the documentation for the new option.
2013-02-26revert previous mis-commits, add ability to allow deeper pretty-printing ↵Thomas NJ Shadwell
after an error or Stringer interface is encountered.
2013-01-20Invoke String/Error methods on addressable vals.Dave Collins
If a type implements a Stringer or error interface with a pointer receiver and the value being formatted is addressable, the interface should be invoked even when the DisablePointerMethods option is set. DisablePointerMethods is only intended to prevent the potentially unsafe action of stepping around type-safety restriction to invoke a Stringer or error interface with a pointer to an unaddressable value.
2013-01-17Implement support for %#v and %#+v in Formatter.Dave Collins
This commit implements feature request #3. In particular, it allows the formatter to respond to %#v and %#+v. The # flag (%#v) adds type information to the output and the combination of the # and + flags (%#+v) adds both type information and pointer information. This allows the consumer a choice between displaying types, pointer information, or both.
2013-01-16Fix a comment and a apply few gofmt changes.Dave Collins
2013-01-14Use writer directly in formatter.Dave Collins
Write directly to the fmt.State output writer to avoid the overhead of a buffer in the formatter code.
2013-01-10Add config pointers to format and dump states.Dave Collins
This paves the way to support individual configuration options through a separate type while still providing the simple global config and package level methods.
2013-01-08Initial implementation.Dave Collins