Skip to content
Voca_rs is the ultimate Rust string library inspired by Voca.js, string.py and Inflector, implemented as independent functions and on Foreign Types (String and str).
Rust
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
tests
.gitignore
.travis.yml
Cargo.toml
LICENSE
README.md

README.md

voca_rs Build Status Crates version dependency status codecov Codacy Badge license

Voca_rs is a Rust library for manipulating [unicode] strings.

Voca_rs is inspired by Voca.js (JavaScript), string.py (Python), Inflector (Rust), and Grafite (PHP).

Voca_rs is implemented on Foreign Types, i.e. String and str. Respects Unicode.

TL;DR

Using functions:

use voca_rs::*;

let input_string = "LazyLoad with XMLHttpRequest and snake_case";
let string_in_words = split::words(&input_string);
// => ["Lazy", "Load", "with", "XML", "Http", "Request", "and", "snake", "case"]
let words_in_string = &string_in_words.join(" ");
// => "Lazy Load with XML Http Request and snake case"
let truncated_string = chop::prune(&words_in_string, 21, "");
// => "Lazy Load with XML..."
let sliced_string = chop::slice(&truncated_string, 5, -2);
// => "Load with XML."
let snaked_string = case::snake_case(&sliced_string);
// => "load_with_xml"

Using traits (all methods start from the underscore symbol):

use voca_rs::Voca;

"LazyLoad with XMLHttpRequest and snake_case"
._words()
// => ["Lazy", "Load", "with", "XML", "Http", "Request", "and", "snake", "case"]
.join(" ")
// => "Lazy Load with XML Http Request and snake case"
._prune(21, "")
// => "Lazy Load with XML..."
._slice(5, -2)
// => "Load with XML."
._snake_case();
// => "load_with_xml"

Documentation

See the complete documentation at https://e1r0nd.github.io/voca_rs/

Run tests: cargo test
Build docs: cargo doc -> ./target/doc/voca_rs/index.html
Build a project: cargo build -> ./target/debug

Functions

Case

Chop

Count

Escape

Index

Manipulate

Query

Split

Strip

Utils

Roadmap

  • Ensure respecting unicode string for each method. Update each function's description clearly stating whether it works with UTF or ASCII.
  • Possible refactoring: all position indexes covert to zero-based and add a comment to each doc
  • Change all inner arguments to Enums (instead string or bool)
  • To ensure that all regexp expressions are wrapped by lazy_static

Chop

Count

  • countWhere - link
  • count_unique_words - link: Counting occurrences of words using a hash map that stores words and counts

Format

Chop

  • limit_words (from "words") - link
  • deconstantize - link
  • demodulize - link

Manipulate

Copyright

coded by Anatol Marezhanyi @e1r0nd_crg

https://linkedin.com/in/merezhany/
https://www.youtube.com/c/AnatolMerezhanyi

License

Licensed under MIT License

You can’t perform that action at this time.