# Contributing
Thank you for your interest in contributing to the Suukon project! We welcome contributions from the community to help improve and expand this library for working with multiple numeral systems. Please take a moment to review the guidelines below before contributing.
## Bug Reports and Feature Requests
If you encounter any bugs, issues, or have feature requests for Suukon, please open an issue on the GitLab repository. When reporting a bug, please provide detailed information about the problem, including steps to reproduce it and any relevant code snippets or error messages.
## Merge Requests
We encourage and appreciate merge requests that contribute to the development of Suukon. If you would like to make changes or add new features to the library, please follow these steps:
1. Fork the repository on GitLab.
2. Create a new branch from the main branch for your changes.
3. Implement your changes and ensure that your code adheres to the project's coding style and guidelines.
4. Write tests to cover the changes you've made. Ensure that all existing tests pass.
5. Commit your changes and provide clear and descriptive commit messages.
6. Push your branch to your forked repository.
7. Open a merge request on the GitLab repository and provide a detailed description of your changes.
## Code Guidelines
To maintain consistency and readability, please adhere to the following guidelines when contributing code to Suukon:
- Follow the Rust coding style conventions and guidelines.
- Use meaningful variable and function names that accurately describe their purpose.
- Write clear and concise comments to explain complex logic or algorithms.
- Ensure that your code is well-documented using Rustdoc comments for public APIs.
In addition, when adding support for new numeral systems, please follow these guidelines:
- Each numeral system should be implemented in its own module.
- Each module should provide at least two functions:
- num_to_{NUMERAL_PLACEHOLDER}: Converts an Arabic numeral to the corresponding numeral system representation.
- {NUMERAL_PLACEHOLDER}_to_num: Converts a numeral system representation back to an Arabic numeral.
- The module documentation should also include a reference table that showcases the numerals of the specific numeral system implemented in the module. This table should provide a clear mapping between the Arabic numerals and the corresponding numeral system representation.
By organizing numeral systems into separate modules and following the naming conventions mentioned above, we can maintain a consistent and extensible structure for Suukon.
## Testing
Suukon aims to maintain a high level of code quality and reliability. Therefore, it is essential to include tests for new features and bug fixes. When submitting a merge request, please ensure that all existing tests pass and include new tests that cover the changes you have made. This helps us ensure that your code functions as intended and doesn't introduce regressions.
## License
By contributing to Suukon, you agree that your contributions will be licensed under the MIT license. See the [LICENSE](./LICENSE) file for more details.
Thank you for your contributions! Your help is greatly appreciated in making Suukon a robust and versatile library for working with multiple numeral systems.