Ejemplo n.º 1
0
		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);
		}
Ejemplo n.º 2
0
 public EndPatternParser(bool ignoreReplacement)
     : base($"^ /s* {REGEX_END_PATTERN}")
 {
     this.ignoreReplacement = ignoreReplacement;
     replacementParser      = new ReplacementParser();
 }
Ejemplo n.º 3
0
        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");
        }