def start
      @template_name, template_data = parse

      snippet = Compiler.build(template_name, template_data)

      edit(snippet) || printer.out(snippet)
    rescue => exception
      printer.err exception.message
      help_and_exit
    end
def start
      @template_name, template_data = parse

      snippet = Compiler.build(template_name, template_data)

      edit(snippet) || printer.out(snippet)
    rescue => exception
      printer.err exception.message
      help_and_exit
    end
Internal: creates a new `Snp::CLI` instance.

 params  - array of arguments.
 printer - the printer object through which feedback messages are sent to.
           The passed object must respond to `out` and `err` for normal
           and error situations, respectively.
 Internal: actually does the parsing job and compiles the snippet.