Update github.com/c2h5oh/datasize commit hash to 28bbd47 (#212)
Update github.com/c2h5oh/datasize commit hash to 28bbd47 Reviewed-on: https://kolaente.dev/vikunja/api/pulls/212
This commit is contained in:
27
vendor/github.com/c2h5oh/datasize/README.md
generated
vendored
27
vendor/github.com/c2h5oh/datasize/README.md
generated
vendored
@ -2,9 +2,10 @@
|
||||
|
||||
Golang helpers for data sizes
|
||||
|
||||
|
||||
### Constants
|
||||
|
||||
Just like `time` package provides `time.Second`, `time.Day` constants `datasize` provides:
|
||||
|
||||
* `datasize.B` 1 byte
|
||||
* `datasize.KB` 1 kilobyte
|
||||
* `datasize.MB` 1 megabyte
|
||||
@ -14,7 +15,9 @@ Just like `time` package provides `time.Second`, `time.Day` constants `datasize`
|
||||
* `datasize.EB` 1 exabyte
|
||||
|
||||
### Helpers
|
||||
Just like `time` package provides `duration.Nanoseconds() uint64 `, `duration.Hours() float64` helpers `datasize` has
|
||||
|
||||
Just like `time` package provides `duration.Nanoseconds() uint64 `, `duration.Hours() float64` helpers `datasize` has.
|
||||
|
||||
* `ByteSize.Bytes() uint64`
|
||||
* `ByteSize.Kilobytes() float4`
|
||||
* `ByteSize.Megabytes() float64`
|
||||
@ -26,7 +29,9 @@ Just like `time` package provides `duration.Nanoseconds() uint64 `, `duration.Ho
|
||||
Warning: see limitations at the end of this document about a possible precission loss
|
||||
|
||||
### Parsing strings
|
||||
|
||||
`datasize.ByteSize` implements `TextUnmarshaler` interface and will automatically parse human readable strings into correct values where it is used:
|
||||
|
||||
* `"10 MB"` -> `10* datasize.MB`
|
||||
* `"10240 g"` -> `10 * datasize.TB`
|
||||
* `"2000"` -> `2000 * datasize.B`
|
||||
@ -36,28 +41,34 @@ Warning: see limitations at the end of this document about a possible precission
|
||||
* `"1 gigabyte"` -> `1 * datasize.GB`
|
||||
|
||||
You can also do it manually:
|
||||
|
||||
```go
|
||||
var v datasize.ByteSize
|
||||
err := v.UnmarshalText([]byte("100 mb"))
|
||||
```
|
||||
|
||||
### Printing
|
||||
`Bytesize.String()` uses largest unit allowing an integer value:
|
||||
* `(102400 * datasize.MB).String()` -> `"100GB"`
|
||||
* `(datasize.MB + datasize.KB).String()` -> `"1025KB"`
|
||||
|
||||
Use `%d` format string to get value in bytes without a unit
|
||||
`Bytesize.String()` uses largest unit allowing an integer value:
|
||||
|
||||
* `(102400 * datasize.MB).String()` -> `"100GB"`
|
||||
* `(datasize.MB + datasize.KB).String()` -> `"1025KB"`
|
||||
|
||||
Use `%d` format string to get value in bytes without a unit.
|
||||
|
||||
### JSON and other encoding
|
||||
|
||||
Both `TextMarshaler` and `TextUnmarshaler` interfaces are implemented - JSON will just work. Other encoders will work provided they use those interfaces.
|
||||
|
||||
### Human readable
|
||||
|
||||
`ByteSize.HumanReadable()` or `ByteSize.HR()` returns a string with 1-3 digits, followed by 1 decimal place, a space and unit big enough to get 1-3 digits
|
||||
|
||||
* `(102400 * datasize.MB).String()` -> `"100.0 GB"`
|
||||
* `(datasize.MB + 512 * datasize.KB).String()` -> `"1.5 MB"`
|
||||
* `(102400 * datasize.MB).String()` -> `"100.0 GB"`
|
||||
* `(datasize.MB + 512 * datasize.KB).String()` -> `"1.5 MB"`
|
||||
|
||||
### Limitations
|
||||
|
||||
* The underlying data type for `data.ByteSize` is `uint64`, so values outside of 0 to 2^64-1 range will overflow
|
||||
* size helper functions (like `ByteSize.Kilobytes()`) return `float64`, which can't represent all possible values of `uint64` accurately:
|
||||
* if the returned value is supposed to have no fraction (ie `(10 * datasize.MB).Kilobytes()`) accuracy loss happens when value is more than 2^53 larger than unit: `.Kilobytes()` over 8 petabytes, `.Megabytes()` over 8 exabytes
|
||||
|
Reference in New Issue
Block a user