Documentation
¶
Overview ¶
Example (StringPointerBasic) ¶
Estos ejemplos ilustran cómo usar los punteros a strings para evitar asignaciones adicionales
// Creamos una variable string que queremos modificar myText := "héllô wórld" // En lugar de crear una nueva variable con el resultado, // modificamos directamente la variable original usando Apply() Convert(&myText).Tilde().ToLower().Apply() // La variable original ha sido modificada fmt.Println(myText)
Output: hello world
Example (StringPointerCamelCase) ¶
// Ejemplo de uso con múltiples transformaciones originalText := "Él Múrcielago Rápido" // Las transformaciones modifican la variable original directamente // usando el método Apply() para actualizar el puntero Convert(&originalText).Tilde().CamelLow().Apply() fmt.Println(originalText)
Output: elMurcielagoRapido
Example (StringPointerEfficiency) ¶
// En aplicaciones de alto rendimiento, reducir asignaciones de memoria // puede ser importante para evitar la presión sobre el garbage collector // Método tradicional (crea nuevas asignaciones de memoria) traditionalText := "Texto con ACENTOS" processedText := Convert(traditionalText).Tilde().ToLower().String() fmt.Println(processedText) // Método con punteros (modifica directamente la variable original) directText := "Otro TEXTO con ACENTOS" Convert(&directText).Tilde().ToLower().Apply() fmt.Println(directText)
Output: texto con acentos otro texto con acentos
Index ¶
- Constants
- Variables
- func Contains(Conv, search string) bool
- func Count(Conv, search string) int
- func Fmt(format string, args ...any) string
- func Fprintf(w io.Writer, format string, args ...any) (n int, err error)
- func Index(s, substr string) int
- func LastIndex(s, substr string) int
- func OutLang(l ...any) string
- func Sscanf(src string, format string, args ...any) (n int, err error)
- type Conv
- func (t *Conv) Apply()
- func (c *Conv) Bool() (bool, error)
- func (c *Conv) Bytes() []byte
- func (t *Conv) CamelLow() *Conv
- func (t *Conv) CamelUp() *Conv
- func (t *Conv) Capitalize() *Conv
- func (c *Conv) Error() string
- func (c *Conv) Float32() (float32, error)
- func (c *Conv) Float64() (float64, error)
- func (c *Conv) GetKind() Kind
- func (c *Conv) Int(base ...int) (int, error)
- func (c *Conv) Int32(base ...int) (int32, error)
- func (c *Conv) Int64(base ...int) (int64, error)
- func (c *Conv) Join(sep ...string) *Conv
- func (c *Conv) KV(delimiters ...string) (string, error)
- func (c *Conv) Quote() *Conv
- func (t *Conv) Repeat(n int) *Conv
- func (c *Conv) Replace(oldAny, newAny any, n ...int) *Conv
- func (c *Conv) Reset() *Conv
- func (t *Conv) Round(decimals int, down ...bool) *Conv
- func (t *Conv) SnakeLow(sep ...string) *Conv
- func (t *Conv) SnakeUp(sep ...string) *Conv
- func (c *Conv) Split(separator ...string) []string
- func (c *Conv) String() string
- func (c *Conv) StringErr() (out string, err error)
- func (c *Conv) StringType() (string, MessageType)
- func (c *Conv) TagValue(key string) (string, bool)
- func (t *Conv) Thousands(anglo ...bool) *Conv
- func (t *Conv) Tilde() *Conv
- func (t *Conv) ToLower() *Conv
- func (t *Conv) ToUpper() *Conv
- func (c *Conv) TrimPrefix(prefix string) *Conv
- func (c *Conv) TrimSpace() *Conv
- func (c *Conv) TrimSuffix(suffix string) *Conv
- func (t *Conv) Truncate(maxWidth any, reservedChars ...any) *Conv
- func (t *Conv) TruncateName(maxCharsPerWord, maxWidth any) *Conv
- func (c *Conv) Uint(base ...int) (uint, error)
- func (c *Conv) Uint32(base ...int) (uint32, error)
- func (c *Conv) Uint64(base ...int) (uint64, error)
- func (c *Conv) Write(v any) *Conv
- type Kind
- type LocStr
- type MessageType
Examples ¶
Constants ¶
const ( // Group 1: Core Essential Languages (Maximum Global Reach) EN lang = iota // 0 - English (default) ES // 1 - Spanish ZH // 2 - Chinese HI // 3 - Hindi AR // 4 - Arabic // Group 2: Extended Reach Languages (Europe & Americas) PT // 5 - Portuguese FR // 6 - French DE // 7 - German RU // 8 - Russian )
Variables ¶
var D = struct { // A All LocStr // "all" Allowed LocStr // "allowed" Arrow LocStr // "arrow" Argument LocStr // "argument" Assign LocStr // "assign" Assignable LocStr // "assignable" // B BackingUp LocStr // "backing up" Be LocStr // "be" Binary LocStr // "binary" // C Call LocStr // "call" Can LocStr // "can" Cannot LocStr // "cannot" Cancel LocStr // "cancel" Changed LocStr // "changed" Character LocStr // "character" Coding LocStr // "coding" Compilation LocStr // "compilation" Configuration LocStr // "configuration" Connection LocStr // "connection" Content LocStr // "content" Create LocStr // "create" // D Debugging LocStr // "debugging" Decimal LocStr // "decimal" Delimiter LocStr // "delimiter" Digit LocStr // "digit" Down LocStr // "down" // E Edit LocStr // "edit" Element LocStr // "element" Empty LocStr // "empty" End LocStr // "end" Exceeds LocStr // "exceeds" Execute LocStr // "execute" // F Failed LocStr // "failed" Field LocStr // "field" Fields LocStr // "fields" Files LocStr // "files" Format LocStr // "format" Found LocStr // "found" // H Handler LocStr // "handler" // I Icons LocStr // "icons" Insert LocStr // "insert" Left LocStr // "left" Implemented LocStr // "implemented" In LocStr // "in" Index LocStr // "index" Information LocStr // "information" Input LocStr // "input" Install LocStr // "install" Installation LocStr // "installation" Invalid LocStr // "invalid" // K Keyboard LocStr // "keyboard" // L Language LocStr // "language" Line LocStr // "line" // Msg Maximum LocStr // "maximum" Method LocStr // "method" Missing LocStr // "missing" Mismatch LocStr // "mismatch" Mode LocStr // "mode" Modes LocStr // "modes" More LocStr // "more" Move LocStr // "move" Must LocStr // "must" // N Negative LocStr // "negative" Nil LocStr // "null" NonNumeric LocStr // "non-numeric" Not LocStr // "not" NotOfType LocStr // "not of type" Number LocStr // "number" Numbers LocStr // "numbers" // O Of LocStr // "of" Options LocStr // "options" Out LocStr // "out" Overflow LocStr // "overflow" // P Page LocStr // "page" Pointer LocStr // "pointer" Point LocStr // "point" Preparing LocStr // "preparing" Production LocStr // "production" Provided LocStr // "provided" // Q Quit LocStr // "quit" // R Range LocStr // "range" Read LocStr // "read" Required LocStr // "required" Right LocStr // "right" Round LocStr // "round" // S Seconds LocStr // "seconds" Session LocStr // "session" Slice LocStr // "slice" Space LocStr // "space" Status LocStr // "status" String LocStr // "string" Shortcuts LocStr // "shortcuts" Supported LocStr // "supported" Switch LocStr // "switch" Switching LocStr // "switching" Sync LocStr // "sync" System LocStr // "system" // Translate Tab LocStr // "tab" Test LocStr // "test" Testing LocStr // "testing" Text LocStr // "text" Time LocStr // "time" To LocStr // "to" Type LocStr // "type" // U Unexported LocStr // "unexported" Unknown LocStr // "unknown" Unsigned LocStr // "unsigned" Up LocStr // "up" Use LocStr // "use" // V Valid LocStr // "valid" Validating LocStr // "validating" Value LocStr // "value" Visible LocStr // "visible" // Z Zero LocStr // "zero" }{}/* 114 elements not displayed */
Global dictionary instance - populated with all translations using horizontal format Language order: EN, ES, ZH, HI, AR, PT, FR, DE, RU
By using an anonymous struct, we define and initialize the dictionary in a single step, avoiding the need for a separate 'type dictionary struct' declaration. The usage API (e.g., D.Argument) remains unchanged.
var K = struct { Invalid Kind Bool Kind Int Kind Int8 Kind Int16 Kind Int32 Kind Int64 Kind Uint Kind Uint8 Kind Uint16 Kind Uint32 Kind Uint64 Kind Uintptr Kind Float32 Kind Float64 Kind Complex64 Kind Complex128 Kind Array Kind Chan Kind Func Kind Interface Kind Map Kind Pointer Kind Slice Kind String Kind Struct Kind UnsafePointer Kind }{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, }
Kind exposes the Kind constants as fields for external use, while keeping the underlying type and values private.
var Msg = struct { Normal MessageType Info MessageType Error MessageType Warning MessageType Success MessageType }{0, 1, 2, 3, 4}
Msg exposes the MessageType constants for external use, following TinyString naming convention.
Functions ¶
func Contains ¶ added in v0.0.8
Contains checks if the string 'search' is present in 'Conv'. Uses Index internally for efficient single-pass detection.
Examples:
Contains("hello world", "world") // returns true Contains("hello world", "xyz") // returns false Contains("", "test") // returns false (empty string) Contains("test", "") // returns false (empty search) Contains("data\x00more", "\x00") // returns true (null byte) Contains("Case", "case") // returns false (case sensitive)
func Count ¶ added in v0.1.6
Count checks how many times the string 'search' is present in 'Conv'. Uses Index internally for consistency and maintainability.
Examples:
Count("abracadabra", "abra") // returns 2 Count("hello world", "l") // returns 3 Count("golang", "go") // returns 1 Count("test", "xyz") // returns 0 (not found) Count("anything", "") // returns 0 (empty search) Count("a\x00b\x00c", "\x00") // returns 2 (null bytes)
func Fmt ¶ added in v0.1.3
Fmt formats a string using a printf-style format string and arguments. Example: Fmt("Hello %s", "world") returns "Hello world"
func Fprintf ¶ added in v0.1.49
Fprintf formats according to a format specifier and writes to w. It returns the number of bytes written and any write error encountered. Example: Fprintf(os.Stdout, "Hello %s\n", "world")
func Index ¶ added in v0.1.48
Index finds the first occurrence of substr in s, returns -1 if not found. This is the base primitive that other functions will reuse.
Examples:
Index("hello world", "world") // returns 6 Index("hello world", "lo") // returns 3 Index("hello world", "xyz") // returns -1 (not found) Index("hello world", "") // returns 0 (empty string) Index("data\x00more", "\x00") // returns 4 (null byte)
func LastIndex ¶ added in v0.1.47
LastIndex returns the index of the last instance of substr in s, or -1 if substr is not present in s.
Special cases:
- If substr is empty, LastIndex returns len(s).
- If substr is not found in s, LastIndex returns -1.
- If substr is longer than s, LastIndex returns -1.
Examples:
LastIndex("hello world", "world") // returns 6 LastIndex("hello world hello", "hello") // returns 12 (last occurrence) LastIndex("image.backup.jpg", ".") // returns 12 (useful for file extensions) LastIndex("hello", "xyz") // returns -1 (not found) LastIndex("hello", "") // returns 5 (len("hello")) LastIndex("", "hello") // returns -1 (not found in empty string)
Common use case - extracting file extensions:
filename := "document.backup.pdf" pos := LastIndex(filename, ".") if pos >= 0 { extension := filename[pos+1:] // "pdf" }
func OutLang ¶ added in v0.1.3
OutLang sets and returns the current output language as a string.
OutLang() // Auto-detects system/browser language, returns code (e.g. "EN") OutLang(ES) // Set Spanish as default (using lang constant), returns "ES" OutLang("ES") // Set Spanish as default (using string code), returns "ES" OutLang("fr") // Set French as default (case-insensitive), returns "FR" OutLang("en-US") // Accepts locale strings, parses to EN, returns "EN"
If a string is passed, it is automatically parsed using supported codes. If a lang value is passed, it is assigned directly. If another type is passed, nothing happens. Always returns the current language code as string (e.g. "EN", "ES", etc).
Types ¶
type Conv ¶ added in v0.1.61
type Conv struct { // Type indicator - most frequently accessed // Type indicator - most frequently accessed Kind Kind // Hot path: type checking // contains filtered or unexported fields }
func Convert ¶
Convert initializes a new Conv struct with optional value for string,bool and number manipulation. REFACTORED: Now accepts variadic parameters - Convert() or Convert(value) Phase 7: Uses object pool internally for memory optimization (transparent to user)
func Errf ¶ added in v0.1.3
Errf creates a new Conv instance with error formatting similar to fmt.Errf Example: tinystring.Errf("invalid value: %s", value).Error()
func Translate ¶ added in v0.1.57
Translate creates a translated string with support for multilingual translations Same functionality as Err but returns string directly instead of *Conv This function is used internally by the builder API for efficient string construction
Usage examples: Translate(D.Format, D.Invalid) returns "invalid format" Translate(ES, D.Format, D.Invalid) returns "formato inválido" Translate creates a translated string with support for multilingual translations Same functionality as Err but returns *Conv for further formatting This function is used internally by the builder API for efficient string construction
Usage examples: Translate(D.Format, D.Invalid) returns *Conv with "invalid format" Translate(ES, D.Format, D.Invalid) returns *Conv with "formato inválido"
func (*Conv) Apply ¶ added in v0.1.61
func (t *Conv) Apply()
Apply updates the original string pointer with the current content and auto-releases to pool. This method should be used when you want to modify the original string directly without additional allocations.
func (*Conv) Bool ¶ added in v0.1.61
Bool converts the Conv content to a boolean value using internal implementations Returns the boolean value and any error that occurred
func (*Conv) CamelLow ¶ added in v0.1.61
converts Conv to camelCase (first word lowercase) eg: "Hello world" -> "helloWorld"
func (*Conv) CamelUp ¶ added in v0.1.61
converts Conv to PascalCase (all words capitalized) eg: "hello world" -> "HelloWorld"
func (*Conv) Capitalize ¶ added in v0.1.61
Capitalize transforms the first letter of each word to uppercase and the rest to lowercase. Preserves all whitespace formatting (spaces, tabs, newlines) without normalization. OPTIMIZED: Uses work buffer efficiently to minimize allocations For example: " hello world " -> " Hello World "
func (*Conv) Float32 ¶ added in v0.1.61
Float32 converts the value to a float32. Returns the converted float32 and any error that occurred during conversion.
func (*Conv) Float64 ¶ added in v0.1.61
Float64 converts the value to a float64. Returns the converted float64 and any error that occurred during conversion.
func (*Conv) GetKind ¶ added in v0.1.61
GetKind returns the Kind of the value stored in the Conv This allows external packages to reuse tinystring's type detection logic
func (*Conv) Int ¶ added in v0.1.61
Int converts the value to an integer with optional base specification. If no base is provided, base 10 is used. Supports bases 2-36. Returns the converted integer and any error that occurred during conversion.
func (*Conv) Int32 ¶ added in v0.1.61
getInt32 extrae el valor del buffer de salida y lo convierte a int32. Int32 extrae el valor del buffer de salida y lo convierte a int32.
func (*Conv) Int64 ¶ added in v0.1.61
getInt64 extrae el valor del buffer de salida y lo convierte a int64. Int64 extrae el valor del buffer de salida y lo convierte a int64.
func (*Conv) Join ¶ added in v0.1.61
Join concatenates the elements of a string slice to create a single string. If no separator is provided, it uses a space as default. Can be called with varargs to specify a custom separator. eg: Convert([]string{"Hello", "World"}).Join() => "Hello World" eg: Convert([]string{"Hello", "World"}).Join("-") => "Hello-World"
func (*Conv) KV ¶ added in v0.1.61
KV extracts the value after the first delimiter. If not found, returns an error. Usage: Convert("key:value").KV(":") => "value", nil If no delimiter is provided, uses ":" by default.
func (*Conv) Quote ¶ added in v0.1.61
Quote wraps a string in double quotes and escapes any special characters Example: Quote("hello \"world\"") returns "\"hello \\\"world\\\"\""
func (*Conv) Repeat ¶ added in v0.1.61
Repeat repeats the Conv content n times If n is 0 or negative, it clears the Conv content eg: Convert("abc").Repeat(3) => "abcabcabc"
func (*Conv) Replace ¶ added in v0.1.61
Replace replaces up to n occurrences of old with new in the Conv content If n < 0, there is no limit on the number of replacements eg: "hello world" with old "world" and new "universe" will return "hello universe" Old and new can be any type, they will be converted to string using Convert
func (*Conv) Reset ¶ added in v0.1.61
Reset clears all Conv fields and resets the buffer Useful for reusing the same Conv object for multiple operations
func (*Conv) Round ¶ added in v0.1.61
Round rounds or truncates the current numeric value to the specified number of decimal places.
- If the optional 'down' parameter is omitted or false, it applies "round half to even" (bankers rounding, like Go: 2.5 → 2, 3.5 → 4). - If 'down' is true, it truncates (floors) the value without rounding.
Example:
Convert("3.14159").Round(2) // "3.14" (rounded) Convert("3.145").Round(2) // "3.14" (rounded) Convert("3.155").Round(2) // "3.16" (rounded) Convert("3.14159").Round(2, true) // "3.14" (truncated)
If the value is not numeric, returns "0" with the requested number of decimals.
func (*Conv) SnakeLow ¶ added in v0.1.61
snakeCase converts a string to snake_case format with optional separator. If no separator is provided, underscore "_" is used as default. Example:
Input: "camelCase" -> Output: "camel_case" Input: "PascalCase", "-" -> Output: "pascal-case" Input: "APIResponse" -> Output: "api_response" Input: "user123Name", "." -> Output: "user123.name"
SnakeLow converts Conv to snake_case format
func (*Conv) String ¶ added in v0.1.61
String method to return the content of the Conv and automatically returns object to pool Phase 7: Auto-release makes pool usage completely transparent to user
func (*Conv) StringErr ¶ added in v0.1.61
StringErr returns the content of the Conv along with any error and auto-releases to pool
func (*Conv) StringType ¶ added in v0.1.61
func (c *Conv) StringType() (string, MessageType)
StringType returns the string from buffOut and its detected MessageType, then auto-releases the Conv
func (*Conv) TagValue ¶ added in v0.1.61
TagValue searches for the value of a key in a Go struct tag-like string. Example: Convert(`json:"name" Label:"Nombre"`).TagValue("Label") => "Nombre", true
func (*Conv) Thousands ¶ added in v0.1.61
Thousands formats the number with thousand separators. By default (no param), uses EU style: 1.234.567,89 If anglo is true, uses Anglo style: 1,234,567.89
func (*Conv) Tilde ¶ added in v0.1.61
Tilde removes accents and diacritics using index-based lookup OPTIMIZED: Uses work buffer to eliminate temporary allocations
func (*Conv) TrimPrefix ¶ added in v0.1.61
TrimPrefix removes the specified prefix from the Conv content if it exists eg: "prefix-hello" with prefix "prefix-" will return "hello"
func (*Conv) TrimSpace ¶ added in v0.1.61
TrimSpace removes spaces at the beginning and end of the Conv content eg: " hello world " will return "hello world"
func (*Conv) TrimSuffix ¶ added in v0.1.61
TrimSuffix removes the specified suffix from the Conv content if it exists eg: "hello.txt" with suffix ".txt" will return "hello"
func (*Conv) Truncate ¶ added in v0.1.61
Truncate truncates a Conv so that it does not exceed the specified width. If the Conv is longer, it truncates it and adds "..." if there is space. If the Conv is shorter or equal to the width, it remains unchanged. The reservedChars parameter indicates how many characters should be reserved for suffixes. This parameter is optional - if not provided, no characters are reserved (equivalent to passing 0). eg: Convert("Hello, World!").Truncate(10) => "Hello, ..." eg: Convert("Hello, World!").Truncate(10, 3) => "Hell..." eg: Convert("Hello").Truncate(10) => "Hello"
func (*Conv) TruncateName ¶ added in v0.1.61
TruncateName truncates names and surnames in a user-friendly way for display in limited spaces like chart labels. It adds abbreviation dots where appropriate. This method processes the first word differently if there are more than 2 words in the Conv.
Parameters:
- maxCharsPerWord: maximum number of characters to keep per word (any numeric type)
- maxWidth: maximum total length for the final string (any numeric type)
Examples:
- Convert("Jeronimo Dominguez").TruncateName(3, 15) => "Jer. Dominguez"
- Convert("Ana Maria Rodriguez").TruncateName(2, 10) => "An. Mar..."
- Convert("Juan").TruncateName(3, 5) => "Juan"
func (*Conv) Uint ¶ added in v0.1.61
Uint converts the value to an unsigned integer with optional base specification. If no base is provided, base 10 is used. Supports bases 2-36. Returns the converted uint and any error that occurred during conversion.
func (*Conv) Uint32 ¶ added in v0.1.61
Uint32 extrae el valor del buffer de salida y lo convierte a uint32.
func (*Conv) Uint64 ¶ added in v0.1.61
Uint64 extrae el valor del buffer de salida y lo convierte a uint64.
func (*Conv) Write ¶ added in v0.1.61
Write appends any value to the buffer using unified type handling This is the core builder method that enables fluent chaining
Usage:
c.Write("hello").Write(" ").Write("world") // Strings c.Write(42).Write(" items") // Numbers c.Write('A').Write(" grade") // Runes
type Kind ¶ added in v0.1.18
type Kind uint8
Kind represents the specific Kind of type that a Type represents (private) Unified with convert.go Kind, using K prefix for TinyString naming convention.
IMPORTANT: The order and values of Kind must NOT be changed. These values are used in tinyreflect, a minimal version of reflectlite from the Go standard library. Keeping the order and values identical ensures compatibility with code and data shared between tinystring and tinyreflect.
type LocStr ¶ added in v0.1.4
type LocStr [9]string
LocStr represents a string with translations for multiple languages.
It is a fixed-size array where each index corresponds to a language constant (EN, ES, PT, etc.). This design ensures type safety and efficiency, as the compiler can verify that all translations are provided.
The order of translations must match the order of the language constants.
Example of creating a new translatable term for "File":
var MyDictionary = struct { File LocStr }{ File: LocStr{ EN: "file", ES: "archivo", ZH: "文件", HI: "फ़ाइल", AR: "ملف", PT: "arquivo", FR: "fichier", DE: "Datei", RU: "файл", }, }
Usage in code:
err := Err(MyDictionary.File, D.Not, D.Found) // -> "file not found", "archivo no encontrado", etc.
type MessageType ¶ added in v0.1.54
type MessageType uint8
MessageType represents the classification of message types in the system.
func (MessageType) IsError ¶ added in v0.1.54
func (t MessageType) IsError() bool
func (MessageType) IsInfo ¶ added in v0.1.54
func (t MessageType) IsInfo() bool
func (MessageType) IsNormal ¶ added in v0.1.54
func (t MessageType) IsNormal() bool
Helper methods for MessageType
func (MessageType) IsSuccess ¶ added in v0.1.54
func (t MessageType) IsSuccess() bool
func (MessageType) IsWarning ¶ added in v0.1.54
func (t MessageType) IsWarning() bool
func (MessageType) String ¶ added in v0.1.54
func (t MessageType) String() string
Source Files
¶
- bool.go
- builder.go
- capitalize.go
- compact_float.go
- convert.go
- dictionary.go
- env.back.go
- error.go
- fmt_number.go
- fmt_precision.go
- fmt_sci.go
- fmt_template.go
- join.go
- kind.go
- language.go
- mapping.go
- memory.go
- messagetype.go
- num_float.go
- num_int.go
- num_uint.go
- operations.go
- parse.go
- quote.go
- repeat.go
- replace.go
- search.go
- split.go
- translation.go
- truncate.go