summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/diffs/utils/suggestions.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/diffs/utils/suggestions.js')
-rw-r--r--app/assets/javascripts/diffs/utils/suggestions.js28
1 files changed, 28 insertions, 0 deletions
diff --git a/app/assets/javascripts/diffs/utils/suggestions.js b/app/assets/javascripts/diffs/utils/suggestions.js
new file mode 100644
index 00000000000..a272f7f3257
--- /dev/null
+++ b/app/assets/javascripts/diffs/utils/suggestions.js
@@ -0,0 +1,28 @@
+function removeEmptyProperties(dict) {
+ const noBlanks = Object.entries(dict).reduce((final, [key, value]) => {
+ const upd = { ...final };
+
+ // The number 0 shouldn't be falsey when we're printing variables
+ if (value || value === 0) {
+ upd[key] = value;
+ }
+
+ return upd;
+ }, {});
+
+ return noBlanks;
+}
+
+export function computeSuggestionCommitMessage({ message, values = {} } = {}) {
+ const noEmpties = removeEmptyProperties(values);
+ const matchPhrases = Object.keys(noEmpties)
+ .map((key) => `%{${key}}`)
+ .join('|');
+ const replacementExpression = new RegExp(`(${matchPhrases})`, 'gm');
+
+ return message.replace(replacementExpression, (match) => {
+ const key = match.replace(/(^%{|}$)/gm, '');
+
+ return noEmpties[key];
+ });
+}