# orion.core.linkScanner

Link scanners are declarative services that specify patterns of text to replace with link anchors. Scanners contribute a regular expression pattern to match in the source text. They then provide a link to be inserted for each match. These scanners are used by the text link service to convert text into a DOM node with appropriate anchor and text nodes as children.

## Service methods

None.

## Service attributes

Implementations of `orion.core.linkScanner` must define the following attributes:

pattern
  A regular expression string to locate links in the source text
words
  A `Number` identifying the number of white-space delimited words in each match
anchor
  A template of the URL for each match. The template may contain variables of the form %1, %2, etc, which are substituted by each of the words in the match.

## Examples

The following scanner will replace text of the form "bug 123456" with links of the form " https://bugs.eclipse.org/123456

    var provider = new eclipse.PluginProvider();
    var serviceImpl = {};
    var serviceProperties = {
      pattern: "bug\\s\\d{4,7}",
      words: 2,
      anchor: "https://bugs.eclipse.org/%2"
    };
    provider.registerServiceProvider("orion.core.linkScanner", serviceImpl, serviceProperties);
    provider.connect();

This scanner will replace email addresses with mailto: URLs:

    var provider = new eclipse.PluginProvider();
    var serviceImpl = {};
    var serviceProperties = {
      pattern: "\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b",
      words: 1,
      anchor: "mailto:%1"
    };
    provider.registerServiceProvider("orion.core.linkScanner", serviceImpl, serviceProperties);
    provider.connect();