peasytext 0.2.2

Rust client for PeasyText — text tools, glossary, and guides API
Documentation

peasytext

crates.io docs.rs License: MIT crates.io GitHub stars

Async Rust client for the PeasyText API -- text case conversion, slug generation, word counting, and encoding utilities with tools for camelCase, snake_case, kebab-case, PascalCase, and more. Built with reqwest, serde, and tokio.

Built from PeasyText, a comprehensive text processing toolkit offering free online tools for case conversion, slug generation, word counting, and text analysis. The glossary covers text concepts from character encodings to Unicode normalization, while guides explain text processing strategies and encoding best practices.

Try the interactive tools at peasytext.com -- Text Counter, Case Converter, Slug Generator, and more.

Table of Contents

Install

[dependencies]
peasytext = "0.2.0"
tokio = { version = "1", features = ["full"] }

Or via cargo:

cargo add peasytext

Quick Start

use peasytext::Client;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = Client::new();

    // List available text tools
    let tools = client.list_tools(&Default::default()).await?;
    for tool in &tools.results {
        println!("{}: {}", tool.name, tool.description);
    }

    Ok(())
}

What You Can Do

Text Processing Tools

Text transformation is fundamental to software development -- from generating URL-safe slugs for blog posts to converting variable names between camelCase and snake_case during code generation. Case conversion tools handle the mechanical work of transforming text between naming conventions used across programming languages (camelCase in JavaScript, snake_case in Python, kebab-case in CSS). Word counting and character analysis help content authors meet length requirements for SEO titles, meta descriptions, and social media posts.

Tool Description Use Case
Text Counter Count words, characters, sentences, and paragraphs Content length validation, SEO metadata
Case Converter Convert between camelCase, snake_case, kebab-case, PascalCase Code generation, API field mapping
Slug Generator Create URL-safe slugs from any text input Blog posts, CMS content, URL routing
use peasytext::Client;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = Client::new();

    // Fetch the case converter tool details
    let tool = client.get_tool("text-case-converter").await?;
    println!("Tool: {}", tool.name);           // Case converter tool
    println!("Category: {}", tool.category);   // Text processing category

    // List supported text formats
    let formats = client.list_formats(&Default::default()).await?;
    for fmt in &formats.results {
        println!(".{} -- {} ({})", fmt.extension, fmt.name, fmt.mime_type);
    }

    // List available format conversions from plain text
    let conversions = client.list_conversions(&peasytext::ListConversionsOptions {
        source: Some("txt".into()),
        ..Default::default()
    }).await?;
    println!("Found {} conversion paths from text", conversions.results.len());

    Ok(())
}

Learn more: Text Counter · Case Converter · Text Encoding Guide

Browse Text Reference Content

The text processing glossary explains key concepts from basic character encodings to advanced Unicode normalization forms. Understanding the difference between ASCII and UTF-8, how byte order marks (BOM) affect file parsing, and when to use URL encoding versus Base64 helps developers handle text data correctly across platforms and programming languages.

Glossary Term Description
Slug URL-safe string derived from a title or phrase, using hyphens and lowercase
Case Conversion Transforming text between naming conventions like camelCase and snake_case
UTF-8 Variable-width character encoding capable of representing all Unicode code points
Whitespace Characters representing horizontal or vertical space in text rendering
// Browse text processing glossary terms
let glossary = client.list_glossary(&peasytext::ListOptions {
    search: Some("slugify".into()),
    ..Default::default()
}).await?;
for term in &glossary.results {
    println!("{}: {}", term.term, term.definition); // Text processing concept definition
}

// Read in-depth guides on text encoding and conversion
let guides = client.list_guides(&peasytext::ListGuidesOptions {
    category: Some("text".into()),
    ..Default::default()
}).await?;
for guide in &guides.results {
    println!("{} ({})", guide.title, guide.audience_level); // Guide title and difficulty
}

