diff --git a/org.dadacoalition.yedit.test/src/org/dadacoalition/yedit/test/tasktagparser/TaskTagParserTest.java b/org.dadacoalition.yedit.test/src/org/dadacoalition/yedit/test/tasktagparser/TaskTagParserTest.java index b6229f3..16a3b62 100644 --- a/org.dadacoalition.yedit.test/src/org/dadacoalition/yedit/test/tasktagparser/TaskTagParserTest.java +++ b/org.dadacoalition.yedit.test/src/org/dadacoalition/yedit/test/tasktagparser/TaskTagParserTest.java @@ -33,7 +33,7 @@ public class TaskTagParserTest { private TaskTagParser parser; - public TaskTagParserTest(String inputFilename){ + public TaskTagParserTest(String inputFilename, boolean caseSensitive){ this.inputFilename = TEST_FILE_DIR + inputFilename + ".yaml"; testCaseFilename = TEST_FILE_DIR + inputFilename + "-result.yaml"; @@ -41,7 +41,7 @@ public TaskTagParserTest(String inputFilename){ tagsToFind.add(new TaskTagPreference("TODO", "normal")); tagsToFind.add(new TaskTagPreference("FIXME", "high")); YAMLScanner scanner = new YAMLScanner(new ColorManager()); - parser = new TaskTagParser(tagsToFind, scanner); + parser = new TaskTagParser(tagsToFind, scanner, caseSensitive); } @Test @@ -60,10 +60,11 @@ public void verifyTodoTags(){ public static Collection parameters() { Collection testCases = new ArrayList(); - testCases.add( new Object[]{ "empty-doc" } ); - testCases.add( new Object[]{ "no-todo" } ); - testCases.add( new Object[]{ "multi-todo" } ); - testCases.add( new Object[]{ "todo-in-scalar" } ); + testCases.add( new Object[]{ "empty-doc", false } ); + testCases.add( new Object[]{ "no-todo", false } ); + testCases.add( new Object[]{ "multi-todo", false } ); + testCases.add( new Object[]{ "todo-in-scalar", false } ); + testCases.add( new Object[]{ "case-sensitive", true } ); return testCases; diff --git a/org.dadacoalition.yedit.test/todo-tag-parser-test-files/case-sensitive-result.yaml b/org.dadacoalition.yedit.test/todo-tag-parser-test-files/case-sensitive-result.yaml new file mode 100644 index 0000000..5299480 --- /dev/null +++ b/org.dadacoalition.yedit.test/todo-tag-parser-test-files/case-sensitive-result.yaml @@ -0,0 +1,8 @@ +name: Tests for document with a tag in wrong case +expectedTags: + - tag: TODO + severity: normal + lineNumber: 5 + message: number two + + \ No newline at end of file diff --git a/org.dadacoalition.yedit.test/todo-tag-parser-test-files/case-sensitive.yaml b/org.dadacoalition.yedit.test/todo-tag-parser-test-files/case-sensitive.yaml new file mode 100644 index 0000000..4f3a17d --- /dev/null +++ b/org.dadacoalition.yedit.test/todo-tag-parser-test-files/case-sensitive.yaml @@ -0,0 +1,5 @@ +- this is a +- simple test #Todo not picked up due to case +- file with +- some: + tags here and there # TODO number two \ No newline at end of file diff --git a/org.dadacoalition.yedit/src/org/dadacoalition/yedit/editor/TaskTagParser.java b/org.dadacoalition.yedit/src/org/dadacoalition/yedit/editor/TaskTagParser.java index abb2324..8f8f132 100644 --- a/org.dadacoalition.yedit/src/org/dadacoalition/yedit/editor/TaskTagParser.java +++ b/org.dadacoalition.yedit/src/org/dadacoalition/yedit/editor/TaskTagParser.java @@ -24,11 +24,15 @@ public class TaskTagParser { private final Pattern tagPattern; - public TaskTagParser(List tagsToFind, YAMLScanner scanner){ + public TaskTagParser(List tagsToFind, YAMLScanner scanner, boolean caseSensitive){ this.tagsToFind = tagsToFind; this.scanner = scanner; - tagPattern = Pattern.compile(constructTagPattern(tagsToFind)); + if(caseSensitive){ + tagPattern = Pattern.compile(constructTagPattern(tagsToFind)); + } else { + tagPattern = Pattern.compile(constructTagPattern(tagsToFind), Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE); + } } @@ -122,8 +126,9 @@ private String getTodoTagMessage(String comment, String tag){ private TaskTagPreference getFoundTagType(String comment){ + comment = comment.toLowerCase(); for(TaskTagPreference ttp : tagsToFind){ - if(comment.indexOf(ttp.tag) > 0){ + if(comment.indexOf(ttp.tag.toLowerCase()) > 0){ return ttp; } } diff --git a/org.dadacoalition.yedit/src/org/dadacoalition/yedit/editor/YEdit.java b/org.dadacoalition.yedit/src/org/dadacoalition/yedit/editor/YEdit.java index 50fd9be..4399128 100644 --- a/org.dadacoalition.yedit/src/org/dadacoalition/yedit/editor/YEdit.java +++ b/org.dadacoalition.yedit/src/org/dadacoalition/yedit/editor/YEdit.java @@ -326,7 +326,8 @@ void locateTaskTags() { } List prefs = getTaskTagPreferences(); - TaskTagParser ttp = new TaskTagParser(prefs, sourceViewerConfig.getScanner()); + boolean caseSensitiveTags = Boolean.valueOf(Activator.getDefault().getPreferenceStore().getString(PreferenceConstants.TODO_TASK_CASE_SENSITIVE)); + TaskTagParser ttp = new TaskTagParser(prefs, sourceViewerConfig.getScanner(), caseSensitiveTags); List tags = ttp.parseTags(this.getDocumentProvider().getDocument(this.getEditorInput()));