public MarkdownGrammar() : base("markdown") { EnableMatchEvents = false; indent = new RepeatParser(Terms.indent, 1, 1); prefix = new RepeatParser(Terms.indent, 0, 0); prefixsp = new RepeatParser(Terms.sporht, 0, 0); encoding = new MarkdownEncoding(); encoding.Initialize(this); replacementsOnly = new ReplacementParser(this); replacements = new ReplacementParser(this); var reps = GetReplacements().ToArray(); replacementsOnly.Add(reps, false); replacements.Add(reps, true); replacements.Add(Terminals.AnyChar); this.Inner = -replacements; SetError<Parser>(false); }
public EndPatternParser(bool ignoreReplacement) : base($"^ /s* {REGEX_END_PATTERN}") { this.ignoreReplacement = ignoreReplacement; replacementParser = new ReplacementParser(); }
static void Main(string[] args) { var Configuration = (new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("settings.json")).Build(); var mapfile = Configuration["mapfile"]; var mapItemDelimiter = Configuration["mapItemDelimiter"]; var mapItemCommentDelimitter = Configuration["mapItemCommentDelimitter"]; var inputDirectory = Configuration["inputDirectory"]; var outputDirectory = Configuration["outputDirectory"]; bool replaceWholeWord = bool.Parse(Configuration["options:replaceWholeWord"]); bool caseSensitive = bool.Parse(Configuration["options:caseSensitive"]); bool processLongerLengthFirst = bool.Parse(Configuration["options:processLongerLengthFirst"]); bool autoCreateOutputDirectories = bool.Parse(Configuration["options:autoCreateOutputDirectories"]); var inputSearchPattern = Configuration["options:inputSearchPattern"]; Console.WriteLine($"mapfile: {mapfile}"); Console.WriteLine($"mapItemDelimiter: {mapItemDelimiter}"); Console.WriteLine($"mapItemCommentDelimitter: {mapItemCommentDelimitter}"); Console.WriteLine($"inputDirectory: {inputDirectory}"); Console.WriteLine($"outputDirectory: {outputDirectory}"); Console.WriteLine($"processLongerLengthFirst: {processLongerLengthFirst}"); Console.WriteLine($"autoCreateOutputDirectories: {autoCreateOutputDirectories}"); Console.WriteLine($"inputSearchPattern: {inputSearchPattern}"); if (!File.Exists(mapfile) || !Directory.Exists(inputDirectory) || !Directory.Exists(outputDirectory)) { Console.WriteLine("Error: one of the input parameters is invalid. Please check settings.json"); } var options = new Options { ReplaceWholeWord = replaceWholeWord, CaseSensitive = caseSensitive }; var inputRootDirectoryFullPath = inputDirectory; if (!Path.IsPathRooted(inputDirectory)) { inputRootDirectoryFullPath = Path.GetFullPath(Directory.GetCurrentDirectory() + "\\" + inputDirectory); } var outputRootDirectoryFullPath = outputDirectory; if (!Path.IsPathRooted(outputDirectory)) { outputRootDirectoryFullPath = Path.GetFullPath(Directory.GetCurrentDirectory() + "\\" + outputDirectory); } var workUnits = CreateWorkUnits( inputRootDirectoryFullPath, outputRootDirectoryFullPath, inputSearchPattern); var replacements = File.ReadLines(Path.Combine(Directory.GetCurrentDirectory(), mapfile)).Select(line => ReplacementParser.Parse(line, mapItemDelimiter, mapItemCommentDelimitter)).Where(_ => _ != null).ToList(); if (processLongerLengthFirst) { // This causes search & replace "For Example" before "For", if these two search strings are in the map. replacements = replacements.OrderByDescending(_ => _.SourceString.Length).ToList(); } foreach (var workUnit in FileAccessUtility.ReadXliffFiles(workUnits)) { if (SearchAndReplace.Process(replacements, workUnit.Xliff.file[0], options)) { FileAccessUtility.WriteXliffFile(workUnit, autoCreateOutputDirectories); } } Console.WriteLine("\nDone"); }