Ejemplo n.º 1
0
        public void InnerCanBeFound()
        {
            var input =
                @"<A
  line 1
  line 2
  <B header
    line B1
    line B2
  >
  line3
  line4
>
";
            var project =
                ReaperProjectParser.ParseProjectFromLines(
                    new LineSource(input));

            project
            .ElementsAndDescendants()
            .OfType <ProjectElement>()
            .Count(a => a.HeaderType == "B")
            .Should()
            .Be(1);
        }
Ejemplo n.º 2
0
        public void AllSourcesFound()
        {
            var project =
                ReaperProjectParser.ParseProjectFromLines(
                    new LineSource(TestData.TestFile));

            var sourceFiles = project
                              .ElementsAndDescendants()
                              .OfType <ProjectSource>()
                              .ToArray();

            sourceFiles.Length.Should()
            .Be(3);
        }
Ejemplo n.º 3
0
        public void BasicElementIsRead()
        {
            var input    = @"<element
>";
            var source   = new LineSource(input);
            var elements = ReaperProjectParser.ParseFromLines(source);

            elements.Length.Should()
            .Be(1);
            var projectElement = elements.First() as ProjectElement;

            projectElement.Should()
            .NotBeNull();
            projectElement.Header.Should()
            .Be("element");
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            var rppFiles = Directory.EnumerateFiles(args[0], "*.rpp",
                                                    SearchOption.AllDirectories);

            foreach (var r in rppFiles)
            {
                Console.WriteLine($"Trying to read {r}");

                var enclosingFolder =
                    Path.GetFileName(Path.GetDirectoryName(r));
                var projName = Path.GetFileName(r);


                var txt     = File.ReadAllText(r);
                var source  = new LineSource(txt);
                var project = ReaperProjectParser.ParseProjectFromLines(source);
                var sources = project.ElementsAndDescendants()
                              .OfType <ProjectSource>(
                    )
                              .Where(src =>
                                     src.Source == ProjectSource.SourceType.File)
                              .ToArray();
                foreach (var projectSource in sources)
                {
                    Console.WriteLine($"   src:{projectSource.File}");
                    if (projectSource.File.Contains("Neil"))
                    {
                        var fileName =
                            Path.GetFileName(projectSource.File);
                        var newSource =
                            projectSource.WithFile(fileName);
                        project = (ProjectElement)project.Replace(projectSource,
                                                                  newSource);
                    }
                }

                var destFolder =
                    Path.Combine(args[1], enclosingFolder);
                var destFile = Path.Combine(destFolder, projName);
                Console.WriteLine($"creating {destFolder} for {destFile}");
                Directory.CreateDirectory(destFolder);
                File.WriteAllText(destFile, project.AsString(0));
            }
        }
Ejemplo n.º 5
0
        public void SourceCanBeReplaced()
        {
            var input   = @"< REAPER_PROJECT 0.1 ""5.60 / x64"" 1516466972
 <ITEM
      <SOURCE MP3
        FILE ""C:\Users\Neil\Downloads\wikiloops_jam_127409.mp3"" 1
      >
    >
>
";
            var project =
                ReaperProjectParser.ParseProjectFromLines(
                    new LineSource(input));

            var sourceFiles = project
                              .ElementsAndDescendants()
                              .OfType <ProjectSource>()
                              .ToArray();

            sourceFiles.Length.Should()
            .Be(1);
            var source = sourceFiles.First();

            source.File.Should()
            .Be(
                @"C:\Users\Neil\Downloads\wikiloops_jam_127409.mp3");
            var newFile    = source.WithFile("replacementFile");
            var newProject = project.Replace(source, newFile) as ProjectElement;
            var newSources = newProject.ElementsAndDescendants()
                             .OfType <ProjectSource>()
                             .ToArray();

            newSources.Length.Should()
            .Be(1);
            newSources.First()
            .File
            .Should()
            .Be("replacementFile");
            newSources.First()
            .Trailing
            .Should()
            .Be("1");
        }
Ejemplo n.º 6
0
        public void SimpleProjectCanBeRoundTripped()
        {
            var input =
                @"<A
  line 1
  line 2
  <B header
    line B1
    line B2
  >
  line3
  line4
>
";
            var source   = new LineSource(input);
            var project  = ReaperProjectParser.ParseProjectFromLines(source);
            var rendered = ReaperProjectParser.Render(project);

            rendered.Should()
            .Be(input);
        }