donutloop and GitHub
c1b7500bcb
List: add cap ( #51 )
...
Cap return cap of the inner data
2022-07-25 20:50:31 +08:00
donutloop and GitHub
3d7600a9e4
list: add DeleteIf method ( #50 )
...
DeleteIf delete all satisfying f(data[i]), returns count of removed elements
2022-07-23 18:52:29 +08:00
donutloop and GitHub
0299c454ab
list: add sublist method ( #49 )
...
SubList returns a sub list of the original list between the specified fromIndex, inclusive, and toIndex, exclusive.
2022-07-23 15:00:04 +08:00
donutloop and GitHub
ac3baac5c6
list: Add LastIndexOfFunc and IndexOfFunc method ( #48 )
...
* LastIndexOfFunc returns the index of the last occurrence of the value in this list satisfying f(data[i])
* IndexOfFunc returns the first index satisfying f(v)
2022-07-22 10:04:31 +08:00
donutloop and GitHub
a82b5dd206
list: add LastIndexOf ( #46 )
...
Add LastIndexOf method too List and fix doc
LastIndexOf returns the index of the last occurrence of the value in this list.
if not found return -1
2022-07-21 15:19:18 +08:00
donutloop and GitHub
336e454ce7
maputil: IsDisjoint ( #43 )
...
Verifies map a and map b have no keys in common.
if it returns true then the maps are disjoint otherwise a join in some form available
2022-07-20 17:26:54 +08:00
donutloop and GitHub
ecf325a06c
maputil: preallocate len and cap for keys and values slice ( #41 )
...
Length of keys and values is know in advance, use this knowledge to preallocate memory.
Space usage increases by const factor
2022-07-19 15:04:19 +08:00
donutloop and GitHub
2878d389c8
error: Add unwrap ( #24 )
...
Add a unwrap func helper
* Unwrap if err is nil then it returns a valid value otherwise it panics
2022-01-22 21:25:31 +08:00
donutloop and GitHub
f147f78a41
Slice: sort from v2 branch ( #22 )
...
ref: https://github.com/duke-git/lancet/commit/f1d7154179a4d94472bee9703097d78e6c37e9a7
2022-01-11 20:13:25 +08:00
donutloop and GitHub
f1d7154179
refactor: sort ( #21 )
...
Removed reverse func because it use to much cpu and add test cas for asc sort
2022-01-11 19:24:36 +08:00
donutloop and GitHub
c906d8aea7
Slice: group by and without v2 ( #20 )
...
* Slice: group by and without v2
Migrate from reflection to generic
* update doc
2022-01-11 18:11:01 +08:00
donutloop and GitHub
24c0d95112
Slice: reverse and shufffle v2 ( #19 )
...
* Slice: reverse and shufffle v2
Migrate from reflection to generic form
Note: after migration, old reverse must be removed
* Suffle test: remove reflection calls
* Reverse test: change name of test
2022-01-10 19:52:23 +08:00
donutloop and GitHub
7b9a8a55e7
Slice: CountV2 ( #18 )
...
Use generic instead of reflection
2022-01-09 22:15:03 +08:00
donutloop and GitHub
30d798366b
Slice: find v2 ( #17 )
...
* If slice len is zero then return false
* Convert find to generic form.
* If return T is nil then no items matched the predicate func
2022-01-07 20:19:27 +08:00
donutloop and GitHub
3905c0bde1
Slice: Add count func ( #15 )
...
Returns the count of matched elements
2022-01-06 20:32:14 +08:00
donutloop and GitHub
4aef9d6d22
Slice: Add none func ( #13 )
...
Returns true whether no elements of this slice match the provided predicate
func. Negated form of Every func
2022-01-05 19:38:14 +08:00
donutloop and GitHub
bc39b0887b
Filter: remove second loop and indexes slice ( #12 )
...
Use less memory and cpu resources to filter out elements from the slice.
2022-01-03 20:10:15 +08:00
donutloop and GitHub
f15131f032
Slice: find nothing case ( #11 )
...
The current behavior can result into wired edge cases.
**Current behavior**
if find was unsuccessfully then it will return the first element of the
slice
**Desired behavior**
if find was unsuccessfully then it should return negative ok and a none
value
2022-01-02 22:05:27 +08:00
donutloop and GitHub
b4a49fccfd
Slice: Add GroupBy func ( #10 )
...
Group by: split slice into two groups, applies on each slice element a
predicate func to categorize this element.
Changes
* Add groub by func
* Add test case for this func
2022-01-02 21:24:56 +08:00
donutloop and GitHub
147c1625b5
Slice: Optimize slice func tools ( #9 )
...
IntSlice and StringSlice: preallocate memory up front for output slice.
Instead returning a error throw a panic because most likely it's a
programming error.
Contain: rename slice to iterableType and add default case for type
mismatches
2021-12-31 10:15:38 +08:00
donutloop and GitHub
613785b07c
function: catch earlier programming error ( #8 )
...
Place at first line of the function body a function type safe guard
check.
2021-12-30 20:22:00 +08:00
donutloop and GitHub
0b0eb695e8
datetime: optimized func calls ( #7 )
...
Replace time parsing calls with less expensive operations
2021-12-30 10:29:10 +08:00
donutloop and GitHub
b106c428ae
Every: use int counter ( #6 )
...
Use counter to verify all elements passed the perdicate func.
Replace slice of indexes with int counter.
2021-12-29 09:51:50 +08:00
donutloop and GitHub
ab012f2545
LowerFirst: use slicing and utf8 func tools ( #5 )
...
Replace looping with slicing and utf8 func tools operations.
2021-12-28 19:25:44 +08:00
donutloop and GitHub
3919160e38
Optimized: Capitalize ( #4 )
...
* Use unicode.ToUpper func to convert first letter in string to upper case
letter.
* Preallocate memory with correct length and cap because the final
string is not changing.
2021-12-28 10:04:15 +08:00
donutloop and GitHub
9ad9d1805b
Regex validators: Precompile all known regex patterns ( #3 )
...
Reduce executions time of pattern matching, regex patterns are expensive to
compile at runtime.
2021-12-26 21:16:20 +08:00
Marcel Edmund Franke
578b1bba65
Some: allocate slice to keep track unused indexes is not necessary
...
Waste of memory for those unused indexes. It got replaced by a simple
boolean to keep track of it.
2021-12-25 13:04:03 +01:00