/* @flow */
"use strict";

const _ = require("lodash");

function getNodeLine(node /*:: ?: postcss$node*/) /*: number | void*/ {
  return _.get(node, "source.start.line");
}

module.exports = function getPreviousNonSharedLineCommentNode(
  node /*:: ?: postcss$node*/
) /*: postcss$node | void*/ {
  if (node === undefined) {
    return undefined;
  }

  const previousNode = node.prev();

  if (_.get(previousNode, "type") !== "comment") {
    return previousNode;
  }

  if (
    getNodeLine(node) === getNodeLine(previousNode) ||
    (previousNode !== undefined &&
      getNodeLine(previousNode) === getNodeLine(previousNode.prev()))
  ) {
    return getPreviousNonSharedLineCommentNode(previousNode);
  }

  return previousNode;
};