]> cat aescling's git repositories - mastodon.git/commitdiff
Fix the hashtag judgment of the compose form to be the same as the server side (...
authorkedama <kedama@foresdon.jp>
Sun, 2 Aug 2020 09:19:43 +0000 (18:19 +0900)
committerGitHub <noreply@github.com>
Sun, 2 Aug 2020 09:19:43 +0000 (11:19 +0200)
app/javascript/mastodon/features/compose/containers/warning_container.js

index 8200a319f736e64f31cc51beb0a366d5dfa87fc8..947d20c5a55a0d41318a9d332e521914c7550643 100644 (file)
@@ -5,7 +5,22 @@ import PropTypes from 'prop-types';
 import { FormattedMessage } from 'react-intl';
 import { me } from '../../../initial_state';
 
-const APPROX_HASHTAG_RE = /(?:^|[^\/\)\w])#(\w*[a-zA-Z·]\w*)/i;
+const HASHTAG_SEPARATORS = "_\\u00b7\\u200c";
+const ALPHA = '\\p{L}\\p{M}';
+const WORD = '\\p{L}\\p{M}\\p{N}\\p{Pc}';
+const APPROX_HASHTAG_RE = new RegExp(
+  '(?:^|[^\\/\\)\\w])#((' +
+  '[' + WORD + '_]' +
+  '[' + WORD + HASHTAG_SEPARATORS + ']*' +
+  '[' + ALPHA + HASHTAG_SEPARATORS + ']' +
+  '[' + WORD + HASHTAG_SEPARATORS +']*' +
+  '[' + WORD + '_]' +
+  ')|(' +
+  '[' + WORD + '_]*' +
+  '[' + ALPHA + ']' +
+  '[' + WORD + '_]*' +
+  '))', 'iu'
+);
 
 const mapStateToProps = state => ({
   needsLockWarning: state.getIn(['compose', 'privacy']) === 'private' && !state.getIn(['accounts', me, 'locked']),