function LinkifyIt(schemas) {
  if (!(this instanceof LinkifyIt)) {
    return new LinkifyIt(schemas);
  }

  // Cache last tested result. Used to skip repeating steps on next `match` call.
  this.__index__          = -1;
  this.__last_index__     = -1; // Next scan position
  this.__schema__         = '';
  this.__text_cache__     = '';

  this.__schemas__        = assign({}, defaultSchemas, schemas);
  this.__compiled__       = {};

  this.__tlds__           = tlds_default;
  this.__tlds_replaced__  = false;

  this.re = {};

  compile(this);
}
new LinkifyIt(schemas)
- schemas (Object): Optional. Additional schemas to validate (prefix/validator)

Creates new linkifier instance with optional additional schemas.
Can be called without `new` keyword for convenience.

By default understands:

- `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links
- "fuzzy" links and emails (example.com, foo@bar.com).

`schemas` is an object, where each key/value describes protocol/rule:

- __key__ - link prefix (usually, protocol name with `:` at the end, `skype:`
  for example). `linkify-it` makes shure that prefix is not preceeded with
  alphanumeric char and symbols. Only whitespaces and punctuation allowed.
- __value__ - rule to check tail after link prefix
  - _String_ - just alias to existing rule
  - _Object_
    - _validate_ - validator function (should return matched length on success),
      or `RegExp`.
    - _normalize_ - optional function to normalize text & url of matched result
      (for example, for @twitter mentions).