mirror of
https://github.com/Snigdha-OS/documentation.git
synced 2025-09-09 19:44:56 +02:00
104 lines
2.0 KiB
JavaScript
104 lines
2.0 KiB
JavaScript
'use strict'
|
|
|
|
const corePlugin = require('./plugin.js')
|
|
|
|
const defaultOptions = {
|
|
autoRename: false,
|
|
autoRenameStrict: false,
|
|
blacklist: {},
|
|
clean: true,
|
|
greedy: false,
|
|
processUrls: false,
|
|
stringMap: [],
|
|
useCalc: false,
|
|
aliases: {},
|
|
processEnv: true
|
|
}
|
|
|
|
function sort (arr) {
|
|
return arr.sort((a, b) => a.priority - b.priority)
|
|
}
|
|
|
|
function setupStringMap (stringMap) {
|
|
if (!Array.isArray(stringMap)) {
|
|
return
|
|
}
|
|
|
|
let hasLeftRight = false
|
|
let hasLtrRtl = false
|
|
|
|
for (const map of stringMap) {
|
|
if (hasLeftRight && hasLtrRtl) {
|
|
break
|
|
} else if (map.name === 'left-right') {
|
|
hasLeftRight = true
|
|
} else if (map.name === 'ltr-rtl') {
|
|
hasLtrRtl = true
|
|
}
|
|
}
|
|
|
|
if (!hasLeftRight) {
|
|
stringMap.push({
|
|
name: 'left-right',
|
|
priority: 100,
|
|
exclusive: false,
|
|
search: ['left', 'Left', 'LEFT'],
|
|
replace: ['right', 'Right', 'RIGHT'],
|
|
options: { scope: '*', ignoreCase: false }
|
|
})
|
|
}
|
|
|
|
if (!hasLtrRtl) {
|
|
stringMap.push({
|
|
name: 'ltr-rtl',
|
|
priority: 100,
|
|
exclusive: false,
|
|
search: ['ltr', 'Ltr', 'LTR'],
|
|
replace: ['rtl', 'Rtl', 'RTL'],
|
|
options: { scope: '*', ignoreCase: false }
|
|
})
|
|
}
|
|
|
|
return sort(stringMap)
|
|
}
|
|
|
|
function setupPlugins (plugins) {
|
|
const newPlugins = []
|
|
|
|
if (!plugins || !plugins.some((plugin) => plugin.name === 'rtlcss')) {
|
|
newPlugins.push(corePlugin)
|
|
}
|
|
|
|
return sort([...newPlugins, ...plugins])
|
|
}
|
|
|
|
function setupHooks (hooks) {
|
|
const newHooks = {
|
|
pre () {},
|
|
post () {}
|
|
}
|
|
|
|
if (typeof hooks.pre === 'function') {
|
|
newHooks.pre = hooks.pre
|
|
}
|
|
|
|
if (typeof hooks.post === 'function') {
|
|
newHooks.post = hooks.post
|
|
}
|
|
|
|
return newHooks
|
|
}
|
|
|
|
module.exports.configure = (opts = {}, plugins = [], hooks = {}) => {
|
|
const config = { ...defaultOptions, ...opts }
|
|
|
|
// string map
|
|
config.stringMap = setupStringMap(config.stringMap)
|
|
// plugins
|
|
config.plugins = setupPlugins(plugins)
|
|
// hooks
|
|
config.hooks = setupHooks(hooks)
|
|
|
|
return config
|
|
}
|