src/options/vendor-prefix-align.js
function(ast) {
      ast.traverseByType('block', function(node) {
        oneline = true;

        var dict = {};

        // Gathering Info
        walk({
          node: node,
          selector: getPropertyName,
          getExtraSymbols: extraIndentProperty,
          payload: function(info) {
            updateDict(info, dict);
          }
        });

        walk({
          node: node,
          selector: getValName,
          namespaceSelector: getPropertyName,
          getExtraSymbols: extraIndentVal,
          payload: function(info) {
            updateDict(info, dict);
          }
        });

        if (oneline && ast.syntax !== 'sass') return;

        // Update nodes
        walk({
          node: node,
          selector: getValName,
          namespaceSelector: getPropertyName,
          getExtraSymbols: extraIndentVal,
          payload: function(info, i) {
            for (var x = node.get(i).length; x--;) {
              if (node.get(i).get(x).is('value')) break;
            }

            let prevNode = node.get(i).get(x - 1);
            if (!prevNode.is('space')) {
              var space = gonzales.createNode({
                type: 'space',
                content: ''
              });
              node.get(i).insert(x, space);
              ++x;
            }

            let content = node.get(i).get(x - 1).content;
            let updatedIndent = updateIndent(info, dict, content);
            node.get(i).get(x - 1).content = updatedIndent;
          }
        });

        if (ast.syntax === 'sass') return;

        walk({
          node: node,
          selector: getPropertyName,
          getExtraSymbols: extraIndentProperty,
          payload: function(info, i) {
            // `node.get(i - 1)` can be either space or comment:
            var whitespaceNode = node.get(i - 1);
            if (!whitespaceNode) return;
            // If it's a comment, insert an empty space node:
            if (!whitespaceNode.is('space')) {
              whitespaceNode = gonzales.createNode({
                type: 'space',
                content: ''
              });
              node.insert(i - 1, whitespaceNode);
            }
            let content = whitespaceNode.content;
            let updatedContent = updateIndent(info, dict, content);
            whitespaceNode.content = updatedContent;
          }
        });
      });
    }
function(ast) {
      ast.traverseByType('block', function(node) {
        oneline = true;

        var dict = {};

        // Gathering Info
        walk({
          node: node,
          selector: getPropertyName,
          getExtraSymbols: extraIndentProperty,
          payload: function(info) {
            updateDict(info, dict);
          }
        });

        walk({
          node: node,
          selector: getValName,
          namespaceSelector: getPropertyName,
          getExtraSymbols: extraIndentVal,
          payload: function(info) {
            updateDict(info, dict);
          }
        });

        if (oneline && ast.syntax !== 'sass') return;

        // Update nodes
        walk({
          node: node,
          selector: getValName,
          namespaceSelector: getPropertyName,
          getExtraSymbols: extraIndentVal,
          payload: function(info, i) {
            for (var x = node.get(i).length; x--;) {
              if (node.get(i).get(x).is('value')) break;
            }

            let prevNode = node.get(i).get(x - 1);
            if (!prevNode.is('space')) {
              var space = gonzales.createNode({
                type: 'space',
                content: ''
              });
              node.get(i).insert(x, space);
              ++x;
            }

            let content = node.get(i).get(x - 1).content;
            let updatedIndent = updateIndent(info, dict, content);
            node.get(i).get(x - 1).content = updatedIndent;
          }
        });

        if (ast.syntax === 'sass') return;

        walk({
          node: node,
          selector: getPropertyName,
          getExtraSymbols: extraIndentProperty,
          payload: function(info, i) {
            // `node.get(i - 1)` can be either space or comment:
            var whitespaceNode = node.get(i - 1);
            if (!whitespaceNode) return;
            // If it's a comment, insert an empty space node:
            if (!whitespaceNode.is('space')) {
              whitespaceNode = gonzales.createNode({
                type: 'space',
                content: ''
              });
              node.insert(i - 1, whitespaceNode);
            }
            let content = whitespaceNode.content;
            let updatedContent = updateIndent(info, dict, content);
            whitespaceNode.content = updatedContent;
          }
        });
      });
    }
Processes tree node.

@param {node} ast