Added New Feature that was really nessesary.
-Added: #ignore which allows the template process to ignore segments. They can be used with #if but in a ignored segment you are not allowed to use #if/#else/#else if/#endif since it is outside of the context of the template process. But this allows to address issues with marking areas.
This commit is contained in:
		
							parent
							
								
									d3d1cb48b6
								
							
						
					
					
						commit
						d4e3da23fa
					
				| @ -15,7 +15,7 @@ repositories { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| dependencies { | dependencies { | ||||||
| 	compile 'de.speiger:Simple-Code-Generator:1.0.5' | 	compile 'de.speiger:Simple-Code-Generator:1.1.0' | ||||||
| } | } | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -5,7 +5,7 @@ repositories { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| archivesBaseName = 'Simple Code Generator' | archivesBaseName = 'Simple Code Generator' | ||||||
| version = '1.0.5' | version = '1.1.0' | ||||||
| apply plugin: 'maven' | apply plugin: 'maven' | ||||||
| 
 | 
 | ||||||
| tasks.withType(JavaCompile) { | tasks.withType(JavaCompile) { | ||||||
| @ -47,7 +47,6 @@ uploadArchives { | |||||||
| 					developer { | 					developer { | ||||||
| 						id = 'speiger' | 						id = 'speiger' | ||||||
| 						name = 'Speiger' | 						name = 'Speiger' | ||||||
| 						email = 'speiger@gmx.net' |  | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								example/cache.bin
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								example/cache.bin
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | test=e949777578333aa849d74d6a2c651236 | ||||||
							
								
								
									
										23
									
								
								example/input/test.template
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								example/input/test.template
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,23 @@ | |||||||
|  | Hello this is my test | ||||||
|  | 
 | ||||||
|  | #ignore | ||||||
|  | TESTING should not be overriden | ||||||
|  | #endignore | ||||||
|  | 
 | ||||||
|  | TESTING should be overriden | ||||||
|  | 
 | ||||||
|  | #if TEST0 | ||||||
|  | #ignore | ||||||
|  | TESTING should not be overriden too | ||||||
|  | #endignore | ||||||
|  | 
 | ||||||
|  | TESTING should be overriden too | ||||||
|  | #endif | ||||||
|  | #if TEST1 | ||||||
|  | 
 | ||||||
|  | #ignore | ||||||
|  | TESTING should not be overriden | ||||||
|  | #endignore | ||||||
|  | 
 | ||||||
|  | TESTING should not be overriden | ||||||
|  | #endif | ||||||
							
								
								
									
										8
									
								
								example/output/test.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								example/output/test.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | Hello this is my test | ||||||
|  | 
 | ||||||
|  | TESTING should not be overriden | ||||||
|  | 
 | ||||||
|  | Test2 should be overriden | ||||||
|  | TESTING should not be overriden too | ||||||
|  | 
 | ||||||
|  | Test2 should be overriden too | ||||||
| @ -4,6 +4,7 @@ import java.util.ArrayList; | |||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Set; | import java.util.Set; | ||||||
| import java.util.StringJoiner; | import java.util.StringJoiner; | ||||||
|  | import java.util.concurrent.atomic.AtomicInteger; | ||||||
| import java.util.regex.Pattern; | import java.util.regex.Pattern; | ||||||
| 
 | 
 | ||||||
| import speiger.src.builder.conditions.ICondition; | import speiger.src.builder.conditions.ICondition; | ||||||
| @ -37,12 +38,17 @@ public class ConditionedSegment | |||||||
| 		return builder.length() - length; | 		return builder.length() - length; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	public static int parse(String fileName, String currentLine, List<String> lines, int currentIndex, int startIndex, List<ConditionedSegment> segments) throws IllegalStateException | 	public static int parse(String fileName, String currentLine, List<String> lines, int currentIndex, int startIndex, AtomicInteger ignoreCounter, List<ConditionedSegment> segments, List<PostSegment> postSegments) throws IllegalStateException | ||||||
| 	{ | 	{ | ||||||
|  | 		int ignoreSegmentId = ignoreCounter.get(); | ||||||
| 		ConditionedSegment segment = new ConditionedSegment(startIndex); | 		ConditionedSegment segment = new ConditionedSegment(startIndex); | ||||||
| 		ICondition condition = ICondition.parse(currentLine); | 		ICondition condition = currentLine == null ? null : ICondition.parse(currentLine); | ||||||
| 		List<ConditionedSegment> childSegments = new ArrayList<>(); | 		List<ConditionedSegment> childSegments = new ArrayList<>(); | ||||||
| 		StringJoiner segmentText = new StringJoiner("\n", (currentIndex <= 0 || includeStartNewLine(lines.get(currentIndex-1).trim())) ? "\n" : "", ""); | 		StringJoiner segmentText = new StringJoiner("\n", (currentIndex <= 0 || includeStartNewLine(lines.get(currentIndex-1).trim())) ? "\n" : "", ""); | ||||||
|  | 		if(currentLine == null) { | ||||||
|  | 			lines.set(currentIndex, "#ignoreLine"+ignoreSegmentId); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
| 		for(int i = currentIndex+1;i<lines.size();i++) | 		for(int i = currentIndex+1;i<lines.size();i++) | ||||||
| 		{ | 		{ | ||||||
| 			String s = lines.get(i); | 			String s = lines.get(i); | ||||||
| @ -51,6 +57,7 @@ public class ConditionedSegment | |||||||
| 			{ | 			{ | ||||||
| 				if(trimmed.startsWith("#else if")) | 				if(trimmed.startsWith("#else if")) | ||||||
| 				{ | 				{ | ||||||
|  | 					if(currentLine == null) throw new IllegalStateException("#else if isn't working while in a ignore segment"); | ||||||
| 					segment.addSegment(new Segment(segmentText.toString(), condition, childSegments)); | 					segment.addSegment(new Segment(segmentText.toString(), condition, childSegments)); | ||||||
| 					condition = ICondition.parse(trimmed.substring(8).trim()); | 					condition = ICondition.parse(trimmed.substring(8).trim()); | ||||||
| 					childSegments = new ArrayList<>(); | 					childSegments = new ArrayList<>(); | ||||||
| @ -58,6 +65,7 @@ public class ConditionedSegment | |||||||
| 				} | 				} | ||||||
| 				else if(trimmed.startsWith("#else")) | 				else if(trimmed.startsWith("#else")) | ||||||
| 				{ | 				{ | ||||||
|  | 					if(currentLine == null) throw new IllegalStateException("#else isn't working while in a ignore segment"); | ||||||
| 					segment.addSegment(new Segment(segmentText.toString(), condition, childSegments)); | 					segment.addSegment(new Segment(segmentText.toString(), condition, childSegments)); | ||||||
| 					condition = ICondition.ALWAYS_TRUE; | 					condition = ICondition.ALWAYS_TRUE; | ||||||
| 					childSegments = new ArrayList<>(); | 					childSegments = new ArrayList<>(); | ||||||
| @ -65,13 +73,29 @@ public class ConditionedSegment | |||||||
| 				} | 				} | ||||||
| 				else if(trimmed.startsWith("#endif")) | 				else if(trimmed.startsWith("#endif")) | ||||||
| 				{ | 				{ | ||||||
|  | 					if(currentLine == null) throw new IllegalStateException("#endif isn't working while in a ignore segment"); | ||||||
| 					segment.addSegment(new Segment(segmentText.toString(), condition, childSegments)); | 					segment.addSegment(new Segment(segmentText.toString(), condition, childSegments)); | ||||||
| 					segments.add(segment); | 					segments.add(segment); | ||||||
| 					return i - currentIndex; | 					return i - currentIndex; | ||||||
| 				} | 				} | ||||||
|  | 				else if(trimmed.startsWith("#endignore")) | ||||||
|  | 				{ | ||||||
|  | 					postSegments.add(new PostSegment(segmentText.toString(), "#ignoreLine"+ignoreSegmentId)); | ||||||
|  | 					segments.add(segment); | ||||||
|  | 					return i - currentIndex; | ||||||
|  | 				} | ||||||
| 				else if(trimmed.startsWith("#if")) | 				else if(trimmed.startsWith("#if")) | ||||||
| 				{ | 				{ | ||||||
| 					i += parse(fileName, trimmed.substring(3).trim(), lines, i, segmentText.length(), childSegments); | 					if(currentLine == null) throw new IllegalStateException("#if isn't working while in a ignore segment"); | ||||||
|  | 					i += parse(fileName, trimmed.substring(3).trim(), lines, i, segmentText.length(), ignoreCounter, childSegments, postSegments); | ||||||
|  | 				} | ||||||
|  | 				else if(trimmed.startsWith("#ignore")) | ||||||
|  | 				{ | ||||||
|  | 					if(currentLine == null) throw new IllegalStateException("#ignore lines can't be applied Recursively"); | ||||||
|  | 					ignoreCounter.incrementAndGet(); | ||||||
|  | 					int prev = i; | ||||||
|  | 					i += parse(fileName, null, lines, i, segmentText.length(), ignoreCounter, childSegments, postSegments); | ||||||
|  | 					segmentText.add(lines.get(prev));					 | ||||||
| 				} | 				} | ||||||
| 				continue; | 				continue; | ||||||
| 			} | 			} | ||||||
| @ -82,6 +106,6 @@ public class ConditionedSegment | |||||||
| 	 | 	 | ||||||
| 	static boolean includeStartNewLine(String s) | 	static boolean includeStartNewLine(String s) | ||||||
| 	{ | 	{ | ||||||
| 		return !s.startsWith("#") || s.equalsIgnoreCase("#endif"); | 		return !s.startsWith("#") || s.equalsIgnoreCase("#endif") || s.equalsIgnoreCase("#endignore"); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										18
									
								
								src/main/java/speiger/src/builder/base/PostSegment.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/main/java/speiger/src/builder/base/PostSegment.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,18 @@ | |||||||
|  | package speiger.src.builder.base; | ||||||
|  | 
 | ||||||
|  | public class PostSegment | ||||||
|  | { | ||||||
|  | 	String text; | ||||||
|  | 	String identifier; | ||||||
|  | 	 | ||||||
|  | 	public PostSegment(String text, String identifier) | ||||||
|  | 	{ | ||||||
|  | 		this.text = text; | ||||||
|  | 		this.identifier = identifier; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	public String build(String input) | ||||||
|  | 	{ | ||||||
|  | 		return input.replaceAll("\n"+identifier, text); | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @ -7,6 +7,7 @@ import java.util.ArrayList; | |||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Set; | import java.util.Set; | ||||||
| import java.util.StringJoiner; | import java.util.StringJoiner; | ||||||
|  | import java.util.concurrent.atomic.AtomicInteger; | ||||||
| 
 | 
 | ||||||
| import speiger.src.builder.mappers.IMapper; | import speiger.src.builder.mappers.IMapper; | ||||||
| import speiger.src.builder.misc.FileUtils; | import speiger.src.builder.misc.FileUtils; | ||||||
| @ -16,12 +17,14 @@ public class Template | |||||||
| 	String fileName; | 	String fileName; | ||||||
| 	String textFile; | 	String textFile; | ||||||
| 	List<ConditionedSegment> segments; | 	List<ConditionedSegment> segments; | ||||||
|  | 	List<PostSegment> postSegments; | ||||||
| 	 | 	 | ||||||
| 	public Template(String fileName, String textFile, List<ConditionedSegment> segments) | 	public Template(String fileName, String textFile, List<ConditionedSegment> segments, List<PostSegment> postSegments) | ||||||
| 	{ | 	{ | ||||||
| 		this.fileName = fileName; | 		this.fileName = fileName; | ||||||
| 		this.textFile = textFile; | 		this.textFile = textFile; | ||||||
| 		this.segments = segments; | 		this.segments = segments; | ||||||
|  | 		this.postSegments = postSegments; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	public String getFileName() | 	public String getFileName() | ||||||
| @ -53,13 +56,19 @@ public class Template | |||||||
| 				result = mappers.get(i).apply(result); | 				result = mappers.get(i).apply(result); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  | 		for(int i = 0,m=postSegments.size();i<m;i++) | ||||||
|  | 		{ | ||||||
|  | 			result = postSegments.get(i).build(result); | ||||||
|  | 		} | ||||||
| 		return result; | 		return result; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	public static Template parse(Path file) throws IOException | 	public static Template parse(Path file) throws IOException | ||||||
| 	{ | 	{ | ||||||
| 		String fileName = FileUtils.getFileName(file.getFileName()); | 		String fileName = FileUtils.getFileName(file.getFileName()); | ||||||
| 		List<ConditionedSegment> segments = new ArrayList<ConditionedSegment>(); | 		AtomicInteger segmentIds = new AtomicInteger(); | ||||||
|  | 		List<ConditionedSegment> segments = new ArrayList<>(); | ||||||
|  | 		List<PostSegment> postSegments = new ArrayList<>(); | ||||||
| 		StringJoiner joiner = new StringJoiner("\n"); | 		StringJoiner joiner = new StringJoiner("\n"); | ||||||
| 		List<String> lines = Files.readAllLines(file); | 		List<String> lines = Files.readAllLines(file); | ||||||
| 		for(int i = 0;i<lines.size();i++) | 		for(int i = 0;i<lines.size();i++) | ||||||
| @ -70,7 +79,15 @@ public class Template | |||||||
| 			{ | 			{ | ||||||
| 				if(trimmed.startsWith("#if")) | 				if(trimmed.startsWith("#if")) | ||||||
| 				{ | 				{ | ||||||
| 					i += ConditionedSegment.parse(fileName, s.trim().substring(3).trim(), lines, i, joiner.length(), segments); | 					i += ConditionedSegment.parse(fileName, s.trim().substring(3).trim(), lines, i, joiner.length(), segmentIds, segments, postSegments); | ||||||
|  | 					continue; | ||||||
|  | 				} | ||||||
|  | 				else if(trimmed.startsWith("#ignore")) | ||||||
|  | 				{ | ||||||
|  | 					segmentIds.getAndIncrement(); | ||||||
|  | 					int prev = i; | ||||||
|  | 					i += ConditionedSegment.parse(fileName, null, lines, i, joiner.length(), segmentIds, segments, postSegments); | ||||||
|  | 					joiner.add(lines.get(prev)); | ||||||
| 					continue;					 | 					continue;					 | ||||||
| 				} | 				} | ||||||
| 				else if(trimmed.startsWith("#symlink")) | 				else if(trimmed.startsWith("#symlink")) | ||||||
| @ -80,6 +97,6 @@ public class Template | |||||||
| 			} | 			} | ||||||
| 			joiner.add(s); | 			joiner.add(s); | ||||||
| 		} | 		} | ||||||
| 		return new Template(fileName, joiner.toString(), segments); | 		return new Template(fileName, joiner.toString(), segments, postSegments); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -73,6 +73,11 @@ public class ArgumentMapper implements IMapper | |||||||
| 		{ | 		{ | ||||||
| 			e.printStackTrace(); | 			e.printStackTrace(); | ||||||
| 		} | 		} | ||||||
|  | 		catch(Error error)  | ||||||
|  | 		{ | ||||||
|  | 			System.out.println("Error with ["+pattern.pattern()+"] pattern"); | ||||||
|  | 			throw error; | ||||||
|  | 		} | ||||||
| 		return t; | 		return t; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
|  | |||||||
| @ -70,6 +70,11 @@ public class InjectMapper implements IMapper | |||||||
| 		{ | 		{ | ||||||
| 			e.printStackTrace(); | 			e.printStackTrace(); | ||||||
| 		} | 		} | ||||||
|  | 		catch(Error error)  | ||||||
|  | 		{ | ||||||
|  | 			System.out.println("Error with ["+pattern.pattern()+"] pattern"); | ||||||
|  | 			throw error; | ||||||
|  | 		} | ||||||
| 		return t; | 		return t; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
|  | |||||||
| @ -31,22 +31,34 @@ public class LineMapper implements IMapper | |||||||
| 	public String apply(String t) | 	public String apply(String t) | ||||||
| 	{ | 	{ | ||||||
| 		RegexMatcher matcher = new RegexMatcher(pattern, t); | 		RegexMatcher matcher = new RegexMatcher(pattern, t); | ||||||
| 		if(matcher.find()) | 		try | ||||||
| 		{ | 		{ | ||||||
| 			StringBuffer buffer = new StringBuffer();			 | 			if(matcher.find()) | ||||||
| 			do |  | ||||||
| 			{ | 			{ | ||||||
| 				int start = matcher.end() - 1; | 				StringBuffer buffer = new StringBuffer();			 | ||||||
| 				int[] result = RegexUtil.findFullLine(t, start); | 				do | ||||||
| 				if(result != null) |  | ||||||
| 				{ | 				{ | ||||||
| 					matcher.appendReplacement(buffer, pattern.pattern()); | 					int start = matcher.end() - 1; | ||||||
| 					buffer.setLength(buffer.length() - (start - result[0])); | 					int[] result = RegexUtil.findFullLine(t, start); | ||||||
| 					matcher.skip(result[1] - start); | 					if(result != null) | ||||||
| 				} | 					{ | ||||||
|             } while (matcher.find()); | 						matcher.appendReplacement(buffer, pattern.pattern()); | ||||||
|             matcher.appendTail(buffer); | 						buffer.setLength(buffer.length() - (start - result[0])); | ||||||
|             return apply(buffer.toString()); | 						matcher.skip(result[1] - start); | ||||||
|  | 					} | ||||||
|  | 	            } while (matcher.find()); | ||||||
|  | 	            matcher.appendTail(buffer); | ||||||
|  | 	            return apply(buffer.toString()); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		catch(Exception e) | ||||||
|  | 		{ | ||||||
|  | 			e.printStackTrace(); | ||||||
|  | 		} | ||||||
|  | 		catch(Error error)  | ||||||
|  | 		{ | ||||||
|  | 			System.out.println("Error with ["+pattern.pattern()+"] pattern"); | ||||||
|  | 			throw error; | ||||||
| 		} | 		} | ||||||
| 		return t; | 		return t; | ||||||
| 	} | 	} | ||||||
|  | |||||||
| @ -29,6 +29,19 @@ public class SimpleMapper implements IMapper | |||||||
| 	@Override | 	@Override | ||||||
| 	public String apply(String t) | 	public String apply(String t) | ||||||
| 	{ | 	{ | ||||||
| 		return pattern.matcher(t).replaceAll(replacement); | 		try | ||||||
|  | 		{ | ||||||
|  | 			return pattern.matcher(t).replaceAll(replacement);			 | ||||||
|  | 		} | ||||||
|  | 		catch(Exception e) | ||||||
|  | 		{ | ||||||
|  | 			e.printStackTrace(); | ||||||
|  | 		} | ||||||
|  | 		catch(Error error)  | ||||||
|  | 		{ | ||||||
|  | 			System.out.println("Error with ["+pattern.pattern()+"] pattern"); | ||||||
|  | 			throw error; | ||||||
|  | 		} | ||||||
|  | 		return t; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -14,12 +14,14 @@ public class BuildTask implements Runnable | |||||||
| 	Template template; | 	Template template; | ||||||
| 	TemplateProcess process; | 	TemplateProcess process; | ||||||
| 	Set<IMapper>[] mappers; | 	Set<IMapper>[] mappers; | ||||||
|  | 	boolean silencedSuccess; | ||||||
| 	 | 	 | ||||||
| 	public BuildTask(Path basePath, Template template, TemplateProcess process, Set<IMapper>[] mappers) | 	public BuildTask(Path basePath, Template template, TemplateProcess process, boolean silencedSuccess, Set<IMapper>[] mappers) | ||||||
| 	{ | 	{ | ||||||
| 		this.basePath = basePath; | 		this.basePath = basePath; | ||||||
| 		this.template = template; | 		this.template = template; | ||||||
| 		this.process = process; | 		this.process = process; | ||||||
|  | 		this.silencedSuccess = silencedSuccess; | ||||||
| 		this.mappers = mappers; | 		this.mappers = mappers; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| @ -44,7 +46,7 @@ public class BuildTask implements Runnable | |||||||
| 		{ | 		{ | ||||||
| 			writer.write(s); | 			writer.write(s); | ||||||
| 			writer.flush(); | 			writer.flush(); | ||||||
| 			System.out.println("Created: "+process.fileName); | 			if(!silencedSuccess) System.out.println("Created: "+process.fileName); | ||||||
| 		} | 		} | ||||||
| 		catch(Exception e) | 		catch(Exception e) | ||||||
| 		{ | 		{ | ||||||
|  | |||||||
| @ -23,28 +23,33 @@ public class TemplateProcess | |||||||
| 		this.fileName = fileName; | 		this.fileName = fileName; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	public void setPathBuilder(UnaryOperator<Path> pathBuilder) | 	public TemplateProcess setPathBuilder(UnaryOperator<Path> pathBuilder) | ||||||
| 	{ | 	{ | ||||||
| 		this.pathBuilder = pathBuilder; | 		this.pathBuilder = pathBuilder; | ||||||
|  | 		return this; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	public void addFlags(String...flags) | 	public TemplateProcess addFlags(String...flags) | ||||||
| 	{ | 	{ | ||||||
| 		parsePool.addAll(Arrays.asList(flags)); | 		parsePool.addAll(Arrays.asList(flags)); | ||||||
|  | 		return this; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	public void addFlags(Collection<String> flags) | 	public TemplateProcess addFlags(Collection<String> flags) | ||||||
| 	{ | 	{ | ||||||
| 		parsePool.addAll(flags); | 		parsePool.addAll(flags); | ||||||
|  | 		return this; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	public void addMapper(IMapper mapper) | 	public TemplateProcess addMapper(IMapper mapper) | ||||||
| 	{ | 	{ | ||||||
| 		mappers.add(mapper); | 		mappers.add(mapper); | ||||||
|  | 		return this; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	public void addMappers(Collection<IMapper> mappers) | 	public TemplateProcess addMappers(Collection<IMapper> mappers) | ||||||
| 	{ | 	{ | ||||||
| 		this.mappers.addAll(mappers); | 		this.mappers.addAll(mappers); | ||||||
|  | 		return this; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -24,10 +24,17 @@ public abstract class TemplateProcessor | |||||||
| 	Path sourceFolder; | 	Path sourceFolder; | ||||||
| 	Path outputFolder; | 	Path outputFolder; | ||||||
| 	Path dataFolder; | 	Path dataFolder; | ||||||
|  | 	boolean silencedSuccess; | ||||||
| 	boolean init = false; | 	boolean init = false; | ||||||
| 	 | 	 | ||||||
| 	public TemplateProcessor(Path sourceFolder, Path outputFolder, Path dataFolder) | 	public TemplateProcessor(Path sourceFolder, Path outputFolder, Path dataFolder) | ||||||
| 	{ | 	{ | ||||||
|  | 		this(false, sourceFolder, outputFolder, dataFolder); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	public TemplateProcessor(boolean silencedSuccess, Path sourceFolder, Path outputFolder, Path dataFolder) | ||||||
|  | 	{ | ||||||
|  | 		this.silencedSuccess = silencedSuccess; | ||||||
| 		this.sourceFolder = sourceFolder; | 		this.sourceFolder = sourceFolder; | ||||||
| 		this.outputFolder = outputFolder; | 		this.outputFolder = outputFolder; | ||||||
| 		this.dataFolder = dataFolder; | 		this.dataFolder = dataFolder; | ||||||
| @ -87,6 +94,7 @@ public abstract class TemplateProcessor | |||||||
| 	protected Path getSourceFolder() { return sourceFolder; } | 	protected Path getSourceFolder() { return sourceFolder; } | ||||||
| 	protected Path getOutputFolder() { return outputFolder; } | 	protected Path getOutputFolder() { return outputFolder; } | ||||||
| 	protected Path getDataFolder() { return dataFolder; } | 	protected Path getDataFolder() { return dataFolder; } | ||||||
|  | 	protected boolean isSilencedSuccess() { return silencedSuccess; } | ||||||
| 	 | 	 | ||||||
| 	public final boolean process(boolean force) throws IOException, InterruptedException | 	public final boolean process(boolean force) throws IOException, InterruptedException | ||||||
| 	{ | 	{ | ||||||
| @ -119,7 +127,7 @@ public abstract class TemplateProcessor | |||||||
| 					Template template = Template.parse(path); | 					Template template = Template.parse(path); | ||||||
| 					counters[2].addAndGet(System.currentTimeMillis() - startTime); | 					counters[2].addAndGet(System.currentTimeMillis() - startTime); | ||||||
| 					counters[1].addAndGet(1); | 					counters[1].addAndGet(1); | ||||||
| 					createProcesses(FileUtils.getFileName(path), T -> {service.execute(new BuildTask(relative ? outputFolder.resolve(sourceFolder.relativize(path).getParent()) : outputFolder, template, T, mappers));counters[0].addAndGet(1);}); | 					createProcesses(FileUtils.getFileName(path), T -> {service.execute(new BuildTask(relative ? outputFolder.resolve(sourceFolder.relativize(path).getParent()) : outputFolder, template, T, silencedSuccess, mappers));counters[0].addAndGet(1);}); | ||||||
| 				} | 				} | ||||||
| 				catch(Exception e)  | 				catch(Exception e)  | ||||||
| 				{  | 				{  | ||||||
|  | |||||||
							
								
								
									
										68
									
								
								src/test/java/example/ExampleBuilder.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								src/test/java/example/ExampleBuilder.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,68 @@ | |||||||
|  | package example; | ||||||
|  | 
 | ||||||
|  | import java.io.IOException; | ||||||
|  | import java.nio.file.Path; | ||||||
|  | import java.nio.file.Paths; | ||||||
|  | import java.util.function.Consumer; | ||||||
|  | 
 | ||||||
|  | import speiger.src.builder.mappers.SimpleMapper; | ||||||
|  | import speiger.src.builder.processor.TemplateProcess; | ||||||
|  | import speiger.src.builder.processor.TemplateProcessor; | ||||||
|  | 
 | ||||||
|  | public class ExampleBuilder extends TemplateProcessor | ||||||
|  | { | ||||||
|  | 	 | ||||||
|  | 	public static void main(String...args) | ||||||
|  | 	{ | ||||||
|  | 		try | ||||||
|  | 		{ | ||||||
|  | 			new ExampleBuilder().process(true); | ||||||
|  | 		} | ||||||
|  | 		catch(IOException e) | ||||||
|  | 		{ | ||||||
|  | 			// TODO Auto-generated catch block | ||||||
|  | 			e.printStackTrace(); | ||||||
|  | 		} | ||||||
|  | 		catch(InterruptedException e) | ||||||
|  | 		{ | ||||||
|  | 			// TODO Auto-generated catch block | ||||||
|  | 			e.printStackTrace(); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	public ExampleBuilder() | ||||||
|  | 	{ | ||||||
|  | 		super(Paths.get("example/input"), Paths.get("example/output"), Paths.get("example")); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Override | ||||||
|  | 	protected void init() | ||||||
|  | 	{ | ||||||
|  | 		 | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	@Override | ||||||
|  | 	protected boolean isFileValid(Path fileName) | ||||||
|  | 	{ | ||||||
|  | 		return true; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	@Override | ||||||
|  | 	public void createProcesses(String fileName, Consumer<TemplateProcess> process) | ||||||
|  | 	{ | ||||||
|  | 		process.accept(new TemplateProcess(fileName+".txt").addFlags("TEST0").addMapper(new SimpleMapper("TESTING", "Test2"))); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	@Override | ||||||
|  | 	protected boolean relativePackages() | ||||||
|  | 	{ | ||||||
|  | 		return false; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	@Override | ||||||
|  | 	protected boolean debugUnusedMappers() | ||||||
|  | 	{ | ||||||
|  | 		return false; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user