I've also recently been experimenting with parsing an indent-based language -- specifically, a small subset of Slim (<http://slim-lang.com/>) -- I push to a stack when I see a tag, and pop based on the depth of the indendation.
Here's a working example: https://git.io/vig93 Brian