#External
SkXXX
bmh_SkXXX
CL
Go
Visual_Studio
##

#Topic Bookmaker

How to use the Bookmaker utility.

Install #A Go # https://golang.org/doc/install ## if needed.  
Get the fiddle command line interface tool.
By default this will appear in your home directory.

#Code
$ go get go.skia.org/infra/fiddle/go/fiddlecli
##

Build Bookmaker.

#Code
$ ninja -C out/dir bookmaker
##

Generate an starter Bookmaker file from an existing include.
This writes SkXXX.bmh in the current directory, which is
out/dir/obj/ from an IDE.

#Code
$ ./out/dir/bookmaker -t -i include/core/SkXXX.h
##

Copy SkXXX.bmh to docs.
Use your favorite editor to fill out docs/SkXXX.bmh.

#Subtopic Style

Documentation consists of cross references, descriptions, and examples.
All structs, classes, enums, their members and methods, functions, and so on,
require descriptions. Most also require examples.

All methods and functions should include examples if practical.

Descriptions start with an active verb. Descriptions are complete, punctuated
sentences unless they describe parameters or return values. Parameters and
returned values are described by phrases that start lower case and do not
include trailing punctuation.

Descriptions are not self-referential; they do not include the thing they
describe. Descriptions may contain upper case references to definitions
but otherwise should be free of jargon.

Descriptions may contain code and formulas, each bracketed by markup.

Similar items may be grouped into topics. Topics may include subtopics.

Each document begins with one or more indices that include the contents of
that file. A class reference includes an index listing contained topics, 
a separate listing for constructors, one for methods, and so on.

Class methods contain a description, any parameters, any return value,
an example, and any cross references.

Each method must contain either one or more examples or markup indicating
that there is no example.

##

Generate fiddle.json from all examples, including the ones you just wrote.
Error checking is syntatic: starting keywords are closed, keywords have the
correct parents.
If you run Bookmaker inside Visual_Studio, you can click on errors and it
will take you to the source line in question.

#Code
$ ./out/dir/bookmaker -e fiddle.json -b docs
##

Once complete, run fiddlecli to generate the example hashes.
Errors are contained by the output but aren't reported yet.

#Code
$ $GOPATH/bin/fiddlecli --input fiddle.json --output fiddleout.json
##

Generate bmh_SkXXX.md from SkXXX.bmh and fiddleout.json.
Error checking includes: undefined references, fiddle compiler errors,
missing or mismatched printf output.
Again, you can click on any errors inside Visual_Studio.

#Code
$ ./out/dir/bookmaker -r site/user/api -b docs -f fiddleout.json
##

The original include may have changed since you started creating the markdown.
Check to see if it is up to date.
This reports if a method no longer exists or its parameters have changed.

#Code
$ ./out/dir/bookmaker -x -b docs/SkXXX.bmh -i include/core/SkXXX.h
##

Generate an updated include header.
This writes the updated SkXXX.h to the current directory.

#Code
$ ./out/dir/bookmaker -p -b docs -i include/core/SkXXX.h
##

#Subtopic Bugs

Bookmaker bugs are tracked #A here # bug.skia.org/6898 ##.

##

#Topic Bookmaker ##
