Merge MVP features #1
41
Program.cs
41
Program.cs
@ -1,5 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
using CommandLine;
|
||||||
using Sprache;
|
using Sprache;
|
||||||
using XNeedle.Parser;
|
using XNeedle.Parser;
|
||||||
using XNeedle.Parser.Elements;
|
using XNeedle.Parser.Elements;
|
||||||
@ -9,24 +11,39 @@ namespace XNeedle
|
|||||||
{
|
{
|
||||||
class Program
|
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();
|
[Option('o', "output", HelpText = "Output XML file", Required = true)]
|
||||||
doc.Load("ELx9xx.xml");
|
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();
|
static void RunOptions(Options opts)
|
||||||
settings.Indent = true;
|
{
|
||||||
XmlWriter writer = XmlWriter.Create("El9xxFi.xml", settings);
|
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>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="CommandLineParser" Version="2.9.1" />
|
||||||
<PackageReference Include="Sprache" Version="3.0.0-develop-00049" />
|
<PackageReference Include="Sprache" Version="3.0.0-develop-00049" />
|
||||||
<PackageReference Include="System.IO.Hashing" Version="10.0.0" />
|
<PackageReference Include="System.IO.Hashing" Version="10.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user