perridak_strings 0.16.1 copy "perridak_strings: ^0.16.1" to clipboard
perridak_strings: ^0.16.1 copied to clipboard

Comprehensive, zero-dependency string utilities for Dart and Flutter. Fast, safe, and rigorously tested.

Perridak Strings #

Comprehensive string utilities for Dart and Flutter. Fast, safe, and rigorously tested with zero external dependencies.

Overview #

Perridak Strings provides a cohesive set of string manipulation functions organised into focused modules. Whether you're building CLI tools, Flutter apps, or server-side Dart projects, this library offers practical utilities for word operations, text normalisation, indentation control, and sentence formatting.

Why use Perridak Strings?

  • Minimal dependencies — Pure Dart implementation, runs everywhere
  • Full Unicode support — Handles accented characters, emoji, and multi-byte text correctly
  • Comprehensive testing — Perridak Software applies a Test-Driven Development methodology
  • Pre-release & open to feedback — API stable, but we welcome community input before 1.0.0

Installation #

Add to pubspec.yaml:

dependencies:
  perridak_strings: ^0.16.0

Then run:

dart pub get

Quick Start #

import 'package:perridak_strings/perridak_strings.dart';

void main() {
  // Word operations
  print('hello world'.firstWord());        // 'hello'
  print('hello world'.lastWord());         // 'world'
  
  // Text normalisation
  print('café'.normaliseAccents());        // 'cafe'
  print('Hello World!'.slugify());         // 'hello-world'
  
  // Indentation
  print('line1\nline2'.indent('  '));      // '  line1\n  line2'
  
  // Sentence formatting
  print('hello world'.asSentence());       // 'Hello world.'
}

Modules #

Composition #

String building, decomposition, and transformation.

Building & Concatenation

  • append(text, [count]) — Add text to the end, repeated n times
  • prefix(text, [count]) — Add text to the start, repeated n times
  • repeat(count) — Repeat the string n times

Word Operations

  • firstWord() — Extract the first word
  • lastWord() — Extract the last word
  • removeFirstWord() — Strip the first word and surrounding punctuation
  • removeLastWord() — Strip the last word and surrounding punctuation

Chunking & Extraction

  • chunkify(size) — Split into fixed-length chunks
  • takeFirst(count) — Get the first n characters
  • takeLast(count) — Get the last n characters
  • removeFirst(count) — Remove the first n characters
  • removeLast(count) — Remove the last n characters

Text Normalisation

  • normaliseAccents() — Remove diacritical marks (é → e, ñ → n)
  • normaliseWhitespace() — Collapse multiple spaces, trim
  • removeAllWhitespace() — Strip all whitespace
  • removeSpecialCharacters([removeSpaces]) — Keep only alphanumeric and spaces
  • onlyNumbers() — Extract digits only
  • onlyLetters() — Extract letters only

String Reversal

  • reverse() — Simple character reversal
  • safeReverse() — Reverse while preserving grapheme clusters (emoji-safe)

URL & Display Formatting

  • slugify() — Convert to URL-safe slug (removes accents, joins with hyphens)
  • truncate(maxLength, [ellipsis]) — Limit length, optionally add ellipsis
  • mask({revealStart, revealEnd, maskChar}) — Hide sensitive data with masking

Indentation #

Layout and spacing control for multi-line strings.

  • indent(indentation) — Add indentation to all lines
  • hangingIndent(indentation) — Indent all lines except the first
  • reverseHangingIndent(indentation) — Indent only the first line
  • removeIndent(indentation) — Strip indentation from all lines
  • removeHangingIndent(indentation) — Remove hanging indentation
  • removeReverseHangingIndent(indentation) — Remove reverse hanging indentation

Segmentation #

Identifier expansion and word extraction.

  • expandFunctionName() — Split camelCase, snake_case, kebab-case into words
  • asWords() — Extract words, remove punctuation, preserve hyphens

Sentences #

Sentence formatting and capitalisation.

  • asSentence() — Capitalise first letter and ensure sentence ends with terminator

Examples #

Word Extraction #

'This is a sentence.'.firstWord()    // 'This'
'This is a sentence.'.lastWord()     // 'sentence.'

'Hello World'.removeFirstWord()      // 'World'
'Hello World'.removeLastWord()       // 'Hello'

Text Normalisation #

'Café au Lait'.normaliseAccents()    // 'Cafe au Lait'
'  hello   world  '.normaliseWhitespace()  // 'hello world'
'abc123!@#'.removeSpecialCharacters()      // 'abc123'
'(123)-456-7890'.onlyNumbers()             // '1234567890'
'abc123!'.onlyLetters()                    // 'abc'

URL Slug Generation #

'Hello World!'.slugify()             // 'hello-world'
'Café au Lait'.slugify()             // 'cafe-au-lait'
'foo  bar   baz'.slugify()           // 'foo-bar-baz'

Indentation #

'line1\nline2'.indent('  ')
// '  line1\n  line2'

'first\nsecond\nthird'.hangingIndent('  ')
// 'first\n  second\n  third'

Sentence Formatting #

'hello world'.asSentence()           // 'Hello world.'
'(hello) world'.asSentence()         // 'Hello (world.'
'hello world!'.asSentence()          // 'Hello world!'

Identifier Expansion #

'helloWorld'.expandFunctionName()    // 'hello World'
'hello_world'.expandFunctionName()   // 'hello world'
'HTTPServer'.expandFunctionName()    // 'HTTP Server'

Data Masking #

'1234567890'.mask(revealStart: 2, revealEnd: 2)  // '12****890'
'password123'.mask(revealStart: 1, revealEnd: 1) // 'p*********3'

Requirements #

  • Dart SDK: 3.11.5 or higher
  • Flutter: Not required, but works with Flutter 3.13.9+
  • Dependencies: One (characters package from Dart team)

Release Status #

Version 0.16.x is a pre-release. The API is stable and thoroughly tested, but we're actively gathering feedback before declaring 1.0.0.

What This Means #

  • All functions are production-ready
  • Comprehensive tests passing across all modules
  • Full Unicode and emoji support
  • Comprehensive documentation
  • API may evolve based on community feedback
  • Additional functions will be added in 0.17.0, 0.18.0, etc.

Roadmap to 1.0.0 #

We're releasing functions in tranches:

  • 0.16.0 — Composition, Indentation, Parsing, Sentences (current)
  • 0.17.0–0.20.0 — Case conversion, validation, encoding, analysis, formatting
  • 1.0.0 — Stable API, locked in

Support & Feedback #

This is a pre-release package. Your feedback shapes the final API.

Report issues or share feedback:

support@perridak.software

General inquiries:

enquiries@perridak.software

Platform Support #

Perridak Strings works on:

  • Dart VM (command-line, server)
  • Flutter (iOS, Android, macOS, Windows, Linux, Web)
  • Web (compiled to JavaScript)

License #

Copyright © 2026 Perridak Software.

Licensed under the MIT License — see the LICENSE file for details.

Contributing #

Perridak Strings is maintained by Perridak Software. The source is currently private while we work out a few of the pre-public quirks, but will be released to github shortly. We welcome feedback and suggestions in the meantime via email at the addresses above.


Made with care by Perridak Software

For more information, visit pub.dev/packages/perridak_strings

0
likes
150
points
70
downloads

Documentation

API reference

Publisher

verified publisherperridak.software

Weekly Downloads

Comprehensive, zero-dependency string utilities for Dart and Flutter. Fast, safe, and rigorously tested.

Homepage

Topics

#strings #text #utilities #formatting

License

MIT (license)

Dependencies

characters

More

Packages that depend on perridak_strings