pencil-1.0.1: examples/Docs/site/guides/static-assets.markdown
# Dealing with Static Assets
Some files don't need any special manipulation. We just want to either copy-and-paste the files from our source directory to the output directory, or a straight-forward conversion (e.g. SCSS to CSS) without needing pages and structures and environment variables.
Pencil understands this, and supplies a couple of functions to make this easy. The [Hackage documentation](http://hackage.haskell.org/package/pencil/docs/Pencil.html#t:Resource) has lots of examples. You can also look at the [Complex example](https://github.com/elben/pencil/tree/master/examples/Complex), which tests all of these scenarios.
If you have a folder of mixed assets like SCSS files and images, you can use [`loadAndRender`](http://hackage.haskell.org/package/pencil/docs/Pencil.html#v:loadAndRender):
```haskell
loadAndRender "assets/"
loadAndRender "profile-pic.jpg"
```
Convertible files will be converted, but binary files are copy-and-pasted through.
If you have files that you want to render *without* any conversion, like a Markdown file that you want to *keep as* Markdown, use [`passthrough`](http://hackage.haskell.org/package/pencil/docs/Pencil.html#v:loadAndRender):
```haskell
passthrough "assets/" >>= render
passthroguh "example.markdown" >>= render
```
You can also combine these functions with file-path-changing functions like `move` and `rename`:
```haskell
move "assets/example.markdown" <$> passthrough "assets/ex.markdown" >>= render
```
We use the functor `<$>` function (i.e. `fmap`) because `passthrough` has the type `FilePath -> PencilApp Resource`.