index.js
function Limon (input, options) {
  if (!(this instanceof Limon)) {
    return new Limon(input, options)
  }

  lazy.use(this, {
    fn: function (app, opts) {
      app.options = lazy.utils.extend(app.options, opts)
    }
  })

  this.defaults(input, options)
  this.use(lazy.plugin.prevNext())
}
function Limon (input, options) {
  if (!(this instanceof Limon)) {
    return new Limon(input, options)
  }

  lazy.use(this, {
    fn: function (app, opts) {
      app.options = lazy.utils.extend(app.options, opts)
    }
  })

  this.defaults(input, options)
  this.use(lazy.plugin.prevNext())
}
> Initialize `Limon` with `input` and `options`.
Both are completely optional. You can pass plugins
and tokens to `options`.

**Example**

```js
var Limon = require('limon').Limon
var lexer = new Limon('foo bar')

// or pass only options
var limon = new Limon({ foo: 'bar' })
var tokens = limon.tokenize('baz qux')
```

@param {String} `input` String value to tokenize, or if object it is assumed `options`.
@param {Object} `options` Optional options, use it to pass plugins or tokens.
@api public