diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/recite.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/recite.rs b/src/recite.rs index 9860eff..a655aa7 100644 --- a/src/recite.rs +++ b/src/recite.rs @@ -609,6 +609,28 @@ impl Poem { word.clear(); } + // The character is a newline (may happen if parsing from a file) + Some(char) if char == '\n' => { + // If there are chars on the word stack, push that word + // onto the stanza + if !word.is_empty() { + stanza.push(word.iter().collect()); + } + + // A newline indicates the end of a verse + if !stanza.is_empty() { + verses.push(Verse::new( + Stanza::new(stanza.clone()), + Meter::String, + Verse::couplet(prev), + )); + } + + // Clear the stacks + stanza.clear(); + word.clear(); + } + // The character is whitespace Some(char) if char == ' ' || char == '\t' => { // If there are chars on the word stack, push that word |