diff options
author | Simon Knox <psimyn@gmail.com> | 2017-02-21 11:33:42 +1100 |
---|---|---|
committer | Simon Knox <psimyn@gmail.com> | 2017-02-21 11:33:42 +1100 |
commit | fe1ab40529bd91eea6e2f9e086bbf9b91ae37891 (patch) | |
tree | 0abd6ce3696044aef6bf3b96f57f81653198abcb /app | |
parent | dc303fe2dbc422b71e61897443741f78f0138e82 (diff) | |
download | gitlab-ce-fe1ab40529bd91eea6e2f9e086bbf9b91ae37891.tar.gz |
Allow searching issues for strings containing colons
Diffstat (limited to 'app')
-rw-r--r-- | app/assets/javascripts/filtered_search/filtered_search_manager.js.es6 | 2 | ||||
-rw-r--r-- | app/assets/javascripts/filtered_search/filtered_search_tokenizer.js.es6 | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/app/assets/javascripts/filtered_search/filtered_search_manager.js.es6 b/app/assets/javascripts/filtered_search/filtered_search_manager.js.es6 index ffc7d29e4c5..13a9bf59246 100644 --- a/app/assets/javascripts/filtered_search/filtered_search_manager.js.es6 +++ b/app/assets/javascripts/filtered_search/filtered_search_manager.js.es6 @@ -173,7 +173,7 @@ tokens.forEach((token) => { const condition = gl.FilteredSearchTokenKeys .searchByConditionKeyValue(token.key, token.value.toLowerCase()); - const { param } = gl.FilteredSearchTokenKeys.searchByKey(token.key); + const { param } = gl.FilteredSearchTokenKeys.searchByKey(token.key) || {}; const keyParam = param ? `${token.key}_${param}` : token.key; let tokenPath = ''; diff --git a/app/assets/javascripts/filtered_search/filtered_search_tokenizer.js.es6 b/app/assets/javascripts/filtered_search/filtered_search_tokenizer.js.es6 index cf53845a48b..9bf1b1ced88 100644 --- a/app/assets/javascripts/filtered_search/filtered_search_tokenizer.js.es6 +++ b/app/assets/javascripts/filtered_search/filtered_search_tokenizer.js.es6 @@ -1,9 +1,12 @@ +require('./filtered_search_token_keys'); + (() => { class FilteredSearchTokenizer { static processTokens(input) { + const allowedKeys = gl.FilteredSearchTokenKeys.get().map(i => i.key); // Regex extracts `(token):(symbol)(value)` // Values that start with a double quote must end in a double quote (same for single) - const tokenRegex = /(\w+):([~%@]?)(?:('[^']*'{0,1})|("[^"]*"{0,1})|(\S+))/g; + const tokenRegex = new RegExp(`(${allowedKeys.join('|')}):([~%@]?)(?:('[^']*'{0,1})|("[^"]*"{0,1})|(\\S+))`, 'g'); const tokens = []; let lastToken = null; const searchToken = input.replace(tokenRegex, (match, key, symbol, v1, v2, v3) => { |