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.