I like that you split up the responsibilities so that line counting was separate from parsing.