Skip to content

minty-sh/seqrix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

seqrix

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!

Table of Contents

Usage

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 build

The executable will be located in the build directory.

Casing Transformations

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.txt

Available casing subcommands: uppercase, lowercase, titlecase, sentencecase, camelcase, pascalcase.

Cipher Transformations

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).

Roadmap

  • 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.

Contributing

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.

License

This project is licensed under the BSD-3-Clause License.

About

Modern C++20 command-line toolkit for text casing and cipher operations (Caesar, Atbash, Speck, XOR)

Resources

License

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors