Commit Graph

64 Commits

Author SHA1 Message Date
skyjerry 6e9731d50e Title: Fix ToUint64E function in cast library for Go
Detail:
The ToUint6E4 function in the Go cast library was fixed to correctly handle strings that overflow the maximum value of int64.

Previously, the function incorrectly returned zero for these input values because it was using strconv.ParseInt internally, which doesn't handle values greater than the max int64. The fix replaces the use of strconv.ParseInt with strconv.ParseUint.
2024-03-12 22:17:08 +08:00
Bjørn Erik Pedersen bbed5559a5 Pull the 2006-01-02 layout to the top when checking
The current top 2 formats are, from some checks I've done, 2 dominant formats used in Hugo projects.

Checking these first has a big effect:

```bash

name                  old time/op    new time/op    delta
CommonTimeLayouts-10    1.45µs ± 0%    0.33µs ± 1%  -77.45%  (p=0.029 n=4+4)

name                  old alloc/op   new alloc/op   delta
CommonTimeLayouts-10    1.55kB ± 0%    0.18kB ± 0%  -88.14%  (p=0.029 n=4+4)

name                  old allocs/op  new allocs/op  delta
CommonTimeLayouts-10      38.0 ± 0%       6.0 ± 0%  -84.21%  (p=0.029 n=4+4)
```

See https://github.com/gohugoio/hugo/issues/10942
2023-05-15 10:28:46 +02:00
yveshield 557a6a2fb7
Add more integer to boolean conversions
Signed-off-by: Yveshield <yveshield@gmail.com>
2022-09-03 13:22:36 +08:00
Bjørn Erik Pedersen 2b0eb0f724 Misc number fixes
* Allow strings/json.Number with just zeroes after the decmial point to be converted to integer`
* Allow nil in ToFloat*
* Remove some test duplication
* replace testify with quicktest
* Enable integer and float conversion of time.Weekday values

Fixes #139
Fixes #141
2022-05-11 15:55:47 +02:00
yveshield 408043c8fa Add support for json.Number
Closes #115
Closes #61
2022-05-11 15:55:47 +02:00
Kento Tsuji 88075729b0
Fix date parse for "2016-03-06 15:28:01 +0900" 2021-08-15 19:48:01 +02:00
Bjørn Erik Pedersen 22b2b540ce
Adjust timezone logic 2021-07-27 13:05:07 +02:00
Heewa Barfchin e4dda5f5f1
Add ToTimeInDefaultLocation/E
Go's time parsing uses UTC when the format doesn't have a tiemzone, and
has even weirder behavior when it has a zone name but no numeric offset.
A caller to `cast.ToTime` won't know if the returned time was explicitly
in UTC, or defaulted there, so the caller cannot fix it. These new
functions allow a user to supply a different timezone to default to,
with nil using the local zone.
2021-07-27 13:05:07 +02:00
Paco Preciado Mendoza 8d17101741
Convert error slice to string slice
* feat: added test case for error slice to parse to string

* feat: added handler to convert an error slice to string slice
2020-07-23 23:45:38 +02:00
zheng 580a25aa7d feat: updating ToStringSliceE to support some other slices 2020-07-10 19:32:20 +02:00
K4rian 1ffadf5510 Fix uint, uint8, uint16, uint32 and uint64 conversion in ToStringE function. 2019-12-18 08:28:14 +01:00
Bjørn Erik Pedersen 8c9545af88 Fix Travis build 2018-10-25 00:59:28 +02:00
Theofanis Despoudis 4dd38b8b57 Add support for map of int64 and map of int 2018-10-24 20:00:14 +02:00
Ben Orchard 8934aa3ddd StringToDate: +more RFC3339 forms without TZ colon
Adds a form to handle the common format `strftime("%FT%T%z")`, which
omits the (optional) colon from the timezone. Also adds a matching
T-omitted form.
2018-10-21 23:25:45 +02:00
Xavier Vello 9ebc15c905 Add support for maps defined as a json string 2018-02-14 18:49:49 +01:00
Roman Volosatovs acbeb36b90 Add ToDurationSlice() 2017-04-13 11:15:03 +02:00
Cameron Moore 816e3433fe Small simplifications 2017-03-04 12:22:30 +01:00
Cameron Moore 1ad7d3c5ed Use single defined error for negatives 2017-03-03 22:17:07 +01:00
Cameron Moore 758cd85768 Error on unsigned conversions of negative values 2017-03-03 22:17:07 +01:00
Cameron Moore d37435d953 Add additional type conversions
Adds float32, uint, uint64, uint32, uint16, and uint8 throughout.

Fixes #33
2017-03-03 22:17:07 +01:00
Cameron Moore 4f1683a224 Update and standardize error messages 2017-03-03 18:07:04 +01:00
Cameron Moore 1dfd38810f Fix issues found by gosimple 2017-03-03 17:34:16 +01:00
Cameron Moore e71c5a68f1 Update godoc comments 2017-03-03 16:45:07 +01:00
chyeh e4f8127058 Add `ToInt8`, `ToInt16` and `ToInt32` 2017-03-03 15:54:08 +01:00
Cameron Moore f820543c35 Fix regression in StringToDate
In commit d1139ba, I removed a date format for "RFC3339 without T" that
I misidentified as a reduntant format.  This commit adds it back with a
test.
2017-02-21 16:23:02 +01:00
Cameron Moore d1139bab1c Add missing time formats and tests
Add missing time formats, remove duplicate formats, and test all
supported formats.
2017-01-28 19:09:31 +07:00
Cameron Moore 56a7ecbeb1 Add Unix epoch support to ToTimeE 2016-12-25 13:56:48 +01:00
emacsist 24b6558033 Add "yyyy-MM-dd HH:mm:ss" string format 2016-11-16 02:33:54 +01:00
Bjørn Erik Pedersen 2580bc98dc Remove expensive TRACE logging
```
benchmark              old ns/op     new ns/op     delta
BenchmarkTooBool-4     2671          67.8          -97.46%

benchmark              old allocs     new allocs     delta
BenchmarkTooBool-4     3              1              -66.67%

benchmark              old bytes     new bytes     delta
BenchmarkTooBool-4     49            1             -97.96%
```
2016-09-26 10:42:49 +02:00
M@ 60e7a69a42 Add ToBoolSlice()
Fixes #1
2016-09-19 22:26:41 +02:00
Chih-Hung Yeh fa673d63c1 Fixe `ToDurationE()`
It used to return zero valeus in some cases. The details are described
in [this issue](https://github.com/spf13/viper/issues/203). More cases
were also added in the unit test `TestToDuration()`
2016-09-19 22:24:24 +02:00
Feng 4532b05430 FIx ToStringMapStringSliceE
* Update caste.go

bug fix

json config, for example:
{ "test" : ["abc", "123"] }

* update test
2016-09-19 22:22:46 +02:00
Bjørn Erik Pedersen e31f36ffc9 Log the To* invocations as TRACE
It gets very chatty at DEBUG.
2016-07-30 11:20:37 +02:00
Bjørn Erik Pedersen 27b586b42e Add support for the other html template types 2016-03-14 20:20:28 +01:00
Matt Keller 0eed3d1b35 Add a ToInt64() and necessary plumbing 2016-03-14 20:19:19 +01:00
Matt Keller 7c7add0129 Add ability to cast int64's to strings
Resolves #18
2016-03-14 20:18:57 +01:00
Cyrill Schumacher ee7b3e0353 Add bool case to ToStringE 2015-12-18 08:52:19 -05:00
Tyler Power 6770a32f65 Add int64 and float64 type coercion in ToDuration 2015-11-23 09:21:13 +13:00
Jeff Hodges ee815aaf95 add date formats found in jekyll posts
The first added is definitely in jekyll. The second, I believe, happens,
too.
2015-08-03 12:37:15 -04:00
jackspirou 1c4ba956f5 adding back default statements and adding comments and cleanups 2015-08-03 12:36:12 -04:00
jackspirou d7ba796a5f adding unit tests for ToStringMapString and ToStringMapStringSlice methods 2015-08-03 12:36:12 -04:00
jackspirou 7ed57e5c41 adding ToStringMapStringSlice method 2015-08-03 12:36:12 -04:00
bep 893a4154d1 Add support for template.URL
Fixes #13
2015-08-03 12:35:39 -04:00
bep 4d07383ffe Make ToIntSliceE more flexible
Now it accepts any slice or array type that contains a type supported by ToIntE.

[close #12]
2015-05-08 15:17:42 -04:00
bep 2c4fdb5416 Add ToIntSlice 2015-02-24 12:08:11 -05:00
Chance Zibolski 3cc9db95ac Add ToDuration 2015-02-24 12:07:25 -05:00
Chance Zibolski dace11d497 Use strings.Fields 2015-02-24 12:06:34 -05:00
Chance Zibolski b24b4ff690 ToStringSliceE: Support string values 2015-02-24 12:06:34 -05:00
spf13 2318c5caf2 Add support for pointers to basic types 2015-01-01 00:23:46 -05:00
spf13 421411cf35 Add proper support for error -> string and Stringer -> string. 2015-01-01 00:18:13 -05:00