Current section
Files
Jump to
Current section
Files
lib/renewex.ex
defmodule Renewex do
@moduledoc """
The `Renewex` module provides functionality for parsing [Renew](http://renew.de) source files (*.rnw).
"""
alias Renewex.Parser
alias Renewex.Tokenizer
@doc """
Parses the content of a .rnw file saved by [Renew](http://renew.de).
## Parameters
- `input`: The content of the file as string
## Returns
- `{:ok, root, refs}`: On success, returns the root of the parsed document tree and a list of references.
- `{:error, reason}`: On failure, returns an error tuple with the reason for failure.
"""
def parse_string(input) do
with {:ok, document, parser} <-
input
|> Tokenizer.scan()
|> Tokenizer.skip_whitespace()
|> Parser.detect_document_version()
|> Parser.parse_storable(nil, false)
|> Parser.try_skip([:int, :int, :int, :int]),
{:ok, refs} <- Parser.finalize(parser) do
{:ok, document, refs}
else
e -> e
end
end
end