<commit_before># flowdock-text

Flowdock-text is a javascript utility for extracting and linkifying tags and urls in Flowdock. It is build upon Twitter's [twitter-text-js](https://github.com/twitter/twitter-text-js). Some twitter-text's functionality has been removed or altered.

## Usage
### Extraction

Hashtag extraction

    > FlowdockText.extractHashtags("hello #world");
    [ 'world' ]
    > FlowdockText.extractHashtagsWithIndices("hello #world");
    [ { hashtag: 'world', indices: [ 6, 12 ] } ]

Usertag extraction

    > FlowdockText.extractMentions("hello @Username");
    [ '@Username' ]
    > FlowdockText.extractMentionsWithIndices("hello @Username");
    [ { usertag: '@Username', indices: [ 6, 15 ] } ]

Url extraction

    > FlowdockText.extractUrls("hello http://www.example.com");
    [ 'http://www.example.com' ]
    > FlowdockText.extractUrlsWithIndices("hello http://www.example.com");
    [ { url: 'http://www.example.com', indices: [ 6, 28 ] } ]

Parse and process tags from a message

    > FlowdockText.getTagsFromMessage("@anyone seen this: http://www.example.com #cool");
    [ 'cool', ':url', ':user:everyone' ]
Parse and process tags from a message with optional array of user-objects

    > FlowdockText.getTagsFromMessage("@anyone seen this: http://www.example.com #cool", [{nick: "Username", id: 1, disabled: false}, {nick: "Other", id: 2, disabled: false}]);
    ["cool", ":url", ":user:everyone", ":unread:1", ":unread:2"]
Parse and process tags from a message with optional array of user-objects and me-object (which excludes :unread:my-id tag from the results)

    > FlowdockText.getTagsFromMessage("@anyone seen this: http://www.example.com #cool", [{nick: "Username", id: 1, disabled: false}, {nick: "Other", id: 2, disabled: false}], {nick: "Other", id: 2, disabled: false});
    [ 'cool', ':url', ':user:everyone', ':unread:1' ]

### Linkification

    > FlowdockText.autoLink("hello @Username #greets");
    'hello <a title="Search @Username" class="app-tag-link" href="#flowser/all/@Username">@Username</a> <a href="#flowser/all/greets" title="#greets" class="app-tag-link">#greets</a>'

## NPM

Install with: `npm install flowdock-text`

    > var FlowdockText = require("flowdock-text");
    > FlowdockText.extractUrlsWithIndices("cool http://www.example.com");
    [ { url: 'http://www.example.com', indices: [ 6, 28 ] } ]

## Tests
Tests can be run in browsers or with node.js

To run the tests in your default browser:

    rake test

To run the tests with node.js

    rake test_node

## Copyright and License

Copyright 2011 Twitter, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this work except in compliance with the License.<commit_msg>reformat readme<commit_after># flowdock-text

Flowdock-text is a javascript utility for extracting and linkifying tags and urls in Flowdock. It is build upon Twitter's [twitter-text-js](https://github.com/twitter/twitter-text-js). Some twitter-text's functionality has been removed or altered.

## Usage
### Extraction

Hashtag extraction

```javascript
FlowdockText.extractHashtags("hello #world");
[ 'world' ]
FlowdockText.extractHashtagsWithIndices("hello #world");
[ { hashtag: 'world', indices: [ 6, 12 ] } ]
```

Usertag extraction

```javascript
FlowdockText.extractMentions("hello @Username");
[ '@Username' ]
FlowdockText.extractMentionsWithIndices("hello @Username");
[ { usertag: '@Username', indices: [ 6, 15 ] } ]
```

Url extraction
```javascript
FlowdockText.extractUrls("hello http://www.example.com");
[ 'http://www.example.com' ]
FlowdockText.extractUrlsWithIndices("hello http://www.example.com");
[ { url: 'http://www.example.com', indices: [ 6, 28 ] } ]
```

Parse and process tags from a message
```javascript
FlowdockText.getTagsFromMessage("@anyone seen this: http://www.example.com #cool");
[ 'cool', ':url', ':user:everyone' ]
```

Parse and process tags from a message with optional array of user-objects
```javascript
var users = [
  {nick: "Username", id: 1, disabled: false},
  {nick: "Other", id: 2, disabled: false}
];
FlowdockText.getTagsFromMessage("@anyone seen this: http://www.example.com #cool", users);
[ 'cool', ':url', ':user:everyone', ':unread:1', ':unread:2' ]
```

Parse and process tags from a message with optional array of user-objects and me-object (which excludes :unread:my-id tag from the results)
```javascript
var users = [
  {nick: "Username", id: 1, disabled: false},
  {nick: "Other", id: 2, disabled: false}
];
var me = users[1];
FlowdockText.getTagsFromMessage("@anyone seen this: http://www.example.com #cool", users, me);
[ 'cool', ':url', ':user:everyone', ':unread:1' ]
```

### Linkification
```javascript
FlowdockText.autoLink("hello @Username #greets");
'hello <a title="Search @Username" class="app-tag-link" href="#flowser/all/@Username">@Username</a> <a href="#flowser/all/greets" title="#greets" class="app-tag-link">#greets</a>'
```

## NPM

Install with: `npm install flowdock-text`
```javascript
var FlowdockText = require("flowdock-text");
FlowdockText.extractUrlsWithIndices("cool http://www.example.com");
[ { url: 'http://www.example.com', indices: [ 6, 28 ] } ]
```

## Tests
Tests can be run in browsers or with node.js

To run the tests in your default browser:

    rake test

To run the tests with node.js

    rake test_node

## Copyright and License

Copyright 2011 Twitter, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this work except in compliance with the License.
{'fraction_non_alphanumeric': 0.16015200868621063, 'fraction_numerical': 0.009410061527325372, 'mean_word_length': 4.7995802728226655, 'pattern_counts': {'":': 4, '<': 11, '<?xml version=': 0, '>': 23, 'https://': 2, 'lorem ipsum': 0, 'www.': 18, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2780662', 'n_tokens_mistral': 1871, 'n_tokens_neox': 1713, 'n_words': 514}