diff --git a/.settings/org.eclipse.buildship.core.prefs b/.settings/org.eclipse.buildship.core.prefs index 408b507..7b8f972 100644 --- a/.settings/org.eclipse.buildship.core.prefs +++ b/.settings/org.eclipse.buildship.core.prefs @@ -1,2 +1,13 @@ +arguments= +auto.sync=false +build.scans.enabled=false +connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER) connection.project.dir= eclipse.preferences.version=1 +gradle.user.home= +java.home= +jvm.arguments= +offline.mode=false +override.workspace.settings=false +show.console.view=false +show.executions.view=false diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..4824b80 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/build.gradle b/build.gradle index 5bccaf5..81eac0a 100644 --- a/build.gradle +++ b/build.gradle @@ -1,55 +1,55 @@ -apply plugin: 'java-library' - -repositories { - jcenter() -} - -archivesBaseName = 'Simple Code Generator' -version = '1.2.2' -apply plugin: 'maven' - -tasks.withType(JavaCompile) { - options.encoding = 'UTF-8' -} - -dependencies { -} - -task srcJar(type: Jar) { - from sourceSets.main.allSource - classifier = 'sources' -} - -artifacts { - archives srcJar -} - -uploadArchives { - repositories.mavenDeployer { - repository(url: 'https://maven.speiger.com/repository/main') { - authentication(userName: project.properties.mavenUser, password: project.properties.mavenPassword) - } - snapshotRepository(url: 'https://maven.speiger.com/repository/main') { - authentication(userName: project.properties.mavenUser, password: project.properties.mavenPassword) - } - pom { - version = project.version - artifactId = project.archivesBaseName.replace(" ", "-") - groupId = 'de.speiger' - project { - licenses { - license { - name = 'The Apache License, Version 2.0' - url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' - } - } - developers { - developer { - id = 'speiger' - name = 'Speiger' - } - } - } - } - } +apply plugin: 'java-library' + +repositories { + jcenter() +} + +archivesBaseName = 'Simple Code Generator' +version = '1.3.0' +apply plugin: 'maven' + +tasks.withType(JavaCompile) { + options.encoding = 'UTF-8' +} + +dependencies { +} + +task srcJar(type: Jar) { + from sourceSets.main.allSource + classifier = 'sources' +} + +artifacts { + archives srcJar +} + +uploadArchives { + repositories.mavenDeployer { + repository(url: 'https://maven.speiger.com/repository/main') { + authentication(userName: project.properties.mavenUser, password: project.properties.mavenPassword) + } + snapshotRepository(url: 'https://maven.speiger.com/repository/main') { + authentication(userName: project.properties.mavenUser, password: project.properties.mavenPassword) + } + pom { + version = project.version + artifactId = project.archivesBaseName.replace(" ", "-") + groupId = 'de.speiger' + project { + licenses { + license { + name = 'The Apache License, Version 2.0' + url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' + } + } + developers { + developer { + id = 'speiger' + name = 'Speiger' + } + } + } + } + } } \ No newline at end of file diff --git a/example/cache.bin b/example/cache.bin index c2588e6..d5a615d 100644 --- a/example/cache.bin +++ b/example/cache.bin @@ -1 +1 @@ -test=e949777578333aa849d74d6a2c651236 +test=ddb9367ebd61888ab31a658dd6f6df86 diff --git a/example/input/test.template b/example/input/test.template index da17d64..a163188 100644 --- a/example/input/test.template +++ b/example/input/test.template @@ -20,4 +20,34 @@ TESTING should not be overriden #endignore TESTING should not be overriden -#endif \ No newline at end of file +#endif + +#iterate +#argument NUMBER 1 2 3 4 5 6 7 8 9 +Lets test number NUMBER +#enditerate + +#if TEST0 +Lets test a true condition. +#iterate +#argument NUMBER 1 2 3 4 5 6 7 8 9 +Lets test number NUMBER +#enditerate +#endif + +#if TEST1 +Lets test a false condition. +#iterate +#argument NUMBER 1 2 3 4 5 6 7 8 9 +Lets test number NUMBER +#enditerate +#endif + +Lets test stacked iterators +#iterate +#argument NUMBER1 1 2 3 +#iterate +#argument NUMBER2 4 5 6 +Lets test numbers NUMBER1 NUMBER2 +#enditerate +#enditerate \ No newline at end of file diff --git a/example/output/test.txt b/example/output/test.txt index accf736..b0f4d03 100644 --- a/example/output/test.txt +++ b/example/output/test.txt @@ -5,4 +5,37 @@ TESTING should not be overriden Test2 should be overriden TESTING should not be overriden too -Test2 should be overriden too \ No newline at end of file +Test2 should be overriden too + +Lets test number 1 +Lets test number 2 +Lets test number 3 +Lets test number 4 +Lets test number 5 +Lets test number 6 +Lets test number 7 +Lets test number 8 +Lets test number 9 + +Lets test a true condition. +Lets test number 1 +Lets test number 2 +Lets test number 3 +Lets test number 4 +Lets test number 5 +Lets test number 6 +Lets test number 7 +Lets test number 8 +Lets test number 9 + + +Lets test stacked iterators +Lets test numbers 1 4 +Lets test numbers 1 5 +Lets test numbers 1 6 +Lets test numbers 2 4 +Lets test numbers 2 5 +Lets test numbers 2 6 +Lets test numbers 3 4 +Lets test numbers 3 5 +Lets test numbers 3 6 \ No newline at end of file diff --git a/src/main/java/speiger/src/builder/base/ConditionedSegment.java b/src/main/java/speiger/src/builder/base/ConditionedSegment.java index 3452cca..4b67d63 100644 --- a/src/main/java/speiger/src/builder/base/ConditionedSegment.java +++ b/src/main/java/speiger/src/builder/base/ConditionedSegment.java @@ -97,6 +97,10 @@ public class ConditionedSegment i += parse(fileName, null, lines, i, segmentText.length(), ignoreCounter, childSegments, postSegments); segmentText.add(lines.get(prev)); } + else if(trimmed.startsWith("#iterate")) { + SegmentIterator.iterateSegment(fileName, trimmed, lines, i, segmentText.length()); + i--; + } continue; } segmentText.add(s); diff --git a/src/main/java/speiger/src/builder/base/SegmentIterator.java b/src/main/java/speiger/src/builder/base/SegmentIterator.java new file mode 100644 index 0000000..281b8d1 --- /dev/null +++ b/src/main/java/speiger/src/builder/base/SegmentIterator.java @@ -0,0 +1,61 @@ +package speiger.src.builder.base; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.StringJoiner; +import java.util.stream.Collectors; + +public class SegmentIterator { + public static void iterateSegment(String fileName, String currentLine, List lines, int currentIndex, int startIndex) { + List arguments = new ArrayList<>(); + StringJoiner toIterate = new StringJoiner("\n"); + int skip = 0; + int end = 1; + for(int i = currentIndex+1;i 0) + { + toIterate.add(s); + continue; + } + if(trimmed.startsWith("#argument")) + { + arguments.add(trimmed.substring(9).trim().split(" ")); + continue; + } + } + toIterate.add(s); + } + int size = arguments.get(0).length; + for(int i = 1,m=arguments.size();i[] mappers = debugUnusedMappers() ? new Set[]{Collections.synchronizedSet(new HashSet()), Collections.synchronizedSet(new HashSet())} : null; + Set[] mappers = debugUnusedMappers() ? new Set[]{Collections.synchronizedSet(new HashSet<>()), Collections.synchronizedSet(new HashSet<>())} : null; ThreadPoolExecutor service = (ThreadPoolExecutor)Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); service.setKeepAliveTime(10, TimeUnit.MILLISECONDS); service.allowCoreThreadTimeOut(true);