From eba6a051fd20f99c198284b1d65f78f8f03f7a13 Mon Sep 17 00:00:00 2001 From: jeffcheasey88 Date: Wed, 31 May 2023 15:17:29 +0200 Subject: [PATCH] Operation -> Continue --- .../java/operations/LoopAffectOperation.java | 47 +++++++++++++++++++ .../java/operations/OperationFactory.java | 5 +- .../peeratcode/parser/java/OperationTest.java | 29 +++++++++++- 3 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 src/be/jeffcheasey88/peeratcode/parser/java/operations/LoopAffectOperation.java diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/operations/LoopAffectOperation.java b/src/be/jeffcheasey88/peeratcode/parser/java/operations/LoopAffectOperation.java new file mode 100644 index 0000000..b2189b8 --- /dev/null +++ b/src/be/jeffcheasey88/peeratcode/parser/java/operations/LoopAffectOperation.java @@ -0,0 +1,47 @@ +package be.jeffcheasey88.peeratcode.parser.java.operations; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import be.jeffcheasey88.peeratcode.parser.java.CleanerPool; +import be.jeffcheasey88.peeratcode.parser.java.JavaElement; + +public class LoopAffectOperation extends JavaElement{ + + private Pattern pattern; + + public LoopAffectOperation(Pattern pattern){ + this.pattern = pattern; + } + + @Override + public int parse(String content, CleanerPool global, CleanerPool local) throws Exception{ + Matcher matcher = this.pattern.matcher(content); + matcher.matches(); + + return matcher.group(1).length(); + } + + @Override + public void show(int tab){ + String start = ""; + for(int i = 0; i < tab; i++) start+="\t"; + System.out.println(start+"loop affect??;"); + } + + public static class ContinueOperation extends LoopAffectOperation{ + + private static Pattern PATTERN = Pattern.compile("^(\\s*continue\\s*;).*$"); + + public ContinueOperation(){ + super(PATTERN); + } + + @Override + public void show(int tab){ + String start = ""; + for(int i = 0; i < tab; i++) start+="\t"; + System.out.println(start+"continue;"); + } + } +} diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/operations/OperationFactory.java b/src/be/jeffcheasey88/peeratcode/parser/java/operations/OperationFactory.java index 1bd233c..29e0d93 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/operations/OperationFactory.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/operations/OperationFactory.java @@ -12,6 +12,7 @@ import be.jeffcheasey88.peeratcode.parser.java.Variable; import be.jeffcheasey88.peeratcode.parser.java.operations.ConditionalOperation.ForOperation; import be.jeffcheasey88.peeratcode.parser.java.operations.ConditionalOperation.IfOperation; import be.jeffcheasey88.peeratcode.parser.java.operations.ConditionalOperation.WhileOperation; +import be.jeffcheasey88.peeratcode.parser.java.operations.LoopAffectOperation.ContinueOperation; public class OperationFactory{ @@ -33,6 +34,8 @@ public class OperationFactory{ this.patterns.put(Pattern.compile("^\\s*else\\s*.*$"), ElseOperation.class); this.patterns.put(Pattern.compile("^\\s*do\\s*\\^GENERIC_FUNCTION\\d+.*$"), DoOperation.class); + this.patterns.put(Pattern.compile("^\\s*continue\\s*;.*$"), ContinueOperation.class); + this.patterns.put(Pattern.compile("^\\s*[^\\^\\s]+\\^GENERIC_PARENTHESIS\\d+;.*$"), MethodCallOperation.class); this.patterns.put(Pattern.compile("^\\s*[^\\s]+\\s+[^\\s]+\\s*=\\s*[^;]+;.*$"), Variable.class); @@ -50,7 +53,7 @@ public class OperationFactory{ * if OK * switch case * return OK - * continue + * continue OK * break * try catch finally * throw diff --git a/test/be/jeffcheasey88/peeratcode/parser/java/OperationTest.java b/test/be/jeffcheasey88/peeratcode/parser/java/OperationTest.java index ef3c2d3..80d5fd4 100644 --- a/test/be/jeffcheasey88/peeratcode/parser/java/OperationTest.java +++ b/test/be/jeffcheasey88/peeratcode/parser/java/OperationTest.java @@ -10,9 +10,12 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance.Lifecycle; -import be.jeffcheasey88.peeratcode.parser.java.operations.DoOperation; -import be.jeffcheasey88.peeratcode.parser.java.operations.MethodCallOperation; +import be.jeffcheasey88.peeratcode.parser.java.operations.ConditionalOperation.ForOperation; import be.jeffcheasey88.peeratcode.parser.java.operations.ConditionalOperation.WhileOperation; +import be.jeffcheasey88.peeratcode.parser.java.operations.DoOperation; +import be.jeffcheasey88.peeratcode.parser.java.operations.LoopAffectOperation.ContinueOperation; +import be.jeffcheasey88.peeratcode.parser.java.operations.MethodCallOperation; +import kotlin.coroutines.Continuation; @TestInstance(Lifecycle.PER_CLASS) class OperationTest{ @@ -90,4 +93,26 @@ class OperationTest{ } } + + @Test + void continueOperation(){ + try { + JavaParser parser = parse("package be.jeffcheasey88.peeratcode.parser.java; class Test{ void function(){ for(int i = 0; i < 1; i++) continue; } }"); + Class clazz = parser.getClazz(); + + clazz.show(0); + + assertEquals(1, clazz.getChilds().size()); + Function function = (Function) clazz.getChilds().get(0); + assertEquals(1, function.getChilds().size()); + + assertEquals(ForOperation.class, function.getChilds().get(0).getClass()); + ForOperation f = (ForOperation)function.getChilds().get(0); + assertEquals(1, f.getChilds().size()); + assertEquals(ContinueOperation.class, f.getChilds().get(0).getClass()); + } catch (Exception e) { + e.printStackTrace(); + } + + } }