Duey 1.0.0
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package Duey --version 1.0.0
NuGet\Install-Package Duey -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Duey" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Duey --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Duey, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Duey as a Cake Addin #addin nuget:?package=Duey&version=1.0.0 // Install Duey as a Cake Tool #tool nuget:?package=Duey&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Duey
A minimal read-only implementation of the NX PKG4.1 format specification on .NET Standard 2.0
🤔 Why?
- Duey works on runtimes targeting or supporting .NET Standard!
- also, it's strictly parsing only. no caches, no weird voodoo magic.
🏹 Supported Types
- Int64 (byte, short, int, long)
- Double (float, double)
- String (string)
- Vector (Point)
- Bitmap (NXBitmap)
- Audio (NXAudio)
✏️ Usage
to get started, simply create a new NX File object like so.
var file = new NXFile("Data.nx");
with that, you can do various parsing magic!
// store a node object for usage later on!
var node = file.Resolve("Store/Products");
// resolve and defaults to null
var name = node.ResolveOrDefault<string>("name");
var image = node.ResolveOrDefault<NXBitmap>("image");
var soundFx = node.ResolveOrDefault<NXAudio>("soundFx");
// resolve and defaults to a nullable
var stock = node.Resolve<int>("stock") ?? 0; // 0 is the default value!
var price = node.Resolve<double>("price") ?? 0.0;
// resolve a node ..in a node!
var bundles = node.Resolve("Bundled Products");
foreach (var bundle in bundles)
{
// resolve even more stuff here!
}
// all the previous resolving examples run at O(n)
// if efficiency and speed is an issue..
// this eager loads direct child of the selected node.
node.ResolveAll(n => { // O(n)
name = n.ResolveOrDefault<string>("name"); // O(1)
stock = n.Resolve<int>("stock") ?? 0; // O(1)
price = n.Resolve<double>("price") ?? 0.0; // O(1)
});
// compared to..
name = node.ResolveOrDefault<string>("name"); // O(n)
stock = node.Resolve<int>("stock") ?? 0; // O(n)
price = node.Resolve<double>("price") ?? 0.0; // O(n)
parsing bitmaps/images with ImageSharp
var bitmap = node.ResolveOrDefault<NXBitmap>("icon");
using (var image = Image.LoadPixelData<Bgra32>(bitmap.Data, bitmap.Width, bitmap.Height))
using (var output = File.Create("icon.png")) {
// do image manipulation stuff here
// save the image!
image.SaveAsPng(output);
}
also, remember to dispose~!
using (var file = new NXFile("Data.nx")) {
// do your parsing thing here!
}
// or manually call dipose
var file = new NXFile("Data.nx");
file.Dispose();
⭐️ Acknowledgements
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- K4os.Compression.LZ4 (>= 1.1.11)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.