Learn more: Slug Glossary · ASCII Glossary · Regex Cheat Sheet

Search and Discovery

The unified search endpoint queries across all text tools, glossary terms, guides, and supported formats simultaneously. This is useful for building text editor plugins, documentation search, or CLI tools that need to discover text processing capabilities.

// Search across all text tools, glossary, and guides
let results = client.search("case", Some(20)).await?;
println!("Found {} tools, {} glossary terms",
    results.results.tools.len(),
    results.results.glossary.len()); // Cross-content text processing search results

Learn more: BOM Glossary · Slug Generator · All Text Guides

API Client

The client wraps the PeasyText REST API with strongly-typed Rust structs using serde deserialization.

use peasytext::Client;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = Client::new();
    // Or with a custom base URL:
    // let client = Client::with_base_url("https://custom.example.com");

    // List tools with filters
    let opts = peasytext::ListOptions {
        page: Some(1),
        limit: Some(10),
        search: Some("case".into()),
        ..Default::default()
    };
    let tools = client.list_tools(&opts).await?;

    // Get a specific tool
    let tool = client.get_tool("text-case").await?;
    println!("{}: {}", tool.name, tool.description);

    // Search across all content
    let results = client.search("case", Some(20)).await?;
    println!("Found {} tools", results.results.tools.len());

    // Browse the glossary
    let glossary = client.list_glossary(&peasytext::ListOptions {
        search: Some("slugify".into()),
        ..Default::default()
    }).await?;
    for term in &glossary.results {
        println!("{}: {}", term.term, term.definition);
    }

    // Discover guides
    let guides = client.list_guides(&peasytext::ListGuidesOptions {
        category: Some("text".into()),
        ..Default::default()
    }).await?;
    for guide in &guides.results {
        println!("{} ({})", guide.title, guide.audience_level);
    }

    // List format conversions
    let conversions = client.list_conversions(&peasytext::ListConversionsOptions {
        source: Some("txt".into()),
        ..Default::default()
    }).await?;

    Ok(())
}

Available Methods

Method Description
list_tools(&opts) List tools (paginated, filterable)
get_tool(slug) Get tool by slug
list_categories(&opts) List tool categories
list_formats(&opts) List file formats
get_format(slug) Get format by slug
list_conversions(&opts) List format conversions
list_glossary(&opts) List glossary terms
get_glossary_term(slug) Get glossary term
list_guides(&opts) List guides
get_guide(slug) Get guide by slug
list_use_cases(&opts) List use cases
search(query, limit) Search across all content
list_sites() List Peasy sites
openapi_spec() Get OpenAPI specification

Full API documentation at peasytext.com/developers/. OpenAPI 3.1.0 spec: peasytext.com/api/openapi.json.

Learn More About Text Processing

Also Available

Language Package Install
Python peasytext pip install "peasytext[all]"
TypeScript peasytext npm install peasytext
Go peasytext-go go get github.com/peasytools/peasytext-go
Ruby peasytext gem install peasytext

Peasy Developer Tools

Part of the Peasy Tools open-source developer ecosystem.

Package PyPI npm crates.io Description
peasy-pdf PyPI npm crate PDF merge, split, rotate, compress -- peasypdf.com
peasy-image PyPI npm crate Image resize, crop, convert, compress -- peasyimage.com
peasy-audio PyPI npm crate Audio trim, merge, convert, normalize -- peasyaudio.com
peasy-video PyPI npm crate Video trim, resize, thumbnails, GIF -- peasyvideo.com
peasy-css PyPI npm crate CSS minify, format, analyze -- peasycss.com
peasy-compress PyPI npm crate ZIP, TAR, gzip compression -- peasytools.com
peasy-document PyPI npm crate Markdown, HTML, CSV, JSON conversion -- peasyformats.com
peasytext PyPI npm crate Text case conversion, slugify, word count -- peasytext.com

License

MIT