• Stars
    star
    579
  • Rank 77,126 (Top 2 %)
  • Language
    CoffeeScript
  • License
    MIT License
  • Created almost 13 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Documentation generation, in the spirit of literate programming.

groc

Groc takes your documented code, and in an admission that people aren't machines, generates documentation that follows the spirit of literate programming. Take a look at the self-generated documentation, and see if it appeals to you!

It is very heavily influenced by Jeremy Ashkenas' docco, and is an attempt to further enhance the idea (thus, groc can't tout the same quick 'n dirty principles of docco).

Maintainers

Groc, unfortunately, does not have any active maintainers. If you are interested in picking up the torch, please toss me an email ([email protected]).

What does it give you?

Groc will:

  • Generate documentation from your source code, by displaying your Markdown formatted comments next to the code fragments that they document.

  • Submit your project's documentation to the github pages for your project.

  • Generate a searchable table of contents for all documented files and headers within your project.

  • Gracefully handle complex hierarchies of source code across multiple folders.

  • Read a configuration file so that you don't have to think when you want your documentation built; you just type groc.

How?

Installing groc

Groc depends on Node.js. Once you have those installed - and assuming that your node install came with npm - you can install groc via:

$ npm install -g groc

For those new to npm, -g indicates that you want groc installed as a global command for your environment. You may need to prefix the command with sudo, depending on how you installed node.

Using groc (CLI)

To generate documentation, just point groc to source files that you want docs for:

$ groc *.rb

Groc will also handle extended globbing syntax if you quote arguments:

$ groc "lib/**/*.coffee" README.md

By default, groc will drop the generated documentation in the doc/ folder of your project, and it will treat README.md as the index. Take a look at your generated docs, and see if everything is in order!

Once you are pleased with the output, you can push your docs to your github pages branch:

$ groc --github "lib/**/*.coffee" README.md

Groc will automagically create and push the gh-pages branch if it is missing.

There are additional options supported by groc, if you are interested.

Configuring groc (.groc.json)

Groc supports a simple JSON configuration format once you know the config values that appeal to you.

Create a .groc.json file in your project root, where each key maps to an option you would pass to the groc command. File names and globs are defined as an array with the key glob. For example, groc's own configuration is:

{
  "glob": ["lib/**/*.coffee", "README.md", "lib/styles/*/style.sass", "lib/styles/*/*.jade"],
  "github": true
}

From now on, if you call groc without any arguments, it will use your pre-defined configuration.

Literate programming?

Literate programming is a programming methodology coined by Donald Knuth. The primary tenet is that you write a program so that the structure of both the code and documentation align with your mental model of its behaviors and processes.

Groc aims to provide a happy medium where you can freely write your source files as structured documents, while not going out of your way to restructure the code to fit the documentation. Here are some suggested guidelines to follow when writing your code:

  • Try to keep the size of each source file down. It is helpful if each file fulfills a specific feature of your application or library.

  • Rather than commenting individual lines of code, write comments that explain the behavior of a given method or code block. Take advantage of the fact that comments can span that method.

  • Make gratuitous use of lists when explaining processes; step by step explanations are extremely easy to follow!

  • Break each source file into sections via headers. Don't be afraid to split source into even smaller files if it makes them more readable.

Writing documentation is hard; hopefully groc helps to streamline the process for you!

Known Issues

  • Groc does not fare well with files that have very long line lengths (minimized JavaScript being the prime offender). Make sure that you exclude them!

What's in the works?

Groc wants to:

More Repositories

1

Bumbler

Track the load progress of your Bundler-based projects
Ruby
619
star
2

readable-licenses

Make your open source license text more pleasant to read.
98
star
3

html-exports

JavaScript
43
star
4

SMJobKit

Objective-C
28
star
5

polymer-rails

Support for Polymer-enabled web components in Rails
Ruby
20
star
6

node-autorequire

Automatically requires source for a module/project, provided you follow a convention.
CoffeeScript
17
star
7

xcode-templates

(hopefully) Best practice Xcode templates that suck less.
Ruby
14
star
8

ruby-gumbo

A ruby binding for the gumbo html5 parser
C
12
star
9

ios-crash-course

Objective-C
9
star
10

paper-theme-experiment

An experiment making a core-style theme as an element
JavaScript
5
star
11

sprintly-rb

"A Ruby client to sprint.ly's API"
Ruby
4
star
12

tracks

Rails project templates, the way I like them.
Ruby
3
star
13

hackish-sprockets-htmlimports

Sprockets support for HTML imports
Ruby
3
star
14

rb-placemat

Ruby
2
star
15

dotum

Dotum manages your dotfiles and allows for piecemeal sharing.
Ruby
2
star
16

old-home

Shell
1
star
17

active-admin-leaks-sample

Test case showing reference leaks in ActiveAdmin
Ruby
1
star
18

yourewrong-imright

You're wrong. I'm right.
JavaScript
1
star
19

fireballed

A color theme inspired by Daring Fireball
Ruby
1
star
20

cli-forge

Beat your CLI tool suites into submission!
Ruby
1
star
21

atom-nevish-ui

CSS
1
star
22

spate

Utility methods to reduce the weight of JavaScript control flow logic.
CoffeeScript
1
star
23

oni-darkness-not-excluded

Illuminate the depths of your asteroid and conquer it with the power of light!
C#
1
star
24

groc-theme

JavaScript
1
star
25

parcel-plugin-service-worker-manifest

TypeScript
1
star