remove unused UniJSON. JsonPointer

This commit is contained in:
ousttrue
2022-07-07 15:10:31 +09:00
parent 487b66dfa1
commit 92226ff8f8
8 changed files with 0 additions and 508 deletions

View File

@@ -1,99 +0,0 @@
using System;
using System.Linq;
using System.Text;
namespace UniJSON
{
public struct JsonPointer
{
public ArraySegment<Utf8String> Path
{
get;
private set;
}
public int Count
{
get
{
return Path.Count;
}
}
public Utf8String this[int index]
{
get
{
return Path.Array[Path.Offset + index];
}
}
public JsonPointer Unshift()
{
return new JsonPointer
{
Path = new ArraySegment<Utf8String>(Path.Array, Path.Offset + 1, Path.Count - 1)
};
}
public static JsonPointer Create(JsonNode node)
{
return new JsonPointer
{
Path = new ArraySegment<Utf8String>(node.Path().Skip(1).Select(x => GetKeyFromParent(x)).ToArray())
};
}
public JsonPointer(Utf8String pointer) : this()
{
int pos;
if (!pointer.TrySearchAscii((Byte)'/', 0, out pos))
{
throw new ArgumentException();
}
if (pos != 0)
{
throw new ArgumentException();
}
var split = pointer.Split((Byte)'/').ToArray();
Path = new ArraySegment<Utf8String>(split, 1, split.Length - 1);
}
public override string ToString()
{
if (Path.Count == 0)
{
return "/";
}
var sb = new StringBuilder();
var end = Path.Offset + Path.Count;
for (int i = Path.Offset; i < end; ++i)
{
sb.Append('/');
sb.Append(Path.Array[i]);
}
return sb.ToString();
}
static Utf8String GetKeyFromParent(JsonNode json)
{
var parent = json.Parent;
if (parent.IsArray())
{
var index = parent.IndexOf(json);
return Utf8String.From(index);
}
else if (parent.IsMap())
{
return parent.KeyOf(json);
}
else
{
throw new NotImplementedException();
}
}
}
}

View File

@@ -1,12 +0,0 @@
fileFormatVersion: 2
guid: 8b7033668ce791e40819d16e664efe18
timeCreated: 1543321766
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,132 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
namespace UniJSON
{
public static class ListTreeNodeJsonPointerExtensions
{
public static void SetValue(this JsonNode self,
Utf8String jsonPointer, ArraySegment<Byte> bytes)
{
foreach (var node in self.GetNodes(jsonPointer))
{
node.SetValue(default(JsonValue).New(
bytes,
ValueNodeType.Boolean,
node.Value.ParentIndex));
}
}
public static void RemoveValue(this JsonNode self, Utf8String jsonPointer)
{
foreach (var node in self.GetNodes(new JsonPointer(jsonPointer)))
{
if (node.Parent.IsMap())
{
node.Prev.SetValue(default(JsonValue)); // remove key
}
node.SetValue(default(JsonValue)); // remove
}
}
public static JsonPointer Pointer(this JsonNode self)
{
return JsonPointer.Create(self);
}
public static IEnumerable<JsonNode> Path(this JsonNode self)
{
if (self.HasParent)
{
foreach (var x in self.Parent.Path())
{
yield return x;
}
}
yield return self;
}
public static IEnumerable<JsonNode> GetNodes(this JsonNode self,
JsonPointer jsonPointer)
{
if (jsonPointer.Path.Count == 0)
{
yield return self;
yield break;
}
if (self.IsArray())
{
// array
if (jsonPointer[0][0] == '*')
{
// wildcard
foreach (var child in self.ArrayItems())
{
foreach (var childChild in child.GetNodes(jsonPointer.Unshift()))
{
yield return childChild;
}
}
}
else
{
int index = jsonPointer[0].ToInt32();
var child = self.ArrayItems().Skip(index).First();
foreach (var childChild in child.GetNodes(jsonPointer.Unshift()))
{
yield return childChild;
}
}
}
else if (self.IsMap())
{
// object
if (jsonPointer[0][0] == '*')
{
// wildcard
foreach (var kv in self.ObjectItems())
{
foreach (var childChild in kv.Value.GetNodes(jsonPointer.Unshift()))
{
yield return childChild;
}
}
}
else
{
JsonNode child;
try
{
child = self.ObjectItems().First(x => x.Key.GetUtf8String() == jsonPointer[0]).Value;
}
catch (Exception)
{
// key
self.AddKey(jsonPointer[0]);
// value
self.AddValue(default(ArraySegment<byte>), ValueNodeType.Object);
child = self.ObjectItems().First(x => x.Key.GetUtf8String() == jsonPointer[0]).Value;
}
foreach (var childChild in child.GetNodes(jsonPointer.Unshift()))
{
yield return childChild;
}
}
}
else
{
throw new NotImplementedException();
}
}
public static IEnumerable<JsonNode> GetNodes(this JsonNode self,
Utf8String jsonPointer)
{
return self.GetNodes(new JsonPointer(jsonPointer));
}
}
}

