/// <summary> /// Basic detection of text's EOL marker /// </summary> public static Int32 DetectNewLineMarker(String text, Int32 defaultMarker) { Int32 cr = text.IndexOfOrdinal("\r"); Int32 lf = text.IndexOfOrdinal("\n"); if ((cr >= 0) && (lf >= 0)) { if (cr < lf) return 0; else return 2; } else if ((cr < 0) && (lf < 0)) { return (Int32)PluginBase.MainForm.Settings.EOLMode; } else if (lf < 0) return 1; else return 2; }
/// <summary> /// Processes the text and returns correct action point /// </summary> public static ActionPoint ProcessActionPoint(String text) { text = text.Trim().Replace(BOUNDARY, ""); Int32 entryPosition = text.IndexOfOrdinal(ENTRYPOINT); Int32 exitPosition = text.IndexOfOrdinal(EXITPOINT); if (entryPosition != -1 && exitPosition != -1) { String cleaned = text.Replace(ENTRYPOINT, "").Replace(EXITPOINT, ""); return new ActionPoint(cleaned, entryPosition, exitPosition - ENTRYPOINT.Length); } else if (entryPosition != -1 && exitPosition == -1) { String cleaned = text.Replace(ENTRYPOINT, ""); return new ActionPoint(cleaned, entryPosition, -1); } else return new ActionPoint(text, -1, -1); }
public static String getValue(String source, String tagName) { try { int index = source.IndexOfOrdinal(tagName); int endIndex = source.IndexOfOrdinal(TagSplitter, index); if (index < 0 || endIndex < 0) return null; String value = source.Substring(index + tagName.Length, endIndex - (index + tagName.Length)); value = value.Replace(SplitterEscape, TagSplitter); return value; } catch { return null; } }
/// <summary> /// Gets the correct coding style line break chars /// </summary> public static String ProcessCodeStyleLineBreaks(String text) { String CSLB = "$(CSLB)"; Int32 nextIndex = text.IndexOfOrdinal(CSLB); if (nextIndex < 0) return text; CodingStyle cs = PluginBase.Settings.CodingStyle; if (cs == CodingStyle.BracesOnLine) return text.Replace(CSLB, ""); Int32 eolMode = (Int32)PluginBase.Settings.EOLMode; String lineBreak = LineEndDetector.GetNewLineMarker(eolMode); String result = ""; Int32 currentIndex = 0; while (nextIndex >= 0) { result += text.Substring(currentIndex, nextIndex - currentIndex) + lineBreak + GetLineIndentation(text, nextIndex); currentIndex = nextIndex + CSLB.Length; nextIndex = text.IndexOfOrdinal(CSLB, currentIndex); } return result + text.Substring(currentIndex); }
private static String replaceInlineReferences(String text, IDictionary parameters) { if (parameters == null) return text; int depth = 100; while (depth-- > 0) { int o = text.IndexOfOrdinal("${"); if (o == -1) break; if ((o >= 1) && (text[o - 1] == '$')) { o = text.IndexOfOrdinal("${", o + 2); if (o == -1) break; } int c = text.IndexOfOrdinal("}", o); if (c == -1) { return null; // FIXME } String name = text.Substring(o + 2, (c) - (o + 2)); String value = null; if (parameters.Contains(name) && (parameters[name] != null)) { value = parameters[name].ToString(); } if (value == null) { value = ""; } text = text.Substring(0, (o) - (0)) + value + text.Substring(c + 1); } return text.Replace("$${", "${"); }
/// <summary> /// Replaces the enchanced arguments with gui /// </summary> public static String ReplaceArgsWithGUI(String args) { if (args.IndexOfOrdinal("$$(") < 0) return args; if (reEnvArgs.IsMatch(args)) // Environmental arguments { args = reEnvArgs.Replace(args, new MatchEvaluator(ReplaceEnvArgs)); } if (reSpecialArgs.IsMatch(args)) // Special arguments { args = reSpecialArgs.Replace(args, new MatchEvaluator(ReplaceSpecialArgs)); } if (reUserArgs.IsMatch(args)) // User arguments { ArgReplaceDialog rvd = new ArgReplaceDialog(args, reUserArgs); userArgs = rvd.Dictionary; // Save dictionary temporarily... if (rvd.ShowDialog() == DialogResult.OK) { args = reUserArgs.Replace(args, new MatchEvaluator(ReplaceUserArgs)); } else args = reUserArgs.Replace(args, new MatchEvaluator(ReplaceWithEmpty)); } return args; }