Package mold is a general library to help modify or set data within data structures and other objects.
How can this help me you ask, please see the examples here
- Go 1.18+
Use go get.
go get -u github.com/go-playground/mold/v4
Example | Description |
---|---|
simple | A basic example with custom function. |
full | A more real life example combining the usage of multiple packages. |
These functions modify the data in-place.
Name | Description |
---|---|
camel | Camel Cases the data. |
default | Sets the provided default value only if the data is equal to it's default datatype value. |
empty | Sets the field equal to the datatype default value. e.g. 0 for int. |
lcase | lowercases the data. |
ltrim | Trims spaces from the left of the data provided in the params. |
rtrim | Trims spaces from the right of the data provided in the params. |
set | Set the provided value. |
slug | Converts the field to a slug |
snake | Snake Cases the data. |
strip_alpha | Strips all ascii characters from the data. |
strip_alpha_unicode | Strips all unicode characters from the data. |
strip_num | Strips all ascii numeric characters from the data. |
strip_num_unicode | Strips all unicode numeric characters from the data. |
strip_punctuation | Strips all ascii punctuation from the data. |
title | Title Cases the data. |
tprefix | Trims a prefix from the value using the provided param value. |
trim | Trims space from the data. |
tsuffix | Trims a suffix from the value using the provided param value. |
ucase | Uppercases the data. |
ucfirst | Upper cases the first character of the data. |
Special Notes:
default
and set
modifiers are special in that they can be used to set the value of a field or underlying type information or attributes and both use the same underlying function to set the data.
Setting a Param will have the following special effects on data types where it's not just the value being set:
- Chan - param used to set the buffer size, default = 0.
- Slice - param used to set the capacity, default = 0.
- Map - param used to set the size, default = 0.
- time.Time - param used to set the time format OR value, default = time.Now(),
utc
= time.Now().UTC(), other tries to parse using RFC3339Nano and set a time value.
These functions obfuscate the specified types within the data for pii purposes.
Name | Description |
---|---|
emails | Scrubs multiple emails from data. |
Scrubs the data from and specifies the sha name of the same name. | |
text | Scrubs the data from and specifies the sha name of the same name. |
name | Scrubs the data from and specifies the sha name of the same name. |
fname | Scrubs the data from and specifies the sha name of the same name. |
lname | Scrubs the data from and specifies the sha name of the same name. |
- To use a comma(,) within your params replace use it's hex representation instead '0x2C' which will be replaced while caching.
I am definitely interested in the communities help in adding more scrubbers and modifiers. Please send a PR with tests, and preferably no extra dependencies, at lease until a solid base has been built.
Here is a list of software that compliments using this library post decoding.
- validator - Go Struct and Field validation, including Cross Field, Cross Struct, Map, Slice and Array diving.
- form - Decodes url.Values into Go value(s) and Encodes Go value(s) into url.Values. Dual Array and Full map support.
Distributed under MIT License, please see license file in code for more details.