{"id":25067476,"url":"https://github.com/spafic/asu_seniorproject_dp","last_synced_at":"2026-05-08T13:05:44.042Z","repository":{"id":268261089,"uuid":"903779518","full_name":"Spafic/ASU_SeniorProject_DP","owner":"Spafic","description":"ASU_SeniorProject_DP is a senior project showcasing the use of the Builder Design Pattern for text conversion. It processes RTF-like input and converts it to formats like ASCII, TeX, and a custom text widget format. The project demonstrates efficient text processing and modular design.","archived":false,"fork":false,"pushed_at":"2025-01-20T00:05:41.000Z","size":522,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-06T20:57:17.903Z","etag":null,"topics":["builder-pattern","cpp","java","python","textconverter"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Spafic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-15T14:45:02.000Z","updated_at":"2025-01-20T00:08:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"3fbd066f-c359-4e79-ada4-24adce1fe851","html_url":"https://github.com/Spafic/ASU_SeniorProject_DP","commit_stats":null,"previous_names":["spafic/asu_seniorproject_dp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Spafic%2FASU_SeniorProject_DP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Spafic%2FASU_SeniorProject_DP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Spafic%2FASU_SeniorProject_DP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Spafic%2FASU_SeniorProject_DP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Spafic","download_url":"https://codeload.github.com/Spafic/ASU_SeniorProject_DP/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246485616,"owners_count":20785357,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["builder-pattern","cpp","java","python","textconverter"],"created_at":"2025-02-06T20:57:27.496Z","updated_at":"2026-05-08T13:05:43.985Z","avatar_url":"https://github.com/Spafic.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Text Conversion Builder Pattern Implementation\n\nThis project demonstrates the Builder Design Pattern through a text conversion system implemented in both C++ and Java. The system processes RTF-like input and converts it into different output formats.\n\n## 🏗️ Builder Pattern Overview\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./assets/Builder.png\" alt=\"Builder Pattern UML\"\u003e\n\u003c/div\u003e\n\nThe Builder Pattern is used to construct complex objects step by step. In this implementation:\n- `TextConverter` serves as the abstract builder\n- Concrete builders (`ASCIIConverter`, `TeXConverter`, `TextWidgetConverter`) create specific representations\n- `RTFReader` acts as the director that constructs the object using the builder interface\n\n## 📚 Visual Example\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./assets/Robots.jpg\" alt=\"Robot Builder Example\"\u003e\n\u003c/div\u003e\n\nJust like building a robot piece by piece, our text converter builds the final output format step by step!\n\n\n## 🚀 Features\n\n- Converts RTF-like text to multiple formats:\n    - ASCII (plain text)\n    - TeX (with formatting commands)\n    - Text Widget (custom format)\n- Supports text styling:\n    - Bold\n    - Italic\n    - Underline\n- Handles paragraph breaks\n- Implemented in both C++ and Java\n\n## 📁 Project Structure\n\n```plaintext\n├── Python/\n│   └── app.py\n├── C++/\n│   └── main.cpp\n└── Java/\n    ├── Main.java\n    └── rtf/\n        ├── ASCIIConverter.java\n        ├── FontStyle.java\n        ├── RTFReader.java\n        ├── TeXConverter.java\n        ├── TextConverter.java\n        └── TextWidgetConverter.java\n```\n\n## 🔍 Implementation Details\n\n### Python Implementation [`Source`](./Python)\n- Single file script for simplicity\n- Uses classes to define `TextConverter` and concrete converters\n- Easy-to-read and maintainable code\n\n### C++ Implementation [`Source`](./C++)\n- Single file modular design with smart pointers\n- Implements `TextConverter`, `RTFReader`, and concrete converters\n- Memory-safe RAII approach\n\n### Java Implementation [`Source`](./Java)\n- Multi-file OOP design with `rtf` package structure\n- Uses `StringBuilder` for string operations\n- Interfaces for `TextConverter` with three concrete implementations\n\n## 🛠️ How to Run\n\n### Python Version\n1. Navigate to the `Python` directory.\n2. Run the script using Python, e.g., `python app.py`.\n\n### C++ Version\n1. Navigate to the `C++` directory.\n2. Compile the code using a C++ compiler, e.g., `g++ main.cpp -o TextConverter`.\n3. Run the executable, e.g., `./TextConverter`.\n\n### Java Version\n1. Navigate to the `Java` directory.\n2. Compile the code using `javac`, e.g., `javac Main.java`.\n3. Run the program, e.g., `java Main`.\n\n## 📚 Design Pattern Benefits\n\n- **Separation of Concerns**: Construction logic is separated from representation.\n- **Fine-grained Control**: Step-by-step construction of text formatting.\n- **Multiple Representations**: Same construction process creates different text formats.\n- **Single Responsibility**: Each converter handles one specific format.\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspafic%2Fasu_seniorproject_dp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspafic%2Fasu_seniorproject_dp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspafic%2Fasu_seniorproject_dp/lists"}