1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 | 'use strict';
|
12 |
|
13 | var TokenizeUtil = require("fbjs/lib/TokenizeUtil");
|
14 |
|
15 | var punctuation = TokenizeUtil.getPunctuation();
|
16 |
|
17 |
|
18 |
|
19 |
|
20 | var CHAMELEON_CHARS = "['\u2018\u2019]";
|
21 |
|
22 |
|
23 | var WHITESPACE_AND_PUNCTUATION = '\\s|(?![_])' + punctuation;
|
24 | var DELETE_STRING = '^' + '(?:' + WHITESPACE_AND_PUNCTUATION + ')*' + '(?:' + CHAMELEON_CHARS + '|(?!' + WHITESPACE_AND_PUNCTUATION + ').)*' + '(?:(?!' + WHITESPACE_AND_PUNCTUATION + ').)';
|
25 | var DELETE_REGEX = new RegExp(DELETE_STRING);
|
26 | var BACKSPACE_STRING = '(?:(?!' + WHITESPACE_AND_PUNCTUATION + ').)' + '(?:' + CHAMELEON_CHARS + '|(?!' + WHITESPACE_AND_PUNCTUATION + ').)*' + '(?:' + WHITESPACE_AND_PUNCTUATION + ')*' + '$';
|
27 | var BACKSPACE_REGEX = new RegExp(BACKSPACE_STRING);
|
28 |
|
29 | function getRemovableWord(text, isBackward) {
|
30 | var matches = isBackward ? BACKSPACE_REGEX.exec(text) : DELETE_REGEX.exec(text);
|
31 | return matches ? matches[0] : text;
|
32 | }
|
33 |
|
34 | var DraftRemovableWord = {
|
35 | getBackward: function getBackward(text) {
|
36 | return getRemovableWord(text, true);
|
37 | },
|
38 | getForward: function getForward(text) {
|
39 | return getRemovableWord(text, false);
|
40 | }
|
41 | };
|
42 | module.exports = DraftRemovableWord; |
\ | No newline at end of file |