![JAR search and dependency download from the Maven repository](/logo.png)
cz.vutbr.web.domassign.ValidationUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jstyleparser Show documentation
Show all versions of jstyleparser Show documentation
jStyleParser is a CSS parser written in Java. It has its own application interface that is designed to allow an efficient CSS processing in Java and mapping the values to the Java data types. It parses CSS 2.1 style sheets into structures that can be efficiently assigned to DOM elements. It is intended be the primary CSS parser for the CSSBox library. While handling errors, it is user agent conforming according to the CSS specification.
The newest version!
package cz.vutbr.web.domassign;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
* @author Petr Mikulík
*/
public class ValidationUtils {
private static final Pattern AREA_REGEX = Pattern.compile("\\S+");
public static String[] getAreas(String areasString) {
Collection areas = new ArrayList<>();
Matcher matcher = AREA_REGEX.matcher(areasString);
while (matcher.find()) {
areas.add(matcher.group());
}
return areas.toArray(new String[0]);
}
public static boolean containsRectangles(String[][] map) {
int height = map.length;
if (height < 1) {
return false;
}
int width = map[0].length;
Set knownAreas = new HashSet<>();
boolean[][] boolMap = new boolean[height][width];
for (boolean[] column : boolMap) {
Arrays.fill(column, false);
}
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
if (boolMap[y][x]) {
continue;
}
if (knownAreas.contains(map[y][x])) {
return false;
}
knownAreas.add(map[y][x]);
int currWidth = getWidth(map, x, y);
int currHeight = getHeight(map, x, y);
if (isValidRectangle(map, x, y, currWidth, currHeight)) {
validateRectangle(boolMap, x, y, currWidth, currHeight);
} else {
return false;
}
}
}
return true;
}
private static boolean isValidRectangle(String[][] map, int x0, int y0, int width, int height) {
final String base = map[y0][x0];
for (int x = x0 + 1; x < width; x++) {
for (int y = y0; y < height; y++) {
if (!map[y][x].equals(base)) {
return false;
}
}
}
return true;
}
private static void validateRectangle(boolean[][] map, int x0, int y0, int width, int height) {
for (int x = x0; x < x0 + width; x++) {
for (int y = y0; y < y0 + height; y++) {
map[y][x] = true;
}
}
}
private static int getWidth(String[][] map, int x, int y) {
final String base = map[y][x];
int width = 1;
while (++x < map[0].length && map[y][x].equals(base)) {
width++;
}
return width;
}
private static int getHeight(String[][] map, int x, int y) {
final String base = map[y][x];
int height = 1;
while (++y < map.length && map[y][x].equals(base)) {
height++;
}
return height;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy