defmodule Saxy do alias Saxy.SAXState def parse(string, init_state, handler) when is_binary(string) do sax_state = %SAXState{ user_state: init_state, sax_handler: handler } {:ok, reader} = Saxy.BinReader.start_link(string) lexer = {Saxy.BinReader, reader} case Saxy.Parser.match(lexer, :document, sax_state) do {:ok, {:document, _}, sax_state} -> {:ok, sax_state.user_state} end end end