Orionium is a browser engine written in Rust. For now the project aims to provide a foundation for parsing HTML, constructing a DOM, and rendering web pages. As it evolves, Orionium will serve as the backbone for a fully-featured web browser, supporting HTML, CSS, and potentially JavaScript execution.
- HTML Parsing: Convert raw HTML strings into a structured DOM tree.
- DOM Tree Construction: Build a DOM tree from parsed HTML tokens.
- Rendering: Render the DOM tree, preparing it for display.
- Rust (ensure you have the latest version installed)
-
Clone the repository:
git clone https://github.com/AnimeshAgarwal28/orionium.git cd orionium
-
Build the project:
cargo build
-
Run the project:
cargo run
The program will parse a hardcoded HTML string, build a DOM tree, and render it back to HTML.
Orionium is currently focused on the core components of a browser engine:
- HTML Parsing: Building a robust HTML parser.
- DOM Manipulation: Creating a complete and manipulable DOM tree.
- Rendering: Preparing the DOM tree for display.
- CSS Parsing and Rendering: Adding support for CSS to style the DOM.
- JavaScript Execution: Integrating a JavaScript engine to handle dynamic content.
- Web Browser Integration: Expanding Orionium into a full-fledged web browser engine.
We welcome contributions from the community! Here are a few guidelines to help you get started:
- Fork the repository and create a new branch for your feature or bugfix.
- Implement tests for any new functionality you add.
- Document your changes in the code and update the
README.md
if necessary. - Submit a pull request with a clear description of your changes.
- Code Style: Please follow Rust's standard formatting (
cargo fmt
) and linting (cargo clippy
) guidelines. - Commit Messages: Write clear and concise commit messages.
- Issue Tracker: Use GitHub Issues to report bugs or suggest features.
As the project evolves, tests should be added to ensure that new and existing functionality works correctly. Please use Rust's built-in testing framework for writing and running tests:
- Unit Tests: Place unit tests within the same file as the code they are testing, in a
#[cfg(test)]
module. - Integration Tests: Use the
tests
directory for integration tests that check how different parts of the engine work together.
We encourage contributors to add tests when implementing new features or fixing bugs.
- Code Style: Please follow Rust's standard formatting (
cargo fmt
) and linting (cargo clippy
) guidelines. - Commit Messages: Write clear and concise commit messages.
- Issue Tracker: Use the issue tracker to report bugs or suggest features.
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for more details.