mdbook-shiftinclude 0.2.0

mdbook preprocessor for file inclusion with shift
# 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]
```