# Table of contents
- [`edamame.core`](#edamame.core)
- [`continue`](#edamame.core/continue) - Singleton value to be used as return value in :read-cond fn to indicate to continue parsing the next form.
- [`get-column-number`](#edamame.core/get-column-number)
- [`get-line-number`](#edamame.core/get-line-number)
- [`iobj?`](#edamame.core/iobj?) - Returns true if obj can carry metadata.
- [`normalize-opts`](#edamame.core/normalize-opts) - Expands opts into normalized opts, e.g.
- [`parse-next`](#edamame.core/parse-next) - Parses next form from reader.
- [`parse-next+string`](#edamame.core/parse-next+string) - Parses next form from reader.
- [`parse-ns-form`](#edamame.core/parse-ns-form) - Parses ns-form, an s-expression, into map with: - :name: the name of the namespace - :aliases: a map of aliases to lib names.
- [`parse-string`](#edamame.core/parse-string) - Parses first EDN value from string.
- [`parse-string-all`](#edamame.core/parse-string-all) - Like parse-string but parses all values from string and returns them in a vector.
- [`reader`](#edamame.core/reader) - Coerces x into indexing pushback-reader to be used with parse-next.
- [`source-reader`](#edamame.core/source-reader) - Coerces x into source-logging-reader to be used with parse-next.
-----
# edamame.core
## `continue`
Singleton value to be used as return value in `:read-cond` fn to indicate to continue parsing the next form
Source
## `get-column-number`
``` clojure
(get-column-number reader)
```
Function.
Source
## `get-line-number`
``` clojure
(get-line-number reader)
```
Function.
Source
## `iobj?`
``` clojure
(iobj? obj)
```
Function.
Returns true if obj can carry metadata.
Source
## `normalize-opts`
``` clojure
(normalize-opts opts)
```
Function.
Expands `opts` into normalized opts, e.g. `:all true` is expanded
into explicit options.
Source
## `parse-next`
``` clojure
(parse-next reader)
(parse-next reader normalized-opts)
```
Function.
Parses next form from reader. Accepts same opts as [`parse-string`](#edamame.core/parse-string),
but must be normalized with [`normalize-opts`](#edamame.core/normalize-opts) first.
Source
## `parse-next+string`
``` clojure
(parse-next+string reader)
(parse-next+string reader normalized-opts)
```
Function.
Parses next form from reader. Accepts same opts as [`parse-string`](#edamame.core/parse-string),
but must be normalized with [`normalize-opts`](#edamame.core/normalize-opts) first.
Returns read value + string read (whitespace-trimmed).
Source
## `parse-ns-form`
``` clojure
(parse-ns-form ns-form)
```
Function.
Parses `ns-form`, an s-expression, into map with:
- `:name`: the name of the namespace
- `:aliases`: a map of aliases to lib names
Source
## `parse-string`
``` clojure
(parse-string s)
(parse-string s opts)
```
Function.
Parses first EDN value from string.
Supported parsing options can be `true` for default behavior or a function
that is called on the form and returns a form in its place:
`:deref`: parse forms starting with `@`. If `true`, the resulting
expression will be parsed as `(deref expr)`.
`:fn`: parse function literals (`#(inc %)`). If `true`, will be parsed as `(fn [%1#] (inc %1#))`.
`:quote`: parse quoted expression `'foo`. If `true`, will be parsed as `(quote foo)`.
`:read-eval`: parse read-eval (`#=(+ 1 2 3)`). If `true`, the
resulting expression will be parsed as `(read-eval (+ 1 2 3))`.
`:regex`: parse regex literals (`#"foo"`). If `true`, defaults to
`re-pattern`.
`:var`: parse var literals (`#'foo`). If `true`, the resulting
expression will be parsed as `(var foo)`.
`:map`: parse map literal using a custom function, e.g. `flatland.ordered.map/ordered-map`
`:set`: parse set literal using a custom function, e.g. `flatland.ordered.set/ordered-set`
`:syntax-quote`: parse syntax-quote (`(+ 1 2 3)`). Symbols get
qualified using `:resolve-symbol` which defaults to `identity`:
```clojure
(parse-string "`x" {:syntax-quote {:resolve-symbol #(symbol "user" (str %))}})
;;=> (quote user/x)
```
By default, also parses `unquote` and `unquote-splicing` literals,
resolving them accordingly.
`:unquote`: parse unquote (`~x`). Requires `:syntax-quote` to be set.
If `true` and not inside `syntax-quote`, defaults to `clojure.core/unquote`.
`:unquote-splicing`: parse unquote-splicing (`~@x`). Requires `:syntax-quote`
to be set. If `true` and not inside `syntax-quote`, defaults
to `clojure.core/unquote-splicing`.
`:all`: when `true`, the above options will be set to `true` unless
explicitly provided.
Supported options for processing reader conditionals:
`:read-cond`: - `:allow` to process reader conditionals, or
`:preserve` to keep all branches
`:features`: - persistent set of feature keywords for reader conditionals (e.g. `#{:clj}`).
`:auto-resolve`: map of alias to namespace symbols for
auto-resolving keywords. Use `:current` as the alias for the current
namespace.
`:auto-resolve-ns`: when `true`, track `ns` forms while parsing and
use their aliases to auto-resolve keywords like `::str/foo`, without
providing `:auto-resolve` explicitly. Combines with `:auto-resolve`:
tracked `ns` aliases are tried first, falling back to the
`:auto-resolve` map.
`:readers`: data readers.
`:postprocess`: a function that is called with a map containing
`:obj`, the read value, and `:loc`, the location metadata. This can
be used to handle objects that cannot carry metadata differently. If
this option is provided, attaching location metadata is not
automatically added to the object.
`:location?`: a predicate that is called with the parsed
object. Should return a truthy value to determine if location
information will be added.
`:uneval`: a function of a map with `:uneval` and `:next` to preserve `#_` expressions by combining them with next value.
`:suppress-read`: counterpart to *suppress-read* in clojure
Additional arguments to tools.reader may be passed with
`:tools.reader/opts`, like `:readers` for passing reader tag functions.
Source
## `parse-string-all`
``` clojure
(parse-string-all s)
(parse-string-all s opts)
```
Function.
Like [`parse-string`](#edamame.core/parse-string) but parses all values from string and returns them
in a vector.
Source
## `reader`
``` clojure
(reader x)
```
Function.
Coerces x into indexing pushback-reader to be used with
parse-next. Accepts string or `java.io.Reader`
Source
## `source-reader`
``` clojure
(source-reader x)
```
Function.
Coerces x into source-logging-reader to be used with
parse-next. Accepts string or `java.io.Reader`
Source