Features:
- A command-line based writing portal, especially
help
- Creates this menu. Invoked by putting '/ help' in the line.rhymesWith
- Finds something that rhymes with another word. Invoked by putting '/ rhymesWith' and then the word that you want to find a rhyme for. The program will give a variety of options for words that rhyme with the given word. You can choose which of those words you'd like to use by typing the chosen word, In which case that word will be added to the line, or you can type '/' to exit without picking an option.save
- Will save the program as a file so that you can edit it later with all poetry details such as rhyme scheme, etc. included. Doesn't save as a txt file, but instead as something easily loaded by PoemWriter. Invoked by typing '/ save'.export
- Saves just the lines as a txt file. Does not keep poetry details. Invoked by typing '/ export'.load
- Loads a previously saved file. Invoked by typing '/ load' and then selecting the file.import
- Imports a poem and adopts its style to the poetry, so you can model a new poem off of its style of poetry.rhymeScheme
- Sets the rhyme scheme for future editing.syllableCount
- Sets the number of syllables for future editing.
Planned Improvements:
- Refactoring. PoemWriter needs to be split into multiple files, although I'm also open to replacing the substitute Java datatypes that we made (preceded by "DS", i.e. DSArrayList) with the standard datatypes. I would follow the principles of the Clean Code book to better understand what would simplify this project.
- Removing any sarcastic remark in the PoemWriter std_out. "I'll take that as a no", "commands", "Dr. Hochberg says", etc.
- Improving UX by displaying progress, metrics etc and removing phoenetics arrays.
- Tidy up the "/ export" command to clearly explain the difference between the first prompt and the second prompt.
Possible Next Steps:
- Saving written poems to a cloud database instead of simply locally, implementing a rudimentary sign-in process to make writing poetry simpler.
- Scraping a poetry database for poem samples and parsing them for rhyme schemas using this library that I've developed.
- Ensure that you have Java installed already.
- clone this project to your local folder.
- If in VScode, you can simply select the poemwriter.java file and press the play button at the top right
- If not in VScode: javac PoemWriter.java java PoemWriter
- You can begin by typing "/ help" -> "/ commands" to learn which commands can power the project.
- Start the program with the above instructions.
- Type "/ rhymeScheme" to begin setting the rhyme scheme. Assigning a letter to a line means that line rhymes with all other lines assigned to the same letter... i.e. 'a' lines rhyme together.
- Type "/ syllableCount" to set the number of syllables in each line.
- Type the poem in its entirety, allowing for corrections in the file.
- After entering the last line based on rhymeScheme and syllableCount, the application won't allow any more entries.
- Type "/ export" and answer the prompts.