Документация
--
-- Конфигурация к [[Модуль:Autosorting]]
--
local config = {
	-- Пресеты настроек, указываемые в вызывающем шаблоне. Настроки берутся 
	-- по умолчанию дефолтные, но могут быть указаны индивидуально для каждого пресета
	--
	-- prefix, postfix, sep, innersep, lbracket, rbracket - фрагменты имени категории
	-- итоговое имя категории будет иметь вид:
	-- <prefix>[<lbracket><str1>[<sep><str2>[...]<sep><strN>]<rbracket>]<postfix>
	-- где str1..strN - строки, обычно в формате 'keyN:valueN', например 'тип:человек',
	-- разделенные сепаратором innersep. 
	--
	-- namespace - таблица с номерами ПИ, в которых будут ставиться категории. Если значение 
	-- пустое или nil, то все. Если {}, то нигде (пресет отключен)
	-- 
	-- allowred - отключить проверку существования категории (true/false)
	-- rules - идентификаторы правил, описанных ниже
	schema = {},
	options = {
		-- ignoreNSChecks = true,
		nocatParamName = 'nocat',
		fromParamName = 'from',
	},
	presets = {
		['testpreset'] = {
			filters = { -- эти фильтры обрабатываются на уровне пресета
				{	id = 'namespace-is',
					options = { namespaces = {0, 1, 2, }, },
				},
			},
			rules = { 'category-test-rule',	},	
		},
		['страницы на КУЛ']        = {
			prefix = 'Википедия:Страницы на КУЛ',
			filters = {
				{	id = 'namespace-is',
					options = { namespaces = {0, }, },
				},
			},
			rules  = {
				'cat-no-entity',
				'sort-type-occupation',
				'sort-country',
				'sort-ate',
				'nonexistingrule',
			},
		},
		['страницы на КУ']         = {
			prefix = 'Википедия:Страницы на КУ',
			rules  = {
				'cat-no-entity',
				'sort-type-occupation',
				'sort-country',
				'sort-ate',
			},
		},
		['страницы на КПМ']        = {
			prefix = 'Википедия:Страницы на КПМ',
			rules  = {
				'cat-no-entity',
				'sort-type-occupation',
				'sort-country',
				'sort-ate',
			},
		},
		['изолированные статьи']   = {
			prefix = 'Википедия:Изолированные статьи',
			filters = {
				{	id = 'namespace-is',
					options = { namespaces = {0, } },
				},
			},
			rules  = {
				'cat-no-entity',
				'sort-type-occupation',
				'sort-country',
				'sort-ate',
			},
		},
		['статьи без источников']  = {
			prefix = 'Википедия:Статьи без источников',
			filters = {
				{	id = 'namespace-is',
					options = { namespaces = {0, }, },
				},
			},
			rules  = {
				'cat-no-entity',
				'sort-type-occupation',
				'sort-country',
				'sort-ate',
			},
		},
		['статьи без изображений'] = {
			prefix = 'Википедия:Статьи без изображений',
			filters = {
				{	id = 'namespace-is',
					options = { namespaces = {0, }, },
				},
			},
			rules  = {
				'cat-no-entity',
				'cat-commons-files-no-wd',
				'cat-nofiles-on-property',
				'sort-files-type-occupation',
				'sort-files-country',
				'sort-files-ate',
			},
		},
		-- используется при пустых значениях в настройках пресетов.
		-- Если для пресета задано значение, соответствующее дефолтное значение игнорируется
		default = {
			prefix   = 'Википедия:Страницы с автосортировкой',
			postfix  = '',
			lbracket = ' (',
			rbracket = ')',
			sep      = '; ',
			innersep = ': ',
			allowred = false,
			rules    = {},
		},
	},
	-- Описания правил обработки
	-- func - название вызываемой функции-обработчика. Остальное - ее настройки.
	rules = {
		['category-test-rule'] = {
			func = '_category',
			options = {
				category = 'Тестовая категория',
			},
		},
		['cat-no-entity'] = {
			func = '_catNoEntity',
			options = {
				category = 'Википедия:Страницы без сущности в Викиданных',
				forceNS0 = true,
			},
		},
		['sort-type-occupation'] = {
			func    = '_sortByProperty',
			filters = {},
			options = {
				property            = 'P31',
				propLabel           = 'тип',
				propDefPar          = 'default-type',
				noValueLabel        = 'не указан',
				noVaidCatLabel      = 'не распределённые по типам',
				noVaidCatPropLabel  = '',
				noValueSortByProp   = true,
				noVaidCatSortByProp = true,
				thenByOnPropVal     = 'Q5',
				thenBy              = {
					property         = 'P106', 
					propLabel        = 'род занятий',
					propDefPar       = 'default-occupation',
					noValuePropLabel = '',
					noValueLabel     = '',
					noVaidCatLabel   = 'не распределён',
				},
			},
		},
		['sort-country'] = {
			func = '_sortByProperty',
			options = {
				property = 'P17',
				propLabel = 'страна',
				propDefPar = 'default-country',
			},
		},
		['sort-ate'] = {
			func = '_sortByProperty',
			options = {
				property = 'P131',
				propLabel = 'АТЕ',
				propDefPar = 'default-ate',
			},
		},
		['cat-commons-files-no-wd'] = {
			func = '_catLocalFileWithoutWD',
			options = {
				categoryName = 'Википедия:Статьи с изображениями: заполнить свойство %s в Викиданных',
				defaultImageProperty = 'P18',
				imagePropertiesParameter = 'uses',
				commonsCatPropery = 'P373',
			},
		},
		['cat-nofiles-on-property'] = {
			func = '_catByProperty',
			options = {
				property = {'P18', 'P242', 'P373'},
				categoryName = 'Википедия:Статьи без изображений (указано в Викиданных: %s)',
				ifEmptyPar = 1,
				ifEmptyPropsDef = 'P18',
				ifEmptyPropsPar = 'uses',
			},
		},
		['sort-files-type-occupation'] = {
			func                = '_sortByProperty',
			filters = {
				{	id = 'parameter-is-empty', options = { param = 1 }, },
				{	id = 'property-is-empty', options = { property = 'P18' }, },
			},
			options = {
				property            = 'P31',
				propLabel           = 'тип',
				ifEmptyPropsPar     = 'uses', 
				propDefPar          = 'default-type',
				noValueLabel        = 'не указан',
				noVaidCatLabel      = 'не распределённые по типам',
				noVaidCatPropLabel  = '',
				noValueSortByProp   = true,
				noVaidCatSortByProp = true,
				thenByOnPropVal     = 'Q5',
				thenBy              = {
					property         = 'P106', 
					propLabel        = 'род занятий',
					propDefPar       = 'default-occupation',
					noValuePropLabel = '',
					noValueLabel     = '',
					noVaidCatLabel   = 'не распределён',
				},
			},
		},
		['sort-files-country'] = {
			func = '_sortByProperty',
			options = {
				property = 'P17',
				propLabel = 'страна',
				ifEmptyPar = 1,
				ifEmptyProps = 'P18',
				ifEmptyPropsPar = 'uses',
				propDefPar = 'default-country',
			},
		},
		['sort-files-ate'] = {
			func = '_sortByProperty',
			options = {
				property = 'P131',
				propLabel = 'АТЕ',
				ifEmptyPar = 1,
				ifEmptyProps = 'P18',
				ifEmptyPropsPar = 'uses',
				propDefPar = 'default-ate',
			},
		},
	},
	workers = {
		['category'] = {
			['module'] = 'Песочница/Abiyoyo/Autosorting/workers',
			['function'] = 'category',
			['description'] = [[Adds a predefined category. Just it.]],
			['config-options-schema'] = {},
		},
		['sort-by-properties'] = {
			['module'] = nil,
			['function'] = '_sortByProperty',
			['description'] = [[Categorize by properties' values with
								multilelevel recursion]],
			['config-options-schema'] = {},
		},
		['cat-no-entity'] = {
			['worker-module'] = nil,
			['worker-function'] = '_catNoEntity',
			['description'] = 'Add category if no entity exists for page',
			['config-options-schema'] = {},
		},
		['cat-by-property'] = {
			['worker-module'] = nil,
			['worker-function'] = '_catByProperty',
			['description'] = 'Add category if any statement for property exists',
			['config-options-schema'] = {},
		},
		['cat-file-no-wd'] = {
			['worker-module'] = nil,
			['worker-function'] = '_catLocalFileWithoutWD',
			['description'] = [[Add category if file is availiable on commons
								and has no corresponding statement in WD]],
			['config-options-schema'] = {},
		},
	},
	-- ограничения на размер создаваемых категорий снизу
	-- (категория создается, если ее размер не менее указанного значения).
	-- Сейчас не используется.
	limits = {
		P31 = { -- type
			['страницы на КУЛ']        = 7,
			['страницы на КУ']         = 7,
			['страницы на КПМ']        = 7,
			['изолированные статьи']   = 7,
			['статьи без источников']  = 7,
			['статьи без изображений'] = 21,
			default = -1,
		},
		P17 = { -- country
			default = 300,
		},
		P131 = { -- region
			['страницы на КУЛ']        = 7,
			['страницы на КУ']         = 7,
			['страницы на КПМ']        = 7,
			['изолированные статьи']   = 7,
			['статьи без источников']  = 7,
			['статьи без изображений'] = 7,
			default = -1,
		},
	},
}
 
config.limits.P106 = config.limits.P31 -- occupation = type

return config