Simple documentation extractor
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
example
src
task
.gitignore
LICENSE
README.md
locco.js
package.json

README.md

locco

Codeship status

Simple documentation extractor.

Usage

locco --adapter=markdown --source=**/*.js --comment=// \
      --escape=! --adapter-readme=locco.js
  • adapter: The adapter to be used. Locco searches for adapter matching the locco-<name> pattern. Install markdown adapter with npm install -g locco-markdown
  • source: The glob pattern matching the files to be parsed.
  • optional comment: Start of the comment line. Defaults to //
  • optional escape: Characters that right after the start of comment indicate that the comment is not documentation.
  • dependant on adapter adapter-<property>: option(s) sent to the adapter

Or programmatically:

var locco = require("locco")
var loccoMarkdown = require("locco-markdown")

locco({
  source: "**/*.js",
  commentStart: "//",
  escapeSequence: "!",
  adapter: new loccoMarkdown({
    readme: "locco.js"
  })
})

When used programmatically, all properties are required.

Installation

npm install -g locco

Then you need to install some adapter for it or add your own.

Adapters

Look for NPMs starting with locco-.

Known adapters

Writing an adapter

To just log each line to the console:

var locco = require("locco");

var loggerAdapter = {
  comment: function (data) {
    console.log("From file: " + data.file.path)
    console.log("...a comment line: " + data.comment)
  },

  code: function (data) {
    console.log("From file: " + data.file.path)
    console.log("...a code line: " + data.code)
  }
}

locco({
  source: "**/*.rb",
  commentStart: "#",
  escapeSequence: "!",
  adapter: loggerAdapter
})

If you want to write to a file, the adapter should implement the event emitter interface (use Mediador if you don't know how to implement one) and emit post events with each line to be written.

var locco = require("locco")
var Mediador = require("mediador")

var loggerAdapter = {
  comment: function (data) {
    console.log("From file: " + data.file.path)
    console.log("...a comment line: " + data.comment)
    this.emit("post", [
      "destination.file.html",
      "<p>" + data.comment + "</p>"
    ])
  },

  code: function (data) {
    console.log("From file: " + data.file.path)
    console.log("...a code line: " + data.code)
    this.emit("post", [
      "destination.file.html",
      "<p><code>" + data.code + "</code></p>"
    ])
  }
}

loggerAdapter.on     = Mediador.prototype.on
loggerAdapter.off    = Mediador.prototype.off
loggerAdapter.emit   = Mediador.prototype.emit

locco({
  source: "**/*.rb",
  commentStart: "#",
  escapeSequence: "!",
  adapter: loggerAdapter
})

License

Copyright 2014 Xavier Via

ISC license.

See LICENSE attached.