Skip to content

xaviervia/locco

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.