locco

locco =====

locco

Simple documentation extractor.

locco --adapter=markdown --source=**/*.js --commentStart=// \
      --escapeSequence=! --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 commentStart: Start of the comment line. Defaults to //
  • optional escapeSequence: Characters that right after the start of comment indicate that the comment is not documentation.
  • dependant on adapter adapter-<property>: option 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"
  })
})
npm install -g locco

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

Look for NPMs starting with locco-.

To just log each line to the console:

var locco = require("locco");
 
var loggerAdapter = {
  commentfunction (data) {
    console.log("From file: " + data.file.path)
    console.log("...a comment line: " + data.comment)
  },
 
  codefunction (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 = {
  commentfunction (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>"
    ])
  },
 
  codefunction (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
})

Copyright 2014 Xavier Via

ISC license.

See LICENSE attached.