separate parser and output
make it simpler to add new paragraph types in a subclass
strip extra whitespace around newlines when parsing inline-level text fragments