Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/old/vendor/magento/module-rule/view/adminhtml/web/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/magento/module-rule/view/adminhtml/web/conditions-data-normalizer.js
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

define([
    'jquery',
    'underscore'
], function ($, _) {
    'use strict';

    /**
     * @constructor
     */
    var ConditionsDataNormalizer = function () {
        this.patterns = {
            validate: /^[a-z0-9_.-][a-z0-9_.-]*(?:\[(?:\d*|[a-z0-9_.-]+)\])*$/i,
            key: /[a-z0-9_.-]+|(?=\[\])/gi,
            push: /^$/,
            fixed: /^\d+$/,
            named: /^[a-z0-9_.-]+$/i
        };
    };

    ConditionsDataNormalizer.prototype = {
        /**
         * Will convert an object:
         * {
         *   "foo[bar][1][baz]": 123,
         *   "foo[bar][1][blah]": 321
         *   "foo[bar][1--1][ah]": 456
         * }
         *
         * to
         * {
         *   "foo": {
         *     "bar": {
         *       "1": {
         *         "baz": 123,
         *         "blah": 321
         *       },
         *       "1--1": {
         *         "ah": 456
         *       }
         *     }
         *   }
         * }
         */
        normalize: function normalize(value) {
            var el, _this = this;

            this.pushes = {};
            this.data = {};

            _.each(value, function (e, i) {
                el = {};
                el[i] = e;

                _this._addPair({
                    name: i,
                    value: e
                });
            });

            return this.data;
        },

        /**
         * @param {Object} base
         * @param {String} key
         * @param {String} value
         * @return {Object}
         * @private
         */
        _build: function build(base, key, value) {
            base[key] = value;

            return base;
        },

        /**
         * @param {Object} root
         * @param {String} value
         * @return {*}
         * @private
         */
        _makeObject: function makeObject(root, value) {
            var keys = root.match(this.patterns.key),
                k, idx; // nest, nest, ..., nest

            while ((k = keys.pop()) !== undefined) {
                // foo[]
                if (this.patterns.push.test(k)) {
                    idx = this._incrementPush(root.replace(/\[\]$/, ''));
                    value = this._build([], idx, value);
                } // foo[n]
                else if (this.patterns.fixed.test(k)) {
                    value = this._build({}, k, value);
                } // foo; foo[bar]
                else if (this.patterns.named.test(k)) {
                    value = this._build({}, k, value);
                }
            }

            return value;
        },

        /**
         * @param {String} key
         * @return {Number}
         * @private
         */
        _incrementPush: function incrementPush(key) {
            if (this.pushes[key] === undefined) {
                this.pushes[key] = 0;
            }

            return this.pushes[key]++;
        },

        /**
         * @param {Object} pair
         * @return {Object}
         * @private
         */
        _addPair: function addPair(pair) {
            var obj = this._makeObject(pair.name, pair.value);

            if (!this.patterns.validate.test(pair.name)) {
                return this;
            }

            this.data = $.extend(true, this.data, obj);

            return this;
        }
    };

    return ConditionsDataNormalizer;
});

Spamworldpro Mini