1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- 'use strict'
- var options
- var config = {}
- var corePlugin = require('./plugin.js')
- function optionOrDefault (option, def) {
- return option in options ? options[option] : def
- }
- function addKey (key, def) {
- config[key] = optionOrDefault(key, def)
- }
- function main (opts, plugins, hooks) {
- options = opts || {}
- hooks = hooks || {}
- addKey('autoRename', false)
- addKey('autoRenameStrict', false)
- addKey('blacklist', {})
- addKey('clean', true)
- addKey('greedy', false)
- addKey('processUrls', false)
- addKey('stringMap', [])
- addKey('useCalc', false)
- // default strings map
- if (Array.isArray(config.stringMap)) {
- var hasLeftRight, hasLtrRtl
- for (var x = 0; x < config.stringMap.length; x++) {
- var map = config.stringMap[x]
- if (hasLeftRight && hasLtrRtl) {
- break
- } else if (map.name === 'left-right') {
- hasLeftRight = true
- } else if (map.name === 'ltr-rtl') {
- hasLtrRtl = true
- }
- }
- if (!hasLeftRight) {
- config.stringMap.push({
- 'name': 'left-right',
- 'priority': 100,
- 'exclusive': false,
- 'search': ['left', 'Left', 'LEFT'],
- 'replace': ['right', 'Right', 'RIGHT'],
- 'options': { 'scope': '*', 'ignoreCase': false }
- })
- }
- if (!hasLtrRtl) {
- config.stringMap.push({
- 'name': 'ltr-rtl',
- 'priority': 100,
- 'exclusive': false,
- 'search': ['ltr', 'Ltr', 'LTR'],
- 'replace': ['rtl', 'Rtl', 'RTL'],
- 'options': { 'scope': '*', 'ignoreCase': false }
- })
- }
- config.stringMap.sort(function (a, b) { return a.priority - b.priority })
- }
- // plugins
- config.plugins = []
- if (Array.isArray(plugins)) {
- if (!plugins.some(function (plugin) { return plugin.name === 'rtlcss' })) {
- config.plugins.push(corePlugin)
- }
- config.plugins = config.plugins.concat(plugins)
- } else if (!plugins || plugins.name !== 'rtlcss') {
- config.plugins.push(corePlugin)
- }
- config.plugins.sort(function (a, b) { return a.priority - b.priority })
- // hooks
- config.hooks = { pre: function () {}, post: function () {} }
- if (typeof hooks.pre === 'function') {
- config.hooks.pre = hooks.pre
- }
- if (typeof hooks.post === 'function') {
- config.hooks.post = hooks.post
- }
- return config
- }
- module.exports.configure = main
|