Quixotify is a text generation library designed to retrieve and manipulate text excerpts from Miguel de Cervantes' Don Quixote. This library supports generating text based on characters, words, or sentences and includes functionalities to handle different output languages.
- Fetch random text excerpts from an SQLite database.
- Generate text by a specified number of characters, words, or sentences.
- Support for multiple languages (English and Spanish).
- Handles edge cases with missing or insufficient data.
- Clone the repository or include the classes in your project:
git clone https://github.com/yourusername/quixotify.git
- Ensure you have PHP 8.0+ and PDO SQLite installed.
- Place your SQLite database (
database.db
) in the same directory as theController
class.
The Controller
class is responsible for connecting to the database, validating input, and generating text.
$controller = new Controller("Spanish");
$outputLanguage
: Optional. Defaults to English ("don_quixote_english_texts"
). Use"Spanish"
for Spanish.
generateText(string $unit, int $quantity): string
Generate text based on the unit (characters
,words
, orsentences
) and quantity.
generate(string $type, int $amount): string
Calls theController
to generate text, with additional error handling.
-
Initialize the
Controller
class:use Quixotify\Controller; $controller = new Controller("Spanish"); // For Spanish texts
-
Generate text using the
Controller
:$text = $controller->generateText('words', 50); echo $text;
-
Or, use the
Generator
class for better error handling:use Quixotify\Generator; $controller = new Controller("Spanish"); $generator = new Generator($controller); $text = $generator->generate('characters', 100); echo $text;
The database should have the following schema:
Column | Type | Description |
---|---|---|
id |
INTEGER | Primary key (auto-increment) |
text |
TEXT | The excerpt of text |
word_count |
INTEGER | Number of words in the text |
Ensure the database has two tables:
don_quixote_english_texts
don_quixote_spanish_texts
- Invalid Input: Throws exceptions if the input quantity is non-positive or the unit is invalid.
- Insufficient Data: Automatically fetches additional rows to meet the requested amount.
Contributions are welcome! Please submit a pull request or open an issue for bugs, features, or enhancements.
This project is licensed under the MIT License. See the LICENSE
file for details.