forked from getgridea/gridea
-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils.ts
40 lines (32 loc) · 1.42 KB
/
utils.ts
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
28
29
30
31
32
33
34
35
36
37
38
39
40
import markdown from '../server/plugins/markdown'
/**
* Add single-quoted to string type field, in order to be compatible with many special characters
* eg. true, false, 1, [, ], {, }, ,, #, <, >, @,
*/
export function formatYamlString(string: any) {
return string.replace(/'/g, '\'\'')
}
export const formatThemeCustomConfigToRender = (config: any, currentThemeConfig: any) => {
for (const configItem of currentThemeConfig) {
const configValue = config[configItem.name]
if (configItem.type === 'markdown') {
if (!configValue) continue
config[configItem.name] = markdown.render(configValue)
} else if (configItem.type === 'array' && configValue) {
for (let arrItemIndex = 0; arrItemIndex < configValue.length; arrItemIndex += 1) {
const foundConfigItem = currentThemeConfig.find((i: any) => i.name === configItem.name)
const arrayItemKeys = Object.keys(configValue[arrItemIndex])
for (let keyIndex = 0; keyIndex < arrayItemKeys.length; keyIndex += 1) {
const key = arrayItemKeys[keyIndex]
const foundMarkdownField = foundConfigItem.arrayItems.find((i: any) => i.name === key && i.type === 'markdown')
if (foundMarkdownField) {
const fieldValue = configValue[arrItemIndex][key]
if (!fieldValue) continue
configValue[arrItemIndex][key] = markdown.render(fieldValue)
}
}
}
}
}
return config
}