diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2017-06-10 15:06:50 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-10 15:06:50 +0200 |
commit | 8015fd76003419bd3ccca585ffe4416312800fe0 (patch) | |
tree | f1995858c87e85827e2ef3267aa61d3f2bed6f8b /app/javascript | |
parent | 4919b89ab83f8eee43b89ff4786eae46bf2fa30e (diff) |
Improve RTL detection (#3682)
- Use plaintext - Strip out URLs - Strip out mentions - Strip out hashtags - Strip out whitespace from "overall" count - Consistent between JS and Ruby
Diffstat (limited to 'app/javascript')
-rw-r--r-- | app/javascript/mastodon/components/status_content.js | 2 | ||||
-rw-r--r-- | app/javascript/mastodon/rtl.js | 6 |
2 files changed, 6 insertions, 2 deletions
diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index 06e25b36a..d22854288 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -100,7 +100,7 @@ class StatusContent extends React.PureComponent { const spoilerContent = { __html: emojify(escapeTextContentForBrowser(status.get('spoiler_text', ''))) }; const directionStyle = { direction: 'ltr' }; - if (isRtl(status.get('content'))) { + if (isRtl(status.get('search_index'))) { directionStyle.direction = 'rtl'; } diff --git a/app/javascript/mastodon/rtl.js b/app/javascript/mastodon/rtl.js index 8f14bb338..00870a15d 100644 --- a/app/javascript/mastodon/rtl.js +++ b/app/javascript/mastodon/rtl.js @@ -17,11 +17,15 @@ export function isRtl(text) { return false; } + text = text.replace(/(?:^|[^\/\w])@([a-z0-9_]+(@[a-z0-9\.\-]+)?)/ig, ''); + text = text.replace(/(?:^|[^\/\w])#([\S]+)/ig, ''); + text = text.replace(/\s+/g, ''); + const matches = text.match(rtlChars); if (!matches) { return false; } - return matches.length / text.trim().length > 0.3; + return matches.length / text.length > 0.3; }; |