[plugin]
id = "string-utils"
name = "String Utilities"
version = "1.0.0"
author = "AetherShell Team"
description = "Additional string manipulation functions for common transformations"
categories = ["Builtin"]
min_aether_version = "0.1.0"
dependencies = []
[builtins]
title_case = "fn(s) => s | split(' ') | map(fn(w) => if len(w) > 0 { upper(slice(w, 0, 1)) + lower(slice(w, 1)) } else { w }) | join(' ')"
snake_case = "fn(s) => s | lower | replace(' ', '_') | replace('-', '_')"
kebab_case = "fn(s) => s | lower | replace(' ', '-') | replace('_', '-')"
capitalize = "fn(s) => if len(s) > 0 { upper(slice(s, 0, 1)) + slice(s, 1) } else { s }"
str_reverse = "fn(s) => s | split('') | reverse | join('')"
is_blank = "fn(s) => len(trim(s)) == 0"
is_not_blank = "fn(s) => len(trim(s)) > 0"
pad_left = "fn(s, width, char) => if len(s) >= width { s } else { (range(1, width - len(s) + 1) | map(fn(_) => char) | join('')) + s }"
pad_right = "fn(s, width, char) => if len(s) >= width { s } else { s + (range(1, width - len(s) + 1) | map(fn(_) => char) | join('')) }"
center = "fn(s, width, char) => if len(s) >= width { s } else { pad_left(pad_right(s, len(s) + (width - len(s)) / 2, char), width, char) }"
truncate = "fn(s, max_len) => if len(s) <= max_len { s } else { slice(s, 0, max_len - 3) + '...' }"
word_count = "fn(s) => s | split(' ') | where(fn(w) => len(trim(w)) > 0) | len"
is_numeric = "fn(s) => len(s) > 0 && (s | split('') | all(fn(c) => contains('0123456789', c)))"
is_alpha = "fn(s) => len(s) > 0 && (s | split('') | all(fn(c) => contains('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', c)))"
compact = "fn(s) => s | replace(' ', '') | replace('\\t', '') | replace('\\n', '')"