View File

@@ -1,12 +0,0 @@
fileFormatVersion: 2
guid: 20e02dc7c390454448d4a3ce7aca4d17
timeCreated: 1545735556
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -102,123 +102,6 @@ namespace UniJSON
return new Utf8String(new ArraySegment<byte>(bytes, 0, pos));
}
// -2147483648 ~ 2147483647
public static Utf8String From(int src)
{
if (src >= 0)
{
if (src < 10)
{
return new Utf8String(new byte[] {
(byte)(0x30 + src),
});
}
else if (src < 100)
{
return new Utf8String(new byte[] {
(byte)(0x30 + src/10),
(byte)(0x30 + src%10),
});
}
else if (src < 1000)
{
return new Utf8String(new byte[] {
(byte)(0x30 + src/100),
(byte)(0x30 + src/10),
(byte)(0x30 + src%10),
});
}
else if (src < 10000)
{
return new Utf8String(new byte[] {
(byte)(0x30 + src/1000),
(byte)(0x30 + src/100),
(byte)(0x30 + src/10),
(byte)(0x30 + src%10),
});
}
else if (src < 100000)
{
return new Utf8String(new byte[] {
(byte)(0x30 + src/10000),
(byte)(0x30 + src/1000),
(byte)(0x30 + src/100),
(byte)(0x30 + src/10),
(byte)(0x30 + src%10),
});
}
else if (src < 1000000)
{
return new Utf8String(new byte[] {
(byte)(0x30 + src/100000),
(byte)(0x30 + src/10000),
(byte)(0x30 + src/1000),
(byte)(0x30 + src/100),
(byte)(0x30 + src/10),
(byte)(0x30 + src%10),
});
}
else if (src < 10000000)
{
return new Utf8String(new byte[] {
(byte)(0x30 + src/1000000),
(byte)(0x30 + src/100000),
(byte)(0x30 + src/10000),
(byte)(0x30 + src/1000),
(byte)(0x30 + src/100),
(byte)(0x30 + src/10),
(byte)(0x30 + src%10),
});
}
else if (src < 100000000)
{
return new Utf8String(new byte[] {
(byte)(0x30 + src/10000000),
(byte)(0x30 + src/1000000),
(byte)(0x30 + src/100000),
(byte)(0x30 + src/10000),
(byte)(0x30 + src/1000),
(byte)(0x30 + src/100),
(byte)(0x30 + src/10),
(byte)(0x30 + src%10),
});
}
else if (src < 1000000000)
{
return new Utf8String(new byte[] {
(byte)(0x30 + src/100000000),
(byte)(0x30 + src/10000000),
(byte)(0x30 + src/1000000),
(byte)(0x30 + src/100000),
(byte)(0x30 + src/10000),
(byte)(0x30 + src/1000),
(byte)(0x30 + src/100),
(byte)(0x30 + src/10),
(byte)(0x30 + src%10),
});
}
else
{
return new Utf8String(new byte[] {
(byte)(0x30 + src/1000000000),
(byte)(0x30 + src/100000000),
(byte)(0x30 + src/10000000),
(byte)(0x30 + src/1000000),
(byte)(0x30 + src/100000),
(byte)(0x30 + src/10000),
(byte)(0x30 + src/1000),
(byte)(0x30 + src/100),
(byte)(0x30 + src/10),
(byte)(0x30 + src%10),
});
}
}
else
{
throw new NotImplementedException();
}
}
public Utf8String Concat(Utf8String rhs)
{
var bytes = new Byte[ByteLength + rhs.ByteLength];

View File

@@ -1,57 +0,0 @@
using NUnit.Framework;
using System.Linq;
namespace UniJSON
{
public class JsonDiffTests
{
[Test]
public void PathTest()
{
var json=@"
{
""a"": [
{
""aa"": 1
}
]
}
";
var root = JsonParser.Parse(json);
{
var it = root.Traverse().GetEnumerator();
it.MoveNext(); Assert.AreEqual("/", it.Current.Pointer().ToString());
it.MoveNext(); Assert.AreEqual("/a", it.Current.Pointer().ToString());
it.MoveNext(); Assert.AreEqual("/a/0", it.Current.Pointer().ToString());
it.MoveNext(); Assert.AreEqual("/a/0/aa", it.Current.Pointer().ToString());
Assert.False(it.MoveNext());
}
{
var it = root.Traverse().GetEnumerator();
var f = new JsonFormatter();
f.Value("JsonPath");
root.SetValue(Utf8String.From("/a"), f.GetStoreBytes());
it.MoveNext(); Assert.AreEqual("/", it.Current.Pointer().ToString());
it.MoveNext(); Assert.AreEqual("/a", it.Current.Pointer().ToString());
Assert.False(it.MoveNext());
}
}
#if UNITY_EDITOR
[Test]
public void Vector3()
{
var src = new UnityEngine.Vector3(1, 2, 3);
var json = UnityEngine.JsonUtility.ToJson(src);
Assert.AreEqual("{\"x\":1.0,\"y\":2.0,\"z\":3.0}", json);
var dst = UnityEngine.JsonUtility.FromJson<UnityEngine.Vector3>(json);
Assert.AreEqual(src, dst);
}
#endif
}
}

View File

@@ -1,12 +0,0 @@
fileFormatVersion: 2
guid: bafda51ddeeb2b84b920b119176499b8
timeCreated: 1532154188
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -11,15 +11,6 @@ namespace VRM.Samples
{
public static class JsonExtensions
{
public static void SetValue<T>(this JsonNode node, string key, T value, Action<JsonFormatter, T> serialize)
{
var f = new JsonFormatter();
serialize(f, value);
var p = Utf8String.From(key);
var bytes = f.GetStoreBytes();
node.SetValue(p, bytes);
}
public static string ToJson(this glTF self)
{
var f = new JsonFormatter();
@@ -125,64 +116,6 @@ namespace VRM.Samples
Assert.AreEqual(Enum.Parse(typeof(BlendShapePreset), gltfBlendShapeClip.presetName, true), unityBlendShapeClip.Preset);
}
}
var importedJson = JsonParser.Parse(context.Json);
importedJson.SetValue("/extensions/VRM/exporterVersion", VRMVersion.VRM_VERSION, (f, x) => f.Value(x));
importedJson.SetValue("/asset/generator", UniGLTF.UniGLTFVersion.UNIGLTF_VERSION, (f, x) => f.Value(x));
importedJson.SetValue("/scene", 0, (f, x) => f.Value(x));
importedJson.SetValue("/materials/*/doubleSided", false, (f, x) => f.Value(x));
//importJson.SetValue("/materials/*/pbrMetallicRoughness/roughnessFactor", 0);
//importJson.SetValue("/materials/*/pbrMetallicRoughness/baseColorFactor", new float[] { 1, 1, 1, 1 });
importedJson.SetValue("/accessors/*/normalized", false, (f, x) => f.Value(x));
importedJson.RemoveValue(Utf8String.From("/nodes/*/extras"));
/*
importJson.SetValue("/bufferViews/12/byteStride", 4);
importJson.SetValue("/bufferViews/13/byteStride", 4);
importJson.SetValue("/bufferViews/14/byteStride", 4);
importJson.SetValue("/bufferViews/15/byteStride", 4);
importJson.SetValue("/bufferViews/22/byteStride", 4);
importJson.SetValue("/bufferViews/29/byteStride", 4);
importJson.SetValue("/bufferViews/45/byteStride", 4);
importJson.SetValue("/bufferViews/46/byteStride", 4);
importJson.SetValue("/bufferViews/47/byteStride", 4);
importJson.SetValue("/bufferViews/201/byteStride", 4);
importJson.SetValue("/bufferViews/202/byteStride", 4);
importJson.SetValue("/bufferViews/203/byteStride", 4);
importJson.SetValue("/bufferViews/204/byteStride", 4);
importJson.SetValue("/bufferViews/211/byteStride", 4);
importJson.SetValue("/bufferViews/212/byteStride", 4);
importJson.SetValue("/bufferViews/213/byteStride", 4);
importJson.SetValue("/bufferViews/214/byteStride", 4);
importJson.SetValue("/bufferViews/215/byteStride", 4);
importJson.SetValue("/bufferViews/243/byteStride", 4);
importJson.SetValue("/bufferViews/247/byteStride", 64);
importJson.SetValue("/bufferViews/248/byteStride", 64);
importJson.SetValue("/bufferViews/249/byteStride", 64);
importJson.SetValue("/bufferViews/250/byteStride", 64);
importJson.SetValue("/bufferViews/251/byteStride", 64);
importJson.SetValue("/bufferViews/252/byteStride", 64);
importJson.SetValue("/bufferViews/253/byteStride", 64);
*/
importedJson.RemoveValue(Utf8String.From("/bufferViews/*/byteStride"));
var vrm = VRMExporter.Export(new GltfExportSettings(), loaded.gameObject, new EditorTextureSerializer());
// TODO: Check contents in JSON
/*var exportJson = */
JsonParser.Parse(vrm.Gltf.ToJson());
// TODO: Check contents in JSON
/*var newExportedJson = */
// JsonParser.Parse(JsonSchema.FromType<glTF>().Serialize(vrm));
/*
foreach (var kv in importJson.Diff(exportJson))
{
Debug.Log(kv);
}
Assert.AreEqual(importJson, exportJson);
*/
}
}