From f734991d6141d6070228b936aa20fb77c6faedac Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Tue, 28 May 2019 23:26:00 +0200 Subject: [PATCH] updated jar&sources --- devTools/javaSanityCheck/SanityCheck.jar | Bin 156450 -> 156190 bytes devTools/javaSanityCheck/sources.zip | Bin 0 -> 38973 bytes .../src/DisallowedTagException.java | 11 - devTools/javaSanityCheck/src/Main.java | 331 --------------- devTools/javaSanityCheck/src/SyntaxError.java | 67 --- devTools/javaSanityCheck/src/Tag.java | 14 - .../javaSanityCheck/src/TagSearchTree.java | 81 ---- .../src/UnknownStateException.java | 11 - .../src/element/AngleBracketElement.java | 380 ------------------ .../src/element/AtElement.java | 108 ----- .../src/element/BracketElement.java | 28 -- .../src/element/CommentElement.java | 75 ---- .../javaSanityCheck/src/element/Element.java | 55 --- .../src/element/KnownElement.java | 38 -- .../src/element/KnownHtmlElement.java | 50 --- .../src/element/KnownLogicElement.java | 120 ------ .../src/element/KnownTwineElement.java | 50 --- 17 files changed, 1419 deletions(-) create mode 100644 devTools/javaSanityCheck/sources.zip delete mode 100644 devTools/javaSanityCheck/src/DisallowedTagException.java delete mode 100644 devTools/javaSanityCheck/src/Main.java delete mode 100644 devTools/javaSanityCheck/src/SyntaxError.java delete mode 100644 devTools/javaSanityCheck/src/Tag.java delete mode 100644 devTools/javaSanityCheck/src/TagSearchTree.java delete mode 100644 devTools/javaSanityCheck/src/UnknownStateException.java delete mode 100644 devTools/javaSanityCheck/src/element/AngleBracketElement.java delete mode 100644 devTools/javaSanityCheck/src/element/AtElement.java delete mode 100644 devTools/javaSanityCheck/src/element/BracketElement.java delete mode 100644 devTools/javaSanityCheck/src/element/CommentElement.java delete mode 100644 devTools/javaSanityCheck/src/element/Element.java delete mode 100644 devTools/javaSanityCheck/src/element/KnownElement.java delete mode 100644 devTools/javaSanityCheck/src/element/KnownHtmlElement.java delete mode 100644 devTools/javaSanityCheck/src/element/KnownLogicElement.java delete mode 100644 devTools/javaSanityCheck/src/element/KnownTwineElement.java diff --git a/devTools/javaSanityCheck/SanityCheck.jar b/devTools/javaSanityCheck/SanityCheck.jar index c2041109e8ab397f6aff8e7bbcf1c19d495baa73..dfa5b22db1171f4165e79f260caad84987e22346 100644 GIT binary patch delta 23534 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⪼4) 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 TA}rIHl9{B~J{d4EFfafBJUx}% delta 23661 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 Stv~%=B9j!`H$x@{1_l7;!M^SQ diff --git a/devTools/javaSanityCheck/sources.zip b/devTools/javaSanityCheck/sources.zip new file mode 100644 index 0000000000000000000000000000000000000000..92f59c1b2541717b32c51b197bb8d5c4997b9a2d GIT binary patch literal 38973 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 literal 0 HcmV?d00001 diff --git a/devTools/javaSanityCheck/src/DisallowedTagException.java b/devTools/javaSanityCheck/src/DisallowedTagException.java deleted file mode 100644 index 12d5dfb2974..00000000000 --- a/devTools/javaSanityCheck/src/DisallowedTagException.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.arkerthan.sanityCheck; - -/** - * @author Arkerthan - */ -public class DisallowedTagException extends RuntimeException { - - public DisallowedTagException(String tag) { - super(tag); - } -} diff --git a/devTools/javaSanityCheck/src/Main.java b/devTools/javaSanityCheck/src/Main.java deleted file mode 100644 index 1cf56950cc0..00000000000 --- a/devTools/javaSanityCheck/src/Main.java +++ /dev/null @@ -1,331 +0,0 @@ -package org.arkerthan.sanityCheck; - -import org.arkerthan.sanityCheck.element.AngleBracketElement; -import org.arkerthan.sanityCheck.element.CommentElement; -import org.arkerthan.sanityCheck.element.Element; -import org.arkerthan.sanityCheck.element.KnownElement; - -import java.io.*; -import java.nio.charset.Charset; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.*; - -/** - * @author Arkerthan - * @version 1.0 - */ -public class Main { - - public static TagSearchTree<Tag> htmlTags, twineTags; - private static String currentFile; - private static int currentLine, currentPosition; - private static Stack<Element> stack; - private static List<SyntaxError> errors = new LinkedList<>(); - private static String[] excluded; - - public static void main(String[] args) { - - //setup - setupExclude(); - setupHtmlTags(); - setupTwineTags(); - Path workingDir = Paths.get("").toAbsolutePath(); - - //actual sanityCheck - runSanityCheckInDirectory(workingDir, new File("src/")); - - //output errors - for (SyntaxError e : - errors) { - System.out.println(e.getError()); - } - } - - - /** - * Goes through the whole directory including subdirectories and runs - * {@link Main#sanityCheck(Path)} on all .tw files - * - * @param dir to be checked - */ - private static void runSanityCheckInDirectory(Path workingDir, File dir) { - //subdirectories are checked recursively - - try { - for (File file : dir.listFiles()) { - if (file.isFile()) { //run sanityCheck if file is a .tw file - String path = file.getAbsolutePath(); - if (path.endsWith(".tw")) { - sanityCheck(workingDir.relativize(file.toPath())); - } - } else if (file.isDirectory()) { - runSanityCheckInDirectory(workingDir, file.getAbsoluteFile()); - } - } - } catch (NullPointerException e) { - e.printStackTrace(); - System.err.println("Couldn't read directory " + currentFile); - System.exit(-1); - } - } - - /** - * Runs the sanity check for one file. Does not run if file is excluded. - * - * @param path file to be checked - */ - private static void sanityCheck(Path path) { - File file = path.toFile(); - - // replace this with a known encoding if possible - Charset encoding = Charset.defaultCharset(); - - if (!excluded(file.getPath())) { - currentFile = file.getPath(); - currentLine = 1; - stack = new Stack<>(); - - //actually opening and reading the file - try (InputStream in = new FileInputStream(file); - Reader reader = new InputStreamReader(in, encoding); - // buffer for efficiency - Reader buffer = new BufferedReader(reader)) { - handleCharacters(buffer); - } catch (IOException e) { - e.printStackTrace(); - System.err.println("Couldn't read " + file); - } - } - } - - /** - * sets up a {@link TagSearchTree<Tag>} for fast access of HTML tags later - */ - private static void setupHtmlTags() { - //load HTML tags into a list - List<Tag> TagsList = loadTags("devTools/javaSanityCheck/htmlTags"); - - //turn List into alphabetical search tree - try { - htmlTags = new TagSearchTree<>(TagsList); - } catch (ArrayIndexOutOfBoundsException e) { - System.err.println("Illegal Character in devTools/javaSanityCheck/htmlTags"); - System.exit(-1); - } - } - - /** - * sets up a {@link TagSearchTree<Tag>} for fast access of twine tags later - */ - private static void setupTwineTags() { - //load twine tags into a list - List tagsList = loadTags("devTools/javaSanityCheck/twineTags"); - - //turn List into alphabetical search tree - try { - twineTags = new TagSearchTree<>(tagsList); - } catch (ArrayIndexOutOfBoundsException e) { - System.err.println("Illegal Character in devTools/javaSanityCheck/twineTags"); - System.exit(-1); - } - } - - /** - * Loads a list of tags from a file - * - * @param filePath file to load tags from - * @return loaded tags - */ - private static List<Tag> loadTags(String filePath) { - List<Tag> tagsList = new LinkedList<>(); - try { - Files.lines(new File(filePath).toPath()).map(String::trim) - .filter(s -> !s.startsWith("#")) - .forEach(s -> tagsList.add(parseTag(s))); - } catch (IOException e) { - System.err.println("Couldn't read " + filePath); - } - return tagsList; - } - - /** - * Turns a string into a Tag - * ";1" at the end of the String indicates that the tag needs to be closed later - * - * @param s tag as String - * @return tag as Tag - */ - private static Tag parseTag(String s) { - String[] st = s.split(";"); - if (st.length > 1 && st[1].equals("1")) { - return new Tag(st[0], false); - } - return new Tag(st[0], true); - } - - /** - * sets up the excluded files array. - */ - private static void setupExclude() { - //load excluded files - List<String> excludedList = new ArrayList<>(); - try { - Files.lines(new File("devTools/javaSanityCheck/excluded").toPath()).map(String::trim) - .filter(s -> !s.startsWith("#")) - .forEach(excludedList::add); - } catch (IOException e) { - System.err.println("Couldn't read devTools/javaSanityCheck/excluded"); - } - - //turn excluded files into an array and change path to windows style if needed - if (isWindows()) { - excluded = new String[excludedList.size()]; - int i = 0; - for (String s : - excludedList) { - excluded[i++] = s.replaceAll("/", "\\\\"); - } - } else { - excluded = excludedList.toArray(new String[0]); - } - } - - /** - * @return whether OS is Windows or not - */ - private static boolean isWindows() { - return (System.getProperty("os.name").toLowerCase(Locale.ENGLISH).contains("windows")); - } - - /** - * checks if a file or directory is excluded from the sanity check - * - * @param s file/directory to be checked - * @return whether it is excluded or not - */ - private static boolean excluded(String s) { - for (String ex : - excluded) { - if (s.startsWith(ex)) return true; - } - return false; - } - - /** - * Reads the file character by character. - * - * @param reader reader that is read - * @throws IOException thrown if the file can't be read - */ - private static void handleCharacters(Reader reader) throws IOException { - int r; - while ((r = reader.read()) != -1) { - char c = (char) r; - handleCharacter(c); - } - } - - /** - * Handles a single character - * - * @param c next character - */ - private static void handleCharacter(char c) { - //updating position - currentPosition++; - if (c == '\n') { - currentLine++; - currentPosition = 1; - } - - //try applying to the innermost element - if (!stack.empty()) { - int change; - try { - change = stack.peek().handleChar(c); - } catch (SyntaxError e) { - change = e.getChange(); - addError(e); - } - - //change greater 0 means the innermost element did some work - if (change > 0) { - //2 means the Element is complete - if (change == 2) { - //remove the topmost element from stack since it is complete - stack.pop(); - return; - } - //3 means the Element is complete and part of a two or more tag system - if (change == 3) { - //remove the topmost element from stack since it is complete - KnownElement k = stack.pop().getKnownElement(); - //if KnownElement k is closing another element, check if there is one and remove it - if (k.isClosing()) { - if (stack.empty()) { //there are no open elements at all - addError(new SyntaxError("Closed tag " + k.getShortDescription() + " without " + - "having any open tags.", -2)); - } else if (stack.peek() instanceof KnownElement) { - //get opening tag - KnownElement kFirst = (KnownElement) stack.pop(); - //check if closing element matches the opening element - if (!kFirst.isMatchingElement(k)) { - addError(new SyntaxError("Opening tag " + kFirst.getShortDescription() + - " does not match closing tag " + k.getShortDescription() + ".", -2)); - } - } else { - //There closing tag inside another not Known element: <div </html> - addError(new SyntaxError("Closing tag " + k.getShortDescription() + " inside " + - "another tag " + stack.peek().getShortDescription() + " without opening first.", - -2, true)); - } - } - //check if the element needs to be closed by another - if (k.isOpening()) { - stack.push(k); - } - return; - } - //means the element couldn't do anything with it and is finished - if (change == 4) { - stack.pop(); - } else { - return; - } - } - } - - - //innermost element was uninterested, trying to find matching element - switch (c) { - //case '@': - //stack.push(new AtElement(currentLine, currentPosition)); - //break; - case '<': - stack.push(new AngleBracketElement(currentLine, currentPosition)); - break; - //case '>': - //addError(new SyntaxError("Dangling \">\", current innermost: " + (stack.empty() ? "null" : stack.peek().getShortDescription()), -2)); - //break; - case '/': - stack.push(new CommentElement(currentLine, currentPosition)); - break; - //case '(': - //stack.push(new BracketElement(currentLine, currentPosition)); - } - } - - /** - * add an error to the error list - * - * @param e new error - */ - private static void addError(SyntaxError e) { - e.setFile(currentFile); - e.setLine(currentLine); - e.setPosition(currentPosition); - errors.add(e); - } -} diff --git a/devTools/javaSanityCheck/src/SyntaxError.java b/devTools/javaSanityCheck/src/SyntaxError.java deleted file mode 100644 index ccb49ccf888..00000000000 --- a/devTools/javaSanityCheck/src/SyntaxError.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.arkerthan.sanityCheck; - -/** - * @author Arkerthan - */ -public class SyntaxError extends Exception { - private String file; - private int line, position; - private String description; - private int change; //see Element for values; -2 means not thrown - private boolean warning = false; - - /** - * @param description description of error - * @param change state change as specified in Element - */ - public SyntaxError(String description, int change) { - this.description = description; - this.change = change; - } - - /** - * @param description description of error - * @param change state change as specified in Element - * @param warning whether it is a warning or an error - */ - public SyntaxError(String description, int change, boolean warning) { - this(description, change); - this.warning = warning; - } - - /** - * @param file at which the error occurred - */ - public void setFile(String file) { - this.file = file; - } - - /** - * @param line in which the error occurred - */ - public void setLine(int line) { - this.line = line; - } - - /** - * @param position at which the error occurred - */ - public void setPosition(int position) { - this.position = position; - } - - /** - * @return error message - */ - public String getError() { - String s = warning ? "Warning: " : "Error: "; - return s + file + ": " + line + ":" + position + " : " + description; - } - - /** - * @return change that happened in Element before it was thrown. -1 if not thrown. - */ - public int getChange() { - return change; - } -} diff --git a/devTools/javaSanityCheck/src/Tag.java b/devTools/javaSanityCheck/src/Tag.java deleted file mode 100644 index 025cef72c10..00000000000 --- a/devTools/javaSanityCheck/src/Tag.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.arkerthan.sanityCheck; - -/** - * @author Arkerthan - */ -public class Tag { - public final String tag; - public final boolean single; - - public Tag(String tag, boolean single) { - this.tag = tag; - this.single = single; - } -} diff --git a/devTools/javaSanityCheck/src/TagSearchTree.java b/devTools/javaSanityCheck/src/TagSearchTree.java deleted file mode 100644 index 68165866594..00000000000 --- a/devTools/javaSanityCheck/src/TagSearchTree.java +++ /dev/null @@ -1,81 +0,0 @@ -package org.arkerthan.sanityCheck; - -import java.util.List; - -/** - * @param <E> Tag class to be stored - * @author Arkerthan - * <p> - * Tag SearchTree stores Tags in an alphabetical search tree. - * Once created the search tree can't be changed anymore. - */ -public class TagSearchTree<E extends Tag> { - private static final int SIZE = 128; - private final TagSearchTree<E>[] branches; - private E element = null; - private String path; - - /** - * creates a new empty TagSearchTree - */ - private TagSearchTree() { - branches = new TagSearchTree[SIZE]; - } - - /** - * Creates a new filled TagSearchTree - * - * @param list Tags to be inserted - */ - public TagSearchTree(List<E> list) { - this(); - for (E e : list) { - this.add(e, 0); - } - } - - /** - * adds a new Tag to the TagSearchTree - * - * @param e Tag to be stored - * @param index index of relevant char for adding in tag - */ - private void add(E e, int index) { - //set the path to here - path = e.tag.substring(0, index); - //checks if tag has to be stored here or further down - if (e.tag.length() == index) { - element = e; - } else { - //store tag in correct branch - char c = e.tag.charAt(index); - if (branches[c] == null) { - branches[c] = new TagSearchTree<>(); - } - branches[c].add(e, index + 1); - } - } - - /** - * @param c character of branch needed - * @return branch or null if branch doesn't exist - */ - public TagSearchTree<E> getBranch(char c) { - if (c >= SIZE) return null; - return branches[c]; - } - - /** - * @return stored Tag, null if empty - */ - public E getElement() { - return element; - } - - /** - * @return path inside full tree to get to this Branch - */ - public String getPath() { - return path; - } -} diff --git a/devTools/javaSanityCheck/src/UnknownStateException.java b/devTools/javaSanityCheck/src/UnknownStateException.java deleted file mode 100644 index 348a275e201..00000000000 --- a/devTools/javaSanityCheck/src/UnknownStateException.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.arkerthan.sanityCheck; - -/** - * @author Arkerthan - */ -public class UnknownStateException extends RuntimeException { - - public UnknownStateException(int state) { - super(String.valueOf(state)); - } -} diff --git a/devTools/javaSanityCheck/src/element/AngleBracketElement.java b/devTools/javaSanityCheck/src/element/AngleBracketElement.java deleted file mode 100644 index 124c8595445..00000000000 --- a/devTools/javaSanityCheck/src/element/AngleBracketElement.java +++ /dev/null @@ -1,380 +0,0 @@ -package org.arkerthan.sanityCheck.element; - -import org.arkerthan.sanityCheck.*; - -import java.util.Arrays; -import java.util.List; - -/** - * @author Arkerthan - */ -public class AngleBracketElement extends Element { - private static final List<String> logicTags = Arrays.asList("if", "elseif", "else", "switch", "case", "default"); - private int state = 0; - /* - 0 - initial: < - TWINE - 1 - << - -1 - <</ - 2 - trying to complete twine tag: <<tag ???>> - -2 - trying to complete twine tag: <</tag>> - 3 - waiting for >> - -3 - expecting > from 3 - 4 - waiting for >> with KnownElement - -4 - expecting > from 4 - 5 - expecting >> - -5 - expecting > - 6 - expecting > with KnownElement opening; comparison? - -6 - expecting > with KnownElement closing - - HTML - -9 - </ - 10 - trying to complete HTML tag: <tag ???> - -10 - trying to complete HTML tag: </tag> - 11 - waiting for > - -11 - expecting > - 12 - waiting for > with KnownElement - */ - - private TagSearchTree<Tag> tree; - - public AngleBracketElement(int line, int pos) { - super(line, pos); - } - - @Override - public int handleChar(char c) throws SyntaxError { - switch (state) { - case 0: - switch (c) { - case '<': - state = 1; - return 1; - case '/': - state = -9; - return 1; - case '>':// empty <> - case ' ':// assume comparison - case '=':// " " - case '3':// a heart: <3 - return 2; - default: - try { - state = 10; - tree = Main.htmlTags; - return handleOpeningHTML(c); - } catch (SyntaxError e) { - state = 1; - throw new SyntaxError("Opening \"<\" missing, found " + c, 1); - } - } - case 1: - if (c == '<') { - throw new SyntaxError("Too many \"<\".", 1); - } else if (c == '>') { - state = 3; - throw new SyntaxError("Empty Statement?", 1); - } else if (c == '/') { - state = -1; - return 1; - } - state = 2; - tree = Main.twineTags; - return handleOpeningTwine(c); - case -1: - if (c == '>') { - throw new SyntaxError("Empty Statement?", 2, true); - } - state = -2; - tree = Main.twineTags; - return handleClosingTwine(c); - - case 2: - return handleOpeningTwine(c); - case -2: - return handleClosingTwine(c); - case 3: - if (c == '>') { - state = -3; - return 1; - } - break; - case -3: - if (c == '>') { - return 2; - } else if (c == ' ' || c == '=') { // assuming comparison - state = 3; - return 1; - } else { - throw new SyntaxError("Closing \">\" missing, opened tag at [" + line + ":" + pos + "]", 2); - } - case 4: - if (c == '>') { - state = -4; - return 1; - } - break; - case -4: - if (c == '>') { - return 3; - } else if (c == ' ' || c == '=') { // assuming comparison - state = 4; - return 1; - } else { - throw new SyntaxError("Closing \">\" missing, opened tag at[" + line + ":" + pos + "]", 2); - } - case 5: - if (c == '>') { - state = -5; - return 1; - } else { - throw new SyntaxError("Closing \">\" missing, opened tag at [" + line + ":" + pos + "]", 2); - } - case -5: - if (c == '>') { - return 2; - } - throw new SyntaxError("Closing \">\" missing, opened tag at [" + line + ":" + pos + "]", 2); - case 6: - if (c == '>') { - return 3; - } else if (c == ' ' || c == '=') { - state = 3; - return 1; - } else { - throw new SyntaxError("Closing \">\" missing, opened tag at [" + line + ":" + pos + "]", 3); - } - case -6: - if (c == '>') { - return 3; - } - throw new SyntaxError("Closing \">\" missing, opened tag at [" + line + ":" + pos + "]", 3); - - case -9: - if (c == '>') { - throw new SyntaxError("Empty Statement?", 2, true); - } - state = -10; - tree = Main.htmlTags; - return handleClosingHTML(c); - case 10: - return handleOpeningHTML(c); - case -10: - return handleClosingHTML(c); - case 11: - if (c == '>') - return 2; - if (c == '@') //@ inside HTML tags is allowed - return 1; - break; - case -11: - if (c == '>') - return 2; - throw new SyntaxError("Closing \">\" missing [2]", 2); - case 12: - if (c == '>') - return 3; - if (c == '@') //@ inside HTML tags is allowed - return 1; - break; - default: - throw new UnknownStateException(state); - } - return 0; - } - - private int handleOpeningHTML(char c) throws SyntaxError { - if (c == ' ') { - state = 11; - if (tree.getElement() == null) { - throw new SyntaxError("Unknown HTML tag", 1); - } - if (!tree.getElement().single) { - k = new KnownHtmlElement(line, pos, true, tree.getElement().tag); - state = 12; - return 1; - } - return 1; - } - if (c == '>') { - if (tree.getElement() == null) { - throw new SyntaxError("Unknown HTML tag", 2); - } - if (!tree.getElement().single) { - k = new KnownHtmlElement(line, pos, true, tree.getElement().tag); - return 3; - } - return 2; - } - - tree = tree.getBranch(c); - if (tree == null) { - state = 11; - throw new SyntaxError("Unknown HTML tag or closing \">\" missing, found " + c, 1); - } - - return 1; - } - - private int handleClosingHTML(char c) throws SyntaxError { - if (c == '>') { - if (tree.getElement() == null) { - throw new SyntaxError("Unknown HTML tag: " + tree.getPath(), 2); - } - if (tree.getElement().single) { - throw new SyntaxError("Single HTML tag used as closing Tag: " + tree.getElement().tag, 2); - } - k = new KnownHtmlElement(line, pos, false, tree.getElement().tag); - return 3; - } - - tree = tree.getBranch(c); - if (tree == null) { - state = -11; - throw new SyntaxError("Unknown HTML tag or closing \">\" missing, found " + c, 1); - } - - return 1; - } - - - private int handleOpeningTwine(char c) throws SyntaxError { - if (c == ' ') { - state = 3; - if (tree.getElement() == null) { - //assuming not listed means widget until better solution - return 1; - } - if (!tree.getElement().single) { - if (logicTags.contains(tree.getElement().tag)) { - k = new KnownLogicElement(line, pos, tree.getElement().tag, false); - } else { - k = new KnownTwineElement(line, pos, true, tree.getElement().tag); - } - state = 4; - return 1; - } - return 1; - } - if (c == '>') { - state = -5; - if (tree.getElement() == null) { - //assuming not listed means widget until better solution - return 1; - } - if (!tree.getElement().single) { - if (logicTags.contains(tree.getElement().tag)) { - k = new KnownLogicElement(line, pos, tree.getElement().tag, false); - } else { - k = new KnownTwineElement(line, pos, true, tree.getElement().tag); - } - state = 6; - return 1; - } - return 2; - } - - tree = tree.getBranch(c); - if (tree == null) { - //assuming not listed means widget until better solution - state = 3; - } - - return 1; - } - - private int handleClosingTwine(char c) throws SyntaxError { - if (c == '>') { - if (tree.getElement() == null) { - throw new SyntaxError("Unknown Twine tag: " + tree.getPath(), 2); - } - if (tree.getElement().single) { - throw new SyntaxError("Single Twine tag used as closing Tag: " + tree.getElement().tag, 2); - } - if (logicTags.contains(tree.getElement().tag)) { - k = new KnownLogicElement(line, pos, tree.getElement().tag, true); - } else { - k = new KnownTwineElement(line, pos, false, tree.getElement().tag); - } - state = -6; - return 1; - } - - tree = tree.getBranch(c); - if (tree == null) { - state = 3; - throw new SyntaxError("Unknown Twine closing tag or closing \">>\" missing, found " + c, 1); - } - - return 1; - } - - @Override - public String getShortDescription() { - StringBuilder builder = new StringBuilder(); - builder.append(getPositionAsString()).append(" "); - switch (state) { - case 0: - builder.append("<"); - break; - //TWINE - case 1: - builder.append("<<"); - break; - case -1: - builder.append("<</"); - break; - case 2: - builder.append("<<").append(tree.getPath()); - break; - case -2: - builder.append("<</").append(tree.getPath()); - break; - case 3: - builder.append("<<???"); - break; - case -3: - builder.append("<<???>"); - break; - case 4: - builder.append("<<").append(tree.getPath()).append(" ???"); - break; - case -4: - builder.append("<<").append(tree.getPath()).append(" ???>"); - break; - case 5: - builder.append("<<???"); - break; - case -5: - builder.append("<<").append(tree == null ? "???" : tree.getPath()).append(">"); - break; - case 6: - builder.append("<<").append(tree.getPath()).append(" ???>"); - break; - case -6: - builder.append("<</").append(tree.getPath()).append(">"); - break; - //HTML - case -9: - builder.append("</"); - break; - case 10: - builder.append("<").append(tree.getPath()); - break; - case -10: - builder.append("</").append(tree.getPath()); - break; - case 11: - builder.append("<?").append(tree == null ? "???" : tree.getPath()); - break; - case -11: - builder.append("</").append(tree == null ? "???" : tree.getPath()); - break; - case 12: - builder.append("<").append(tree.getPath()).append(" ???"); - default: - throw new UnknownStateException(state); - } - return builder.toString(); - } -} diff --git a/devTools/javaSanityCheck/src/element/AtElement.java b/devTools/javaSanityCheck/src/element/AtElement.java deleted file mode 100644 index f6e39a6ddce..00000000000 --- a/devTools/javaSanityCheck/src/element/AtElement.java +++ /dev/null @@ -1,108 +0,0 @@ -package org.arkerthan.sanityCheck.element; - -import org.arkerthan.sanityCheck.SyntaxError; -import org.arkerthan.sanityCheck.UnknownStateException; - -/** - * @author Arkerthan - */ -public class AtElement extends Element { - private int state = 0; - // 0 = @ - // 1 = @@ - // 2 = @@. - // 3 = @@.a -- @@.ab -- @@.abc - // 4 = @@.abc;abc - // 5 = @@.abc;abc@ - - // example: @@.red;some text@@ - - public AtElement(int line, int pos) { - super(line, pos); - } - - @Override - public int handleChar(char c) throws SyntaxError { - switch (state) { - case 0: - state = 1; - if (c == '@') { - return 1; - } else { - if (c == '.') { - state = 2; - } - throw new SyntaxError("Opening \"@\" missing.", 1); - } - case 1: - if (c == '.') { - state = 2; - return 1; - } else { - state = 4; - throw new SyntaxError("\".\" missing, found \"" + c + "\". This might also indicate a " + - "missing closure in the previous color code.", 0, true); - } - case 2: - state = 3; - if (Character.isAlphabetic(c)) { - return 1; - } else { - throw new SyntaxError("Identifier might be wrong.", 1, true); - } - case 3: - if (c == ';') { - state = 4; - return 1; - } else if (c == ' ') { - state = 4; - throw new SyntaxError("\";\" missing or wrong space.", 1); - } - break; - case 4: - if (c == '@') { - state = 5; - return 1; - } - break; - case 5: - if (c == '@') { - return 2; - } else { - throw new SyntaxError("Closing \"@\" missing.", 2); - } - default: - throw new UnknownStateException(state); - } - return 0; - } - - @Override - public String getShortDescription() { - StringBuilder builder = new StringBuilder(); - builder.append(getPositionAsString()).append(" "); - switch (state) { - case 0: - builder.append("@"); - break; - case 1: - builder.append("@@"); - break; - case 2: - builder.append("@@."); - break; - case 3: - builder.append("@@.???"); - break; - case 4: - builder.append("@@???"); - break; - case 5: - builder.append("@@???@"); - break; - default: - throw new UnknownStateException(state); - } - return builder.toString(); - } -} diff --git a/devTools/javaSanityCheck/src/element/BracketElement.java b/devTools/javaSanityCheck/src/element/BracketElement.java deleted file mode 100644 index 89b0a67ef6a..00000000000 --- a/devTools/javaSanityCheck/src/element/BracketElement.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.arkerthan.sanityCheck.element; - -import org.arkerthan.sanityCheck.SyntaxError; - -/** - * @author Arkerthan - */ -public class BracketElement extends Element { - //int state = 0; - - public BracketElement(int line, int pos) { - super(line, pos); - } - - @Override - public int handleChar(char c) throws SyntaxError { - if (c == ')') { - return 2; - } else { - return 0; - } - } - - @Override - public String getShortDescription() { - return getPositionAsString() + " (???"; - } -} diff --git a/devTools/javaSanityCheck/src/element/CommentElement.java b/devTools/javaSanityCheck/src/element/CommentElement.java deleted file mode 100644 index e18e7419432..00000000000 --- a/devTools/javaSanityCheck/src/element/CommentElement.java +++ /dev/null @@ -1,75 +0,0 @@ -package org.arkerthan.sanityCheck.element; - -import org.arkerthan.sanityCheck.SyntaxError; -import org.arkerthan.sanityCheck.UnknownStateException; - -/** - * @author Arkerthan - */ -public class CommentElement extends Element { - private int state = 0; - /* - 0 - / - 1 - /*??? - 2 - /*???* - 3 - /%??? - 4 - /%???% - */ - - /** - * @param line line in which comment starts - * @param pos position in line where comment starts - */ - public CommentElement(int line, int pos) { - super(line, pos); - } - - @Override - public int handleChar(char c) throws SyntaxError { - switch (state) { - case 0: - if (c == '*') { - state = 1; - } else if (c == '%') { - state = 3; - } else if (c == '>') { - throw new SyntaxError("XHTML style closure", 4, true); - } else { - return 4; - } - break; - case 1: - if (c == '*') { - state = 2; - } - break; - case 2: - if (c == '/') { - return 2; - } else if (c == '*') { - return 1; - } - state = 1; - break; - case 3: - if (c == '%') { - state = 4; - } - break; - case 4: - if (c == '/') { - return 2; - } - state = 3; - break; - default: - throw new UnknownStateException(state); - } - return 1; - } - - @Override - public String getShortDescription() { - return getPositionAsString() + "comment"; - } -} diff --git a/devTools/javaSanityCheck/src/element/Element.java b/devTools/javaSanityCheck/src/element/Element.java deleted file mode 100644 index 205f700362b..00000000000 --- a/devTools/javaSanityCheck/src/element/Element.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.arkerthan.sanityCheck.element; - -import org.arkerthan.sanityCheck.SyntaxError; - -/** - * @author Arkerthan - */ -public abstract class Element { - protected KnownElement k; - protected int line, pos; - - /** - * @param line Line the instance was created - * @param pos Position in line the instance was created - */ - protected Element(int line, int pos) { - this.line = line; - this.pos = pos; - } - - /** - * Parses a Char and returns an int depending on the state of the element - * 0 - the Element did nothing - * 1 - the Element changed state - * 2 - the Element is finished - * 3 - the Element is finished and a KnownHtmlElement was generated - * 4 - the Element is finished and the char is still open for use - * - * @param c char to be parsed - * @return state change - * @throws SyntaxError thrown when an syntax error is detected - */ - public abstract int handleChar(char c) throws SyntaxError; - - /** - * @return the constructed KnownElement. null if none was constructed yet. - */ - public KnownElement getKnownElement() { - return k; - } - - /** - * Returns the line and position of the Element in the file it was created in. - * - * @return position of Element in file as String - */ - public String getPositionAsString() { - return "[" + line + ":" + pos + "]"; - } - - /** - * @return a short description usually based on state and position of the Element - */ - public abstract String getShortDescription(); -} diff --git a/devTools/javaSanityCheck/src/element/KnownElement.java b/devTools/javaSanityCheck/src/element/KnownElement.java deleted file mode 100644 index 709fc389177..00000000000 --- a/devTools/javaSanityCheck/src/element/KnownElement.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.arkerthan.sanityCheck.element; - -import org.arkerthan.sanityCheck.SyntaxError; - -/** - * @author Arkerthan - */ -public abstract class KnownElement extends Element { - - /** - * @param line at which it begins - * @param pos at which it begins - */ - public KnownElement(int line, int pos) { - super(line, pos); - } - - /** - * @return true, if it needs another Known Element to close it. - */ - public abstract boolean isOpening(); - - /** - * @return true if it closes another Element. - */ - public abstract boolean isClosing(); - - /** - * @param k Element to be checked - * @return true if given Element closes Element - */ - public abstract boolean isMatchingElement(KnownElement k); - - @Override - public int handleChar(char c) throws SyntaxError { - return 0; - } -} diff --git a/devTools/javaSanityCheck/src/element/KnownHtmlElement.java b/devTools/javaSanityCheck/src/element/KnownHtmlElement.java deleted file mode 100644 index d7c25299ba4..00000000000 --- a/devTools/javaSanityCheck/src/element/KnownHtmlElement.java +++ /dev/null @@ -1,50 +0,0 @@ -package org.arkerthan.sanityCheck.element; - -/** - * @author Arkerthan - */ -public class KnownHtmlElement extends KnownElement { - - private boolean opening; - private String statement; - - /** - * @param line at which it begins - * @param pos at which it begins - * @param opening if it opens a tag: <tag> or closes it: </tag> - * @param statement statement inside the tag - */ - public KnownHtmlElement(int line, int pos, boolean opening, String statement) { - super(line, pos); - this.opening = opening; - this.statement = statement; - } - - @Override - public String getShortDescription() { - StringBuilder builder = new StringBuilder(); - builder.append(getPositionAsString()).append(" <"); - if (!opening) { - builder.append("/"); - } - return builder.append(statement).append(">").toString(); - } - - @Override - public boolean isOpening() { - return opening; - } - - @Override - public boolean isClosing() { - return !opening; - } - - @Override - public boolean isMatchingElement(KnownElement k) { - if (k instanceof KnownHtmlElement) { - return ((KnownHtmlElement) k).statement.equals(this.statement); - } - return false; - } -} diff --git a/devTools/javaSanityCheck/src/element/KnownLogicElement.java b/devTools/javaSanityCheck/src/element/KnownLogicElement.java deleted file mode 100644 index 5c8496a5c55..00000000000 --- a/devTools/javaSanityCheck/src/element/KnownLogicElement.java +++ /dev/null @@ -1,120 +0,0 @@ -package org.arkerthan.sanityCheck.element; - -import org.arkerthan.sanityCheck.DisallowedTagException; -import org.arkerthan.sanityCheck.UnknownStateException; - -import java.util.Arrays; -import java.util.List; - -/** - * @author Arkerthan - */ -public class KnownLogicElement extends KnownElement { - private static final List<String> allowedTags = Arrays.asList("if", "elseif", "else"); - private final int state; - private boolean last; - /* - 0 - if - 1 - elseif - 2 - else - 3 - switch - 4 - case - 5 - default - */ - - public KnownLogicElement(int line, int pos, String tag, boolean last) { - this(line, pos, tag); - this.last = last; - } - - public KnownLogicElement(int line, int pos, String tag) { - super(line, pos); - switch (tag) { - case "if": - state = 0; - break; - case "elseif": - state = 1; - break; - case "else": - state = 2; - break; - case "switch": - state = 3; - break; - case "case": - state = 4; - break; - case "default": - state = 5; - break; - default: - throw new DisallowedTagException(tag); - } - last = false; - } - - @Override - public boolean isOpening() { - return !last; - } - - @Override - public boolean isClosing() { - return (state != 0 && state != 3) || last; - } - - @Override - public boolean isMatchingElement(KnownElement k) { - if (!(k instanceof KnownLogicElement)) { - return false; - } - KnownLogicElement l = (KnownLogicElement) k; - switch (state) { - case 0: - case 1: - return l.state == 1 || l.state == 2 || (l.state == 0 && l.last); - case 2: - return l.state == 0 && l.last; - case 3: - case 4: - return l.state == 3 || l.state == 4; - case 5: - return l.state == 3 && l.last; - default: - throw new UnknownStateException(state); - } - } - - @Override - public String getShortDescription() { - StringBuilder builder = new StringBuilder(); - builder.append(getPositionAsString()).append(" <<"); - if (last) { - builder.append('/'); - } - switch (state) { - case 0: - builder.append("if"); - break; - case 1: - builder.append("elseif"); - break; - case 2: - builder.append("else"); - break; - case 3: - builder.append("switch"); - break; - case 4: - builder.append("case"); - break; - case 5: - builder.append("default"); - break; - default: - throw new UnknownStateException(state); - } - return builder.append(">>").toString(); - } -} diff --git a/devTools/javaSanityCheck/src/element/KnownTwineElement.java b/devTools/javaSanityCheck/src/element/KnownTwineElement.java deleted file mode 100644 index 9693fb840df..00000000000 --- a/devTools/javaSanityCheck/src/element/KnownTwineElement.java +++ /dev/null @@ -1,50 +0,0 @@ -package org.arkerthan.sanityCheck.element; - -/** - * @author Arkerthan - */ -public class KnownTwineElement extends KnownElement { - - private boolean opening; - private String statement; - - /** - * @param line at which it begins - * @param pos at which it begins - * @param opening if it opens a tag: <<tag>> or closes it: <</tag>> - * @param statement statement inside the tag - */ - public KnownTwineElement(int line, int pos, boolean opening, String statement) { - super(line, pos); - this.opening = opening; - this.statement = statement; - } - - @Override - public String getShortDescription() { - StringBuilder builder = new StringBuilder(); - builder.append(getPositionAsString()).append(" <<"); - if (!opening) { - builder.append("/"); - } - return builder.append(statement).append(">>").toString(); - } - - @Override - public boolean isOpening() { - return opening; - } - - @Override - public boolean isClosing() { - return !opening; - } - - @Override - public boolean isMatchingElement(KnownElement k) { - if (k instanceof KnownTwineElement) { - return ((KnownTwineElement) k).statement.equals(this.statement); - } - return false; - } -} -- GitLab