summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/vue_shared/components/source_viewer/plugins/utils/dependency_linker_util.js
blob: c1a1101afada6e911ca64cb2ceddd667aea11cf0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { escape } from 'lodash';

export const createLink = (href, innerText) =>
  `<a href="${escape(href)}" target="_blank" rel="nofollow noreferrer noopener">${escape(
    innerText,
  )}</a>`;

export const generateHLJSOpenTag = (type, delimiter = '&quot;') =>
  `<span class="hljs-${escape(type)}">${delimiter}`;

export const getObjectKeysByKeyName = (obj, keyName, acc) => {
  if (obj instanceof Array) {
    obj.map((subObj) => getObjectKeysByKeyName(subObj, keyName, acc));
  } else {
    for (const key in obj) {
      if (Object.prototype.hasOwnProperty.call(obj, key)) {
        if (key === keyName) {
          acc.push(...Object.keys(obj[key]));
        }
        if (obj[key] instanceof Object || obj[key] instanceof Array) {
          getObjectKeysByKeyName(obj[key], keyName, acc);
        }
      }
    }
  }
  return acc;
};