//package com.scss.annotator;
//
//import com.intellij.openapi.editor.Editor;
//import com.intellij.openapi.project.Project;
//import com.intellij.psi.PsiElement;
//import com.intellij.psi.PsiFile;
//import com.intellij.psi.css.CssBlock;
//import com.intellij.psi.css.CssDeclaration;
//import com.intellij.psi.css.impl.parsing.CssParser;
//import com.intellij.psi.css.impl.util.table.CssPropertyUtil;
//import com.intellij.psi.util.PsiTreeUtil;
//import com.intellij.util.IncorrectOperationException;
//import com.intellij.util.containers.ContainerUtil;
//import com.scss.ScssLintBundle;
//import org.jetbrains.annotations.NotNull;
//
//import java.util.Comparator;
//import java.util.regex.Matcher;
//import java.util.regex.Pattern;
//
///**
// * @author idok
// */
//public class PropertySortOrderFix extends BaseActionFix {
//
// private static final String[] VENDOR_PREFIXS = {
// "-moz-" /* Firefox and other browsers using Mozilla's browser engine */,
// "-webkit-" /* Safari, Chrome and browsers using the Webkit engine */,
// "-o-" /* Opera */,
// "-ms-" /* Internet Explorer (but not always) */};
//
// private static final Pattern COMPILE = Pattern.compile("-(?:moz|o|webkit|ms)-(font)");
//
// public PropertySortOrderFix(PsiElement element) {
// super(element);
// }
//
// @NotNull
// @Override
// public String getText() {
// return ScssLintBundle.message("inspection.fix.sort");
// }
//
// public static String strip(String p) {
// Matcher m = COMPILE.matcher(p);
// return m.matches() ? m.group(1) : p;
// }
//
// @Override
// public void fix(@NotNull Project project, Editor editor, PsiFile file, PsiElement start) throws IncorrectOperationException {
// CssBlock block = PsiTreeUtil.getParentOfType(start, CssBlock.class);
// CssDeclaration[] declarations = block.getDeclarations();
// CssDeclaration[] sorted = new CssDeclaration[declarations.length];
// for (int i = 0; i < sorted.length; i++) {
// sorted[i] = (CssDeclaration) declarations[i].copy();
// }
//
// ContainerUtil.sort(sorted, new Comparator<CssDeclaration>() {
// @Override
// public int compare(CssDeclaration cssDeclaration, CssDeclaration cssDeclaration2) {
// String p1 = CssPropertyUtil.getElementNameWithoutVendorPrefix(cssDeclaration.getPropertyName());
// String v1 = CssPropertyUtil.getVendorPrefix(cssDeclaration.getPropertyName());
// String p2 = CssPropertyUtil.getElementNameWithoutVendorPrefix(cssDeclaration2.getPropertyName());
// String v2 = CssPropertyUtil.getVendorPrefix(cssDeclaration2.getPropertyName());
// return p1.compareTo(p2);
// }
// });
//
// for (int i = 0; i < declarations.length; i++) {
// declarations[i].replace(sorted[i]);
// }
// }
//}