CssUtils { public static List<List<String>> extractShorthandProperties(String str) { List<List<String>> result = new ArrayList<>(); List<String> currentLayer = new ArrayList<>(); CssDeclarationValueTokenizer tokenizer = new CssDeclarationValueTokenizer(str); Token currentToken = tokenizer.getNextValidToken(); while (currentToken != null) { if (currentToken.getType() == TokenType.COMMA) { result.add(currentLayer); currentLayer = new ArrayList<>(); } else { currentLayer.add(currentToken.getValue()); } currentToken = tokenizer.getNextValidToken(); } result.add(currentLayer); return result; } private  CssUtils(); static List<String> splitStringWithComma(final String value); static BlendMode parseBlendMode(String cssValue); static List<List<String>> extractShorthandProperties(String str); static String normalizeCssProperty(String str); static String removeDoubleSpacesAndTrim(String str); static Integer parseInteger(String str); static Float parseFloat(String str); static Double parseDouble(String str); static float parseAngle(String angle, String defaultMetric); static float parseAngle(String angle); static int[] parseAspectRatio(String str); static float parseAbsoluteLength(String length, String defaultMetric); static float parseAbsoluteLength(String length); static float parseRelativeValue(final String relativeValue, final float baseValue); static UnitValue parseLengthValueToPt(final String value, final float emValue, final float remValue); static boolean isValidNumericValue(final String value); static float parseAbsoluteFontSize(String fontSizeValue, String defaultMetric); static float parseAbsoluteFontSize(String fontSizeValue); static float parseRelativeFontSize(final String relativeFontSizeValue, final float baseValue); static UnitValue[] parseSpecificCornerBorderRadius(String specificBorderRadius, final float emValue, final float remValue); static float parseResolution(String resolutionStr); static int determinePositionBetweenValueAndUnit(String string); static boolean isMetricValue(final String value); static boolean isAngleValue(final String value); static boolean isRelativeValue(final String value); static boolean isFontRelativeValue(final String value); static boolean isPercentageValue(final String value); static boolean isRemValue(final String value); static boolean isEmValue(final String value); static boolean isExValue(final String value); static boolean isNumericValue(final String value); static String extractUrl(final String url); static boolean isBase64Data(String data); static int findNextUnescapedChar(String source, char ch, int startIndex); static boolean isColorProperty(String value); static boolean compareFloats(double d1, double d2); static boolean compareFloats(float f1, float f2); static float[] parseRgbaColor(String colorValue); static Range parseUnicodeRange(String unicodeRange); static float convertPtsToPx(float pts); static double convertPtsToPx(double pts); static float convertPxToPts(float px); static double convertPxToPts(double px); static boolean isStyleSheetLink(IElementNode headChildElement); static boolean isInitialOrInheritOrUnset(String value);  }
@Test public void extractShorthandPropertiesFromEmptyStringTest() { String sourceString = ""; List<List<String>> expected = new ArrayList<>(); expected.add(new ArrayList<String>()); Assert.assertEquals(expected, CssUtils.extractShorthandProperties(sourceString)); }
@Test public void extractShorthandPropertiesFromStringWithOnePropertyTest() { String sourceString = "square inside url('sqpurple.gif')"; List<List<String>> expected = new ArrayList<>(); List<String> layer = new ArrayList<>(); layer.add("square"); layer.add("inside"); layer.add("url('sqpurple.gif')"); expected.add(layer); Assert.assertEquals(expected, CssUtils.extractShorthandProperties(sourceString)); }
@Test public void extractShorthandPropertiesFromStringWithMultiplyPropertiesTest() { String sourceString = "center no-repeat url('sqpurple.gif'), #eee 35% url('sqpurple.gif')"; List<List<String>> expected = new ArrayList<>(); List<String> layer = new ArrayList<>(); layer.add("center"); layer.add("no-repeat"); layer.add("url('sqpurple.gif')"); expected.add(layer); layer = new ArrayList<>(); layer.add("#eee"); layer.add("35%"); layer.add("url('sqpurple.gif')"); expected.add(layer); Assert.assertEquals(expected, CssUtils.extractShorthandProperties(sourceString)); }