# mdbook-shiftinclude
A preprocessor for [mdbook](https://github.com/rust-lang/mdBook) for including portions of files,
but with the contents of the file shifted.
The `{{#shiftinclude }}` command extends the
[syntax](https://rust-lang.github.io/mdBook/format/mdbook.html#including-files) of the normal `{{#include }}` command to
include a shift indicator. This is followed by a colon, and then the normal `include` syntax follows.
- A number, indicating the amount to shift.
- A positive number shifts right by prepending that number of spaces to each line.
- A negative number shifts left by removing that number of characters from the start of
each line (regardless of whether they are spaces or not!).
- `auto`, which indicates that any block of whitespace that is common to all (non-empty) lines
in the included text will be removed.
So for an input file `somefile.txt`:
```text
Indent
More Indent
Back
```
The following outputs are possible:
- `{{#shiftinclude auto:somefile.txt}` gives
```text
Indent
More Indent
Back
```
- `{{#shiftinclude 2:somefile.txt}` gives
```text
Indent
More Indent
Back
```
- `{{#shiftinclude -2:somefile.txt}` gives
```text
Indent
More Indent
Back
```
- `{{#shiftinclude -4:somefile.txt}` gives
```text
dent
More Indent
ck
```
## Installation
To use, install the tool
```sh
cargo install mdbook-shiftinclude
```
and add it as a preprocessor in `book.toml`:
```toml
[preprocessor.shiftinclude]
```