function Ruler() {
                    // List of added rules. Each element is:
                    //
                    // {
                    //   name: XXX,
                    //   enabled: Boolean,
                    //   fn: Function(),
                    //   alt: [ name2, name3 ]
                    // }
                    //
                    this.__rules__ = [];

                    // Cached rule chains.
                    //
                    // First level - chain name, '' for default.
                    // Second level - diginal anchor for fast filtering by charcodes.
                    //
                    this.__cache__ = null;
                }
Ruler.at(name, fn [, options])
- name (String): rule name to replace.
- fn (Function): new rule function.
- options (Object): new rule options (not mandatory).

Replace rule by name with new function & options. Throws error if name not
found.

##### Options:

- __alt__ - array with names of "alternate" chains.

##### Example

Replace existing typorgapher replacement rule with new one:

```javascript
var md = require('markdown-it')();

md.core.ruler.at('replacements', function replace(state) {
  //...
});
```