seqrix is a CLI tool written in C++ for transforming text to various cases or applying different cipher algorithms.
This project provides multiple text transformation options including
- uppercase;
- lowercase;
- title case;
- sentence case;
- camel case;
- pascal case.
It also supports several cipher algorithms such as
- Caesar;
- Atbash;
- Speck;
- XOR.
Development is active, and new features are being added. Feel free to contribute or suggest improvements!
To build the project, ensure you have CMake and a C++20 compatible compiler installed. Clone the repository and run the following commands:
$ cmake -S . -B build
$ cmake --build buildThe executable will be located in the build directory.
To apply a casing transformation, use the casing command followed by the desired case and the input text or file path:
# Example: Convert text to uppercase
$ ./build/seqrix casing uppercase "hello world"
# Example: Convert text from a file to title case
$ ./build/seqrix casing titlecase yourfile.txtAvailable casing subcommands: uppercase, lowercase, titlecase, sentencecase, camelcase, pascalcase.
To apply a cipher transformation, use either the encrypt or decrypt command, followed by the cipher type, the input text or file path, and any required options.
# Example: Encrypt text using Caesar cipher with a shift of 3
$ ./build/seqrix encrypt caesar "hello" --shift 3
# Example: Decrypt text using Caesar cipher with a shift of 3
$ ./build/seqrix decrypt caesar "khoor" -s 3
# Example: Apply Atbash cipher
$ ./build/seqrix encrypt atbash "hello"
# Example: Encrypt text using Speck cipher with a 16-byte key
$ ./build/seqrix encrypt speck "secret message" --key "a1b2c3d4e5f6g7h8"
# Example: Decrypt text using XOR cipher with a key
$ ./build/seqrix decrypt xor "encrypted" -k "mysecret"Available cipher subcommands: caesar, atbash, speck, xor.
Options:
--shift <value>,-s <value>: Shift value for Caesar cipher.--key <value>,-k <value>: Key for Speck and XOR ciphers (16 bytes for Speck).
- Implement transformations based on natural language rules (e.g., for proper title casing).
- Implement unit tests for all functions, using something like GoogleTest.
- Implement other miscelleneous transformations, such as:
- reverse text
- remove whitespace
- replace special characters
- trim spaces
- remove duplicates
- sort lines
- count lines
- words
- reverse words
- characters
- Add options to specify an output file (
-o filename.txt), overwrite the input, or create backups. - Add support for regex-based find-and-replace functionality.
- Add chaining multiple transformations (e.g.,
casing lowercase | encrypt caesar --shift 3). - Extend cipher options to include algorithms like Vigenère.
- Provide clearer error messages for missing files, unreadable input, or invalid transformations.
- Improve user documentation and help text with examples and edge cases for each transformation.
Contributions are welcome! Feel free to open issues or submit pull requests. Before contributing, please follow these guidelines:
- Follow the code of conduct.
- Keep a consistent coding style. To ensure your coding style remains the same, format your code with:
$ clang-format -i path/to/source_code - Use a C++20 compatible compiler.
- Don't add too many dependencies if you're adding a new feature.
For support, please open an issue.
This project is licensed under the BSD-3-Clause License.