View Source FancyFences.Processors (fancy_fences v0.3.1)
Common fence processors.
Summary
Functions
A fence processor for documenting fence processors usage.
Formats the given code block.
Embeds the original code and the evaluated result.
Embeds the original code and the evaluated results supporing multiple inspection points.
Functions
A fence processor for documenting fence processors usage.
This can be used for documenting fence processors. It return an admonition block containing both the sample code and the output of the fence processor.
Usage
It expects a map with the following key-value pairs:
block
- the code block to use as an exampleprocessor
- an anonymous function with the processor that will be used.
For example:
```fence-processor
%{
block: "Enum.map([1, 2, 3], fn x -> 2*x end)",
processor: fn block -> FancyFences.Processors.inspect_code(block) end
}
```
Embedded code
A fenced code block of the form:
```lang %{ block: "1 + 1", processor: fn block -> "**Code:** `"<> block <> "`" end } ```
will be transformed to:
Embedded code
A fenced code block of the form:
```lang 1 + 1 ```
will be transformed to:
Code:
1 + 1
where
lang
the defined code language for this fence processor in yourmix.exs
.where
lang
the defined code language for this fence processor in yourmix.exs
.
Notice that above we used fence_processor_doc/1
to document itself, that's why
we have the nested admonition block.
Formats the given code block.
Embedded code
A fenced code block of the form:
```lang for x <- [1, 2, 3] do 2 * x end ```
will be transformed to:
for x <- [1, 2, 3] do 2 * x end
where
lang
the defined code language for this fence processor in yourmix.exs
.
Embeds the original code and the evaluated result.
Options
:format
(boolean
) - If set totrue
the code blocks will be formatted before inection. Defaults tofalse
.
Embedded code
A fenced code block of the form:
```lang Enum.map([1, 2, 3, 4], fn x -> 2*x end) ```
will be transformed to:
Enum.map([1, 2, 3, 4], fn x -> 2*x end)
[2, 4, 6, 8]
where
lang
the defined code language for this fence processor in yourmix.exs
.
Embeds the original code and the evaluated results supporing multiple inspection points.
Options
:format
(boolean
) - If set totrue
the code blocks will be formatted before inection. Defaults tofalse
.:iex_prefix
(boolean
) - If set totrue
aniex>
prefix will be added to the original code lines similar to doc tests. Defaults tofalse
.:separator
(string
) - The separator for inspection points. The original code will be split on these separators and an inspect statement will be added after each one. Defaults to>>>
.
Embedded code
A fenced code block of the form:
```lang list = [1, 2, 3, 4] Enum.map(list, fn x -> 2*x end) >>> Enum.map(list, fn x -> 3 + x end) >>> Enum.reduce(list, 0, fn x, acc -> x + acc end) ```
will be transformed to:
iex> list = [1, 2, 3, 4] ...> Enum.map(list, fn x -> 2 * x end) [2, 4, 6, 8] iex> Enum.map(list, fn x -> 3 + x end) [4, 5, 6, 7] iex> Enum.reduce(list, 0, fn x, acc -> x + acc end) 10
where
lang
the defined code language for this fence processor in yourmix.exs
.
Notice that the last statement is inspected by default and there is no need to add a separator.