Merge MVP features #1
41
Program.cs
41
Program.cs
@ -1,5 +1,7 @@
|
||||
using System;
|
||||
using System.Xml;
|
||||
using System.Xml.Linq;
|
||||
using CommandLine;
|
||||
using Sprache;
|
||||
using XNeedle.Parser;
|
||||
using XNeedle.Parser.Elements;
|
||||
@ -9,24 +11,39 @@ namespace XNeedle
|
||||
{
|
||||
class Program
|
||||
{
|
||||
static void Main()
|
||||
public class Options
|
||||
{
|
||||
var input = "$(\"//Device/Type[@ProductCode='#x0B583052' and @RevisionNo='#x00110000']\")";
|
||||
[Value(0, MetaName = "xn", Required = true, HelpText = "XN transformation definition")]
|
||||
public string XnDefinition { get; set; }
|
||||
|
||||
var rule = (Rule)XnParser.RuleObject.Parse(input);
|
||||
[Option('i', "input", HelpText = "Input XML file", Required = true)]
|
||||
public string Input { get; set; }
|
||||
|
||||
XmlDocument doc = new XmlDocument();
|
||||
doc.Load("ELx9xx.xml");
|
||||
[Option('o', "output", HelpText = "Output XML file", Required = true)]
|
||||
public string Output { get; set; }
|
||||
|
||||
rule.Transform(doc);
|
||||
[Option('v', "verbose", Required = false, HelpText = "Set output to verbose messages.")]
|
||||
public bool Verbose { get; set; }
|
||||
}
|
||||
static void Main(string[] args)
|
||||
{
|
||||
CommandLine.Parser.Default.ParseArguments<Options>(args)
|
||||
.WithParsed(RunOptions)
|
||||
.WithNotParsed(HandleParseError);
|
||||
}
|
||||
|
||||
XmlWriterSettings settings = new XmlWriterSettings();
|
||||
settings.Indent = true;
|
||||
XmlWriter writer = XmlWriter.Create("El9xxFi.xml", settings);
|
||||
static void RunOptions(Options opts)
|
||||
{
|
||||
var masterRule = (Rule)XnParser.RuleObject.Parse(File.ReadAllText(opts.XnDefinition));
|
||||
var doc = new XmlDocument();
|
||||
doc.PreserveWhitespace = true;
|
||||
doc.Load(opts.Input);
|
||||
masterRule.Transform(doc);
|
||||
doc.Save(opts.Output);
|
||||
|
||||
doc.WriteContentTo(writer);
|
||||
Console.WriteLine($"Applied \"{opts.XnDefinition}\" to \"{opts.Input}\" and saved result to \"{opts.Output}\"");
|
||||
}
|
||||
|
||||
Console.WriteLine("Done.");
|
||||
}
|
||||
static void HandleParseError(IEnumerable<Error> errs) {}
|
||||
}
|
||||
}
|
||||
@ -8,6 +8,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CommandLineParser" Version="2.9.1" />
|
||||
<PackageReference Include="Sprache" Version="3.0.0-develop-00049" />
|
||||
<PackageReference Include="System.IO.Hashing" Version="10.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user