From abe96dceeed6b0ffb0a132b15fbbe7942fec7f58 Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Thu, 14 Sep 2017 19:18:21 -0700 Subject: Update directive matching to support function calls. --- BJC-Utils2/data/formats.sprop | 3 ++- BJC-Utils2/data/regexes.sprop | 5 +++++ BJC-Utils2/src/main/java/bjc/utils/ioutils/CLFormatter.java | 12 +++++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/BJC-Utils2/data/formats.sprop b/BJC-Utils2/data/formats.sprop index 73ebc29..72f6e74 100644 --- a/BJC-Utils2/data/formats.sprop +++ b/BJC-Utils2/data/formats.sprop @@ -22,7 +22,8 @@ delimSeparatedList (?:%1$s(?:%2$s%1$s)*) ## 1) The prefix parameters ## 2) The modifiers ## 3) The directive name -clFormatDirective ~(?%1$s)?(?%2$s?)(?\S) +## 4) The function name, if the directive was a function call. +clFormatDirective ~(?%1$s)?(?%2$s?)(?:%3$s) #################################################### # Format strings for handling double-quoted strings. diff --git a/BJC-Utils2/data/regexes.sprop b/BJC-Utils2/data/regexes.sprop index dadc09c..89c5b4f 100644 --- a/BJC-Utils2/data/regexes.sprop +++ b/BJC-Utils2/data/regexes.sprop @@ -50,6 +50,11 @@ clFormatPrefix (?:[-+]?\d+|'\S|[Vv]|#) ## A modifier is either : or @, or both in either order clFormatModifier (?:@|:|@:|:@) +## Matches a directive name. +## A directive name is either +## 1) A single, non-whitespace, non-/ character +## 2) A name enclosed in /'s +clFormatName (?:(?[\S&&[^/]])|(?:/(?[\S&&[^/]]+)/)) ############################################## # Miscellaneous validation regular expressions ############################################## diff --git a/BJC-Utils2/src/main/java/bjc/utils/ioutils/CLFormatter.java b/BJC-Utils2/src/main/java/bjc/utils/ioutils/CLFormatter.java index f9ae49a..f0f0e73 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/ioutils/CLFormatter.java +++ b/BJC-Utils2/src/main/java/bjc/utils/ioutils/CLFormatter.java @@ -31,7 +31,9 @@ public class CLFormatter { private static final String prefixList = applyFormat("delimSeparatedList", prefixParam, ","); - private static final String formatDirective = applyFormat("clFormatDirective", prefixList, formatMod); + private static final String directiveName = getRegex("clFormatName"); + + private static final String formatDirective = applyFormat("clFormatDirective", prefixList, formatMod, directiveName); private static final Pattern pFormatDirective = Pattern.compile(formatDirective); private Map extraDirectives; @@ -53,6 +55,7 @@ public class CLFormatter { dirMatcher.appendReplacement(sb, ""); String dirName = dirMatcher.group("name"); + String dirFunc = dirMatcher.group("funcname"); String dirMods = dirMatcher.group("modifiers"); String dirParams = dirMatcher.group("params"); @@ -65,6 +68,13 @@ public class CLFormatter { colonMod = dirMods.contains(":"); } + if(dirName == null && dirFunc != null) { + /* + * @TODO implement user-called functions. + */ + continue; + } + switch(dirName) { case "C": handleCDirective(sb, tParams.item(), atMod, colonMod); -- cgit v1.2.3