From 161e776cf7a900b56c7e8acf4393c63c6c90d666 Mon Sep 17 00:00:00 2001 From: BrokenEagle Date: Sat, 7 Mar 2020 06:10:50 +0000 Subject: [PATCH] Add utility regexp split function for non-whitespace words --- app/javascript/src/javascripts/blacklists.js | 9 ++++----- app/javascript/src/javascripts/posts.js.erb | 4 ++-- app/javascript/src/javascripts/related_tag.js | 12 +++++------- app/javascript/src/javascripts/utility.js | 4 ++++ 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/app/javascript/src/javascripts/blacklists.js b/app/javascript/src/javascripts/blacklists.js index 482b26595..5f4dc3595 100644 --- a/app/javascript/src/javascripts/blacklists.js +++ b/app/javascript/src/javascripts/blacklists.js @@ -15,8 +15,7 @@ Blacklist.parse_entry = function(string) { "hits": 0, "min_score": null }; - var matches = string.match(/\S+/g) || []; - $.each(matches, function(i, tag) { + Utility.regexp_split(string).forEach(function(tag) { if (tag.charAt(0) === '-') { entry.exclude.push(tag.slice(1)); } else if (tag.charAt(0) === '~') { @@ -169,11 +168,11 @@ Blacklist.post_match = function(post, entry) { var score = parseInt($post.attr("data-score")); var score_test = entry.min_score === null || score < entry.min_score; - var tags = String($post.attr("data-tags")).match(/\S+/g) || []; - tags = tags.concat(String($post.attr("data-pools")).match(/\S+/g) || []); + var tags = Utility.regexp_split($post.attr("data-tags")); + tags.push(...Utility.regexp_split($post.attr("data-pools"))); tags.push("rating:" + $post.data("rating")); tags.push("uploaderid:" + $post.attr("data-uploader-id")); - $.each(String($post.data("flags")).match(/\S+/g) || [], function(i, v) { + Utility.regexp_split($post.data("flags")).forEach(function(v) { tags.push("status:" + v); }); diff --git a/app/javascript/src/javascripts/posts.js.erb b/app/javascript/src/javascripts/posts.js.erb index 2fda14e7d..2858a2913 100644 --- a/app/javascript/src/javascripts/posts.js.erb +++ b/app/javascript/src/javascripts/posts.js.erb @@ -550,8 +550,8 @@ Post.update_tag_count = function(event) { let count = 0; if (event) { - let tags = [...new Set($(event.target).val().match(/\S+/g))]; - if (tags) { + let tags = Utility.regexp_split($(event.target).val()); + if (tags.length) { count = tags.length; string = (count === 1) ? (count + " tag") : (count + " tags") } diff --git a/app/javascript/src/javascripts/related_tag.js b/app/javascript/src/javascripts/related_tag.js index f101073a5..3f09339ba 100644 --- a/app/javascript/src/javascripts/related_tag.js +++ b/app/javascript/src/javascripts/related_tag.js @@ -89,27 +89,25 @@ RelatedTag.current_tag = function() { } RelatedTag.update_selected = function(e) { - var current_tags = $("#upload_tag_string,#post_tag_string").val().toLowerCase().match(/\S+/g) || []; + var current_tags = RelatedTag.current_tags(); var $all_tags = $(".related-tags a.search-tag"); $all_tags.removeClass("selected"); - $all_tags.each(function(i, tag) { - if (current_tags.indexOf(tag.textContent.replace(/ /g, "_")) > -1) { + if (current_tags.includes(tag.textContent.replace(/ /g, "_"))) { $(tag).addClass("selected"); } }); } -RelatedTag.tags_include = function(name) { - var current = $("#upload_tag_string,#post_tag_string").val().toLowerCase().match(/\S+/g) || []; - return $.inArray(name.toLowerCase(), current) > -1; +RelatedTag.current_tags = function() { + return Utility.regexp_split($("#upload_tag_string,#post_tag_string").val().toLowerCase()); } RelatedTag.toggle_tag = function(e) { var $field = $("#upload_tag_string,#post_tag_string"); var tag = $(e.target).html().replace(/ /g, "_").replace(/>/g, ">").replace(/</g, "<").replace(/&/g, "&"); - if (RelatedTag.tags_include(tag)) { + if (RelatedTag.current_tags().includes(tag)) { var escaped_tag = Utility.regexp_escape(tag); $field.val($field.val().replace(new RegExp("(^|\\s)" + escaped_tag + "($|\\s)", "gi"), "$1$2")); } else { diff --git a/app/javascript/src/javascripts/utility.js b/app/javascript/src/javascripts/utility.js index 78811385a..4a335fd50 100644 --- a/app/javascript/src/javascripts/utility.js +++ b/app/javascript/src/javascripts/utility.js @@ -108,6 +108,10 @@ Utility.regexp_escape = function(string) { return string.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); } +Utility.regexp_split = function(string) { + return [...new Set(String(string === null || string === undefined ? "" : string).match(/\S+/g))]; +} + $.fn.selectEnd = function() { return this.each(function() { this.focus();