private static bool IsSkipableBodyRe(CapturedNodeRegex re) { if ((re.Regex.Flags & SyntaxAnalysis.NodeRegexFlags.IsStringLiteral) == 0) { return(false); } var skipableChars = "|-/\\ \t-()[]#\"'"; Func <char, bool> isNotSkipableChar = c => skipableChars.IndexOf(c) < 0; return(re.Regex.StringLiteral.Any(isNotSkipableChar) == false); }
static void ReportRendererUsage( CapturedNodeRegex rendererNodeRe, string outputFieldDescription, ImportLog log) { var re = rendererNodeRe; log.AddMessage(ImportLog.MessageType.RendererUsageReport, ImportLog.MessageSeverity.Info) .AddText("Renderer") .AddCustom(re.Regex.AddLinkToSelf) .AddTextFmt("was used to parse {0}", outputFieldDescription) .SetLayoutId(rendererNodeRe.LayoutId); }
static void WarnAboutConditionalRenderer( CapturedNodeRegex rendererNodeRe, string rendererDescription, ImportLog log) { var re = rendererNodeRe; Debug.Assert((re.Regex.Flags & SyntaxAnalysis.NodeRegexFlags.IsConditional) != 0); var warn = log.AddMessage(ImportLog.MessageType.ImportantFieldIsConditional, ImportLog.MessageSeverity.Warn) .AddText(rendererDescription) .AddCustom(re.Regex.AddLinkToSelf) .AddTextFmt("is not guaranteed to produce output") .SetLayoutId(rendererNodeRe.LayoutId); if (re.Regex.WrapperThatMakesRegexConditional != null) { warn.AddText("because it is wrapped by conditional renderer") .AddCustom(re.Regex.WrapperThatMakesRegexConditional.Value.AddLinkToSelf) .SetLayoutId(rendererNodeRe.LayoutId); } }