= How to Contribute to the Reference Manual

The Spring Framework reference manual uses http://asciidoctor.org/[asciidoctor]. This
document describes how to contribute documentation updates.

== Building with Gradle

You can build the documentation using Gradle using the `asciidoctor` task. For example,
from the project root execute the following command:

[indent=0]
----
	./gradlew asciidoctor
----

The generated reference manual will then be available at
`build/asciidoc/html5/index.html`.

== Live Editing

One of the nice features about using Asciidoctor is the support for live editing.

You will find a Guardfile already present at
`spring-framework/src/docs/asciidoc/Guardfile`. First, follow the setup instructions
within the
http://asciidoctor.org/docs/editing-asciidoc-with-live-preview/[Editing AsciiDoc
with Live Preview] document. Once you have done that, there are additional gems to
install to make it work (assuming that you are using http://livereload.com/[LiveReload]):

[indent=0]
----
	gem install guard-rspec guard-livereload
----

When running `guard start` within the `src/asciidoc/` folder, any changes to the
`src/asciidoc/index.adoc` file are automatically written to
`src/asciidoc/build/index.html`.

== Troubleshooting

* If you are using LiveReload, select _Allow access to file URLs_ in the
LiveEdit plugin options of your browser.
* The icon used to enable _LiveReload_ can be a bit confusing. The dot is empty when it
is disabled and full when the plugin is active. Make sure to enable it on the tab
displaying the `index.html` file.
* Ensure you are _not_ running `guard start` at all, as two instances could not run at
the same time. To exit a current session in a clean way, type `e` in the shell.

== Documentation Notes

Some notes on the documentation.

* Documentation is wrapped at 90 chars. Ensure that you manually wrap your edits.
* Tabs are used for indentation. Do not use spaces.
* Follow the existing style when inserting `source` blocks.

Here are some useful resources for working with Asciidoctor:
* http://asciidoctor.org/docs/asciidoc-syntax-quick-reference/[Asciidoctor Quick Reference]
* http://asciidoctor.org/docs/user-manual/[Asciidoctor Manual]
* http://asciidoctor.org/docs/asciidoc-writers-guide/[Asciidoctor Writers Guide]
