12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- const _ = require('lodash');
- const getDescription = require('./getDescription');
- module.exports = function createOrderInfo(input) {
- let order = {};
- let expectedPosition = 0;
- input.forEach((originalItem) => {
- let item = originalItem;
- expectedPosition += 1;
- // Convert 'rules' into extended pattern
- if (item === 'rules') {
- item = {
- type: 'rule',
- };
- }
- if (item.type === 'rule') {
- // It there are no nodes like that create array for them
- if (!order[item.type]) {
- order[item.type] = [];
- }
- let nodeData = {
- expectedPosition,
- description: getDescription(item),
- };
- if (item.selector) {
- nodeData.selector = item.selector;
- if (_.isString(item.selector)) {
- nodeData.selector = new RegExp(item.selector);
- }
- }
- order[item.type].push(nodeData);
- }
- // Convert 'at-rules' into extended pattern
- if (item === 'at-rules') {
- item = {
- type: 'at-rule',
- };
- }
- if (item.type === 'at-rule') {
- // It there are no nodes like that create array for them
- if (!order[item.type]) {
- order[item.type] = [];
- }
- let nodeData = {
- expectedPosition,
- description: getDescription(item),
- };
- if (item.name) {
- nodeData.name = item.name;
- }
- if (item.parameter) {
- nodeData.parameter = item.parameter;
- if (_.isString(item.parameter)) {
- nodeData.parameter = new RegExp(item.parameter);
- }
- }
- if (!_.isUndefined(item.hasBlock)) {
- nodeData.hasBlock = item.hasBlock;
- }
- order[item.type].push(nodeData);
- }
- if (_.isString(item)) {
- order[item] = {
- expectedPosition,
- description: getDescription(item),
- };
- }
- });
- return order;
- };
|