Fallback to previous, more approximative hashtag RE on older browsers (#14513)
Fixes #14511
This commit is contained in:
		
							parent
							
								
									1bedaf49a8
								
							
						
					
					
						commit
						ed22b53180
					
				
					 1 changed files with 24 additions and 16 deletions
				
			
		| 
						 | 
					@ -5,22 +5,30 @@ import PropTypes from 'prop-types';
 | 
				
			||||||
import { FormattedMessage } from 'react-intl';
 | 
					import { FormattedMessage } from 'react-intl';
 | 
				
			||||||
import { me } from '../../../initial_state';
 | 
					import { me } from '../../../initial_state';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const HASHTAG_SEPARATORS = "_\\u00b7\\u200c";
 | 
					const buildHashtagRE = () => {
 | 
				
			||||||
const ALPHA = '\\p{L}\\p{M}';
 | 
					  try {
 | 
				
			||||||
const WORD = '\\p{L}\\p{M}\\p{N}\\p{Pc}';
 | 
					    const HASHTAG_SEPARATORS = "_\\u00b7\\u200c";
 | 
				
			||||||
const APPROX_HASHTAG_RE = new RegExp(
 | 
					    const ALPHA = '\\p{L}\\p{M}';
 | 
				
			||||||
  '(?:^|[^\\/\\)\\w])#((' +
 | 
					    const WORD = '\\p{L}\\p{M}\\p{N}\\p{Pc}';
 | 
				
			||||||
  '[' + WORD + '_]' +
 | 
					    return new RegExp(
 | 
				
			||||||
  '[' + WORD + HASHTAG_SEPARATORS + ']*' +
 | 
					      '(?:^|[^\\/\\)\\w])#((' +
 | 
				
			||||||
  '[' + ALPHA + HASHTAG_SEPARATORS + ']' +
 | 
					      '[' + WORD + '_]' +
 | 
				
			||||||
  '[' + WORD + HASHTAG_SEPARATORS +']*' +
 | 
					      '[' + WORD + HASHTAG_SEPARATORS + ']*' +
 | 
				
			||||||
  '[' + WORD + '_]' +
 | 
					      '[' + ALPHA + HASHTAG_SEPARATORS + ']' +
 | 
				
			||||||
  ')|(' +
 | 
					      '[' + WORD + HASHTAG_SEPARATORS +']*' +
 | 
				
			||||||
  '[' + WORD + '_]*' +
 | 
					      '[' + WORD + '_]' +
 | 
				
			||||||
  '[' + ALPHA + ']' +
 | 
					      ')|(' +
 | 
				
			||||||
  '[' + WORD + '_]*' +
 | 
					      '[' + WORD + '_]*' +
 | 
				
			||||||
  '))', 'iu'
 | 
					      '[' + ALPHA + ']' +
 | 
				
			||||||
);
 | 
					      '[' + WORD + '_]*' +
 | 
				
			||||||
 | 
					      '))', 'iu'
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  } catch {
 | 
				
			||||||
 | 
					    return /(?:^|[^\/\)\w])#(\w*[a-zA-Z·]\w*)/i;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const APPROX_HASHTAG_RE = buildHashtagRE();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const mapStateToProps = state => ({
 | 
					const mapStateToProps = state => ({
 | 
				
			||||||
  needsLockWarning: state.getIn(['compose', 'privacy']) === 'private' && !state.getIn(['accounts', me, 'locked']),
 | 
					  needsLockWarning: state.getIn(['compose', 'privacy']) === 'private' && !state.getIn(['accounts', me, 'locked']),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue