diff --git a/CHANGELOG.md b/CHANGELOG.md index 9092f61..234cac1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,20 @@ # Changelog +## [1.0.1] - 15/01/2023 +### Add +- `class PrintOut` +- `class TypeUtilitarian` +- `interface IReadOnlyArray` +- `interface IReadOnlyArray` + +Classe de leitura de arquivos com formato `.alf` adicionadado. +- `namespace Cobilas.IO.Alf` + +### Obsolete +- `class CobilasConsole` +- `class CobilasTypeUtility` +### Change +- `class ALFBTWrite` > `class ALFBTWriter` + ## [1.0.0] - 11/11/2022 ### Repositorio com.cobilas.core iniciado - Lançado para o GitHub diff --git a/Runtime/Cobilas/CobilasConsole.cs b/Runtime/Cobilas/CobilasConsole.cs new file mode 100644 index 0000000..ea6a8c6 --- /dev/null +++ b/Runtime/Cobilas/CobilasConsole.cs @@ -0,0 +1,34 @@ +using System; +using System.Diagnostics; + +namespace Cobilas { + [Obsolete("Use PrintOut class")] + public static class CobilasConsole { + + /// Default separator CRLF + public static Action Write { get => PrintOut.Write; set => PrintOut.Write = value; } + public static string Separator { get => PrintOut.Separator; set => PrintOut.Separator = value; } + public static Action WriteLine { get => PrintOut.WriteLine; set => PrintOut.WriteLine = value; } + + public static void Print(params object[] values) => PrintOut.Print(values); + public static void Print(object value) => PrintOut.Print(value); + public static void Print(IFormatProvider provider, string format, params object[] args) => PrintOut.Print(provider, format, args); + public static void Print(string format, params object[] args) => PrintOut.Print(format, args); + + public static void PrintLine(object value) => PrintOut.Print(value); + public static void PrintLine(string format, params object[] args) => PrintOut.Print(format, args); + public static void PrintLine(IFormatProvider provider, string format, params object[] args) => PrintOut.Print(provider, format, args); + + public static void TrackedPrint(object value) => PrintOut.TrackedPrint(value); + public static void TrackedPrintLine(params object[] values) => PrintOut.TrackedPrintLine(values); + public static void TrackedPrintLine(string format, params object[] args) => PrintOut.TrackedPrintLine(format, args); + public static void TrackedPrintLine(IFormatProvider provider, string format, params object[] args) => PrintOut.TrackedPrintLine(provider, format, args); + + public static StackFrame[] TrackMethod() => PrintOut.TrackMethod(); + public static string MethodTrackingList(int startIndex) => PrintOut.MethodTrackingList(startIndex); + + public static void ResetSeparato() => PrintOut.ResetSeparato(); + public static void ResetWrite() => PrintOut.ResetWrite(); + public static void ResetWriteLine() => PrintOut.ResetWriteLine(); + } +} diff --git a/Runtime/Cobilas/Core/CobilasConsole.cs.meta b/Runtime/Cobilas/CobilasConsole.cs.meta similarity index 83% rename from Runtime/Cobilas/Core/CobilasConsole.cs.meta rename to Runtime/Cobilas/CobilasConsole.cs.meta index 9108372..abf8109 100644 --- a/Runtime/Cobilas/Core/CobilasConsole.cs.meta +++ b/Runtime/Cobilas/CobilasConsole.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a0a5d2ab0d90b2e49a76b644fadc694c +guid: 1350c10a43c1ccf43a8c21c4ea3a2691 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/Core/CobilasTypeUtility.cs b/Runtime/Cobilas/CobilasTypeUtility.cs similarity index 94% rename from Runtime/Cobilas/Core/CobilasTypeUtility.cs rename to Runtime/Cobilas/CobilasTypeUtility.cs index a14fec6..e400a4f 100644 --- a/Runtime/Cobilas/Core/CobilasTypeUtility.cs +++ b/Runtime/Cobilas/CobilasTypeUtility.cs @@ -3,6 +3,7 @@ using Cobilas.Collections; namespace Cobilas { + [Obsolete("Use TypeUtilitarian calss")] public static class CobilasTypeUtility { public static bool TypeExist(string fullName) { Assembly[] assemblies = GetAssemblies(); diff --git a/Runtime/Cobilas/Core/CobilasTypeUtility.cs.meta b/Runtime/Cobilas/CobilasTypeUtility.cs.meta similarity index 83% rename from Runtime/Cobilas/Core/CobilasTypeUtility.cs.meta rename to Runtime/Cobilas/CobilasTypeUtility.cs.meta index f9ab329..a5f0380 100644 --- a/Runtime/Cobilas/Core/CobilasTypeUtility.cs.meta +++ b/Runtime/Cobilas/CobilasTypeUtility.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 002340a311c677f4e98f9b267f6bf5e3 +guid: c690a2a4c6e11464abc5d4e42d253403 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/Collections/ArrayManipulation.cs b/Runtime/Cobilas/Collections/ArrayManipulation.cs index 485c4cf..c0efb8d 100644 --- a/Runtime/Cobilas/Collections/ArrayManipulation.cs +++ b/Runtime/Cobilas/Collections/ArrayManipulation.cs @@ -4,114 +4,103 @@ using System.Collections.ObjectModel; namespace Cobilas.Collections { + /// Classe de manipulação de matriz. public static class ArrayManipulation { - public static event Action ExceptionEvent; - private static bool _autoClear; - private static int autoClearLength; - private static Queue exceptions; - - public static Exception[] ExceptionsList => exceptions.ToArray(); - public static Exception FirstError => exceptions.Count == 0 ? (Exception)null : ExceptionsList[0]; - public static Exception LastError => exceptions.Count == 0 ? (Exception)null : ExceptionsList[exceptions.Count - 1]; - - static ArrayManipulation() { - exceptions = new Queue(); - _autoClear = true; - autoClearLength = 5; - ExceptionEvent = null; - } - - public static void AutoClearExceptionsList(bool autoClear, int length = 5) { - _autoClear = autoClear; - autoClearLength = length; - } - - private static void AddException(Exception e) { - if (ExceptionEvent != null) ExceptionEvent(e); - if (_autoClear) { - if (exceptions.Count < autoClearLength) exceptions.Enqueue(e); - else { - int length = (exceptions.Count - autoClearLength) - 1; - length = length < 0 ? 0 : length; - for (int I = 0; I < length; I++) - _ = exceptions.Dequeue(); - exceptions.Enqueue(e); - } - } - else exceptions.Enqueue(e); - } - - //Insert + /// Insira um item no idice de um . + /// Os itens seren inseridos no . + /// Indice alvo. + /// alvo. public static T[] Insert(T[] itens, int index, T[] list) { - try { - if (list == null) list = new T[0]; - T[] newList = new T[list.Length + itens.Length]; - Array.Copy(list, 0, newList, 0, index); - Array.Copy(itens, 0, newList, index, itens.Length); - Array.Copy(list, index, newList, itens.Length + index, list.Length - index); - return newList; - } catch (Exception e) { - AddException(e); - return list; - } - } - + if (list == null) list = new T[0]; + T[] newList = new T[list.Length + itens.Length]; + Array.Copy(list, 0, newList, 0, index); + Array.Copy(itens, 0, newList, index, itens.Length); + Array.Copy(list, index, newList, itens.Length + index, list.Length - index); + return newList; + } + + /// Insira um item no idice de um . + /// O iten a ser inserido no . + /// Indice alvo. + /// alvo. public static T[] Insert(T item, int index, T[] list) => Insert(new T[] { item }, index, list); + /// Insira um item no idice de um . + /// Os itens seren inseridos no . + /// Indice alvo. + /// alvo. public static T[] Insert(IEnumerator itens, int index, T[] list) { - try { - while (itens.MoveNext()) - list = Insert(itens.Current, index, list); - } catch (Exception e) { - AddException(e); - } + while (itens.MoveNext()) + list = Insert(itens.Current, index, list); return list; } + /// Insira um item no idice de um . + /// Os itens seren inseridos no . + /// Indice alvo. + /// alvo. public static void Insert(T[] itens, int index, ref T[] list) => list = Insert(itens, index, list); + /// Insira um item no idice de um . + /// O iten a ser inserido no . + /// Indice alvo. + /// alvo. public static void Insert(T item, int index, ref T[] list) => list = Insert(item, index, list); + /// Adicione itens que não estão no . + /// O iten a ser inserido no . + /// alvo. public static T[] AddNon_Existing(T item, T[] list) { if (!Exists(item, list)) return Add(item, list); return list; } + /// Adicione itens que não estão no . + /// O iten a ser inserido no . + /// alvo. public static void AddNon_Existing(T item, ref T[] list) => list = AddNon_Existing(item, list); + /// Os itens seren inseridos no . + /// alvo. public static T[] Add(T[] itens, T[] list) => Insert(itens, ArrayLength(list), list); + /// Os itens seren inseridos no . + /// alvo. public static T[] Add(IEnumerator itens, T[] list) => Insert(itens, ArrayLength(list), list); + /// Os itens seren inseridos no . + /// alvo. public static void Add(IEnumerator itens, ref T[] list) => list = Add(itens, list); + /// O iten a ser inserido no . + /// alvo. public static T[] Add(T item, T[] list) => Insert(item, ArrayLength(list), list); + /// Os itens seren inseridos no . + /// alvo. public static void Add(T[] itens, ref T[] list) => Insert(itens, ArrayLength(list), ref list); + /// O iten a ser inserido no . + /// alvo. public static void Add(T item, ref T[] list) => Insert(item, ArrayLength(list), ref list); +#pragma warning disable CS1591 public static T[] Remove(int index, int length, T[] list) { - try { - T[] newList = new T[list.Length - length]; - Array.Copy(list, 0, newList, 0, index); - Array.Copy(list, index + length, newList, index, list.Length - (index + length)); - return newList; - } catch (Exception e) { - AddException(e); - return list; - } + T[] newList = new T[list.Length - length]; + Array.Copy(list, 0, newList, 0, index); + Array.Copy(list, index + length, newList, index, list.Length - (index + length)); + return newList; } public static void Remove(int index, int length, ref T[] list) @@ -129,23 +118,23 @@ public static T[] Remove(T item, T[] list) public static void Remove(T item, ref T[] list) => list = Remove(item, list); - public static void ClearArray(Array array) { - try { Array.Clear(array, 0, array.Length); } - catch (Exception e) { AddException(e); } - } + /// Limpa uma lista. + public static void ClearArray(Array array) + => Array.Clear(array, 0, array.Length); + /// Limpa uma lista. public static void ClearArray(ref T[] array) { - try { - Array.Clear(array, 0, array.Length); - array = null; - } catch (Exception e) { AddException(e); } + Array.Clear(array, 0, array.Length); + array = null; } + /// Limpa uma lista. public static void ClearArraySafe(Array array) { if (!EmpytArray(array)) ClearArray(array); } + /// Limpa uma lista. public static void ClearArraySafe(ref T[] array) { if (!EmpytArray(array)) { ClearArray(array); @@ -154,43 +143,28 @@ public static void Remove(T item, ref T[] list) } public static void SeparateList(T[] list, int separationIndex, out T[] part1, out T[] part2) { - try { - Array.Copy(list, 0, part1 = new T[separationIndex + 1], 0, separationIndex + 1); - Array.Copy(list, separationIndex + 1, part2 = new T[list.Length - (separationIndex + 1)], 0, list.Length - (separationIndex + 1)); - } catch (Exception e) { - AddException(e); - part1 = part2 = (T[])null; - } + Array.Copy(list, 0, part1 = new T[separationIndex + 1], 0, separationIndex + 1); + Array.Copy(list, separationIndex + 1, part2 = new T[list.Length - (separationIndex + 1)], 0, list.Length - (separationIndex + 1)); } public static T[] TakeStretch(int index, int length, T[] list) { - try { - T[] Res = new T[length]; - CopyTo(list, index, Res, 0, length); - return Res; - } catch (Exception e) { - AddException(e); - return (T[])null; - } + T[] Res = new T[length]; + CopyTo(list, index, Res, 0, length); + return Res; } - public static ReadOnlyCollection ReadOnly(T[] list) { - try { - return Array.AsReadOnly(list); - } catch (Exception e) { - AddException(e); - return new ReadOnlyCollection(new List(0)); - } - } + /// Cria uma lista somente de leitura. + /// A lista que será somente leitura. + public static ReadOnlyCollection ReadOnly(T[] list) + => Array.AsReadOnly(list); - public static int IndexOf(object item, Array array, int index, int length) { - try { - return Array.IndexOf(array, item, index, length); - } catch (Exception e) { - AddException(e); - return -1; - } - } + /// Cria uma lista somente de leitura. + /// A lista que será somente leitura. + public static ReadOnlyCollection ReadOnlySafe(T[] list) + => EmpytArray(list) ? new ReadOnlyCollection(new List()) : ReadOnly(list); + + public static int IndexOf(object item, Array array, int index, int length) + => Array.IndexOf(array, item, index, length); public static int IndexOf(object item, Array array, int index) => IndexOf(item, array, index, array.Length); @@ -205,13 +179,8 @@ public static int IndexOf(object item, Array array) return false; } - public static void CopyTo(Array sourceArray, long sourceIndex, Array destinationArray, long destinationIndex, long length) { - try { - Array.Copy(sourceArray, sourceIndex, destinationArray, destinationIndex, length); - } catch (Exception e) { - AddException(e); - } - } + public static void CopyTo(Array sourceArray, long sourceIndex, Array destinationArray, long destinationIndex, long length) + => Array.Copy(sourceArray, sourceIndex, destinationArray, destinationIndex, length); public static void CopyTo(Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length) => CopyTo(sourceArray, (long)sourceIndex, destinationArray, (long)destinationIndex, (long)length); @@ -225,18 +194,17 @@ public static void CopyTo(Array sourceArray, Array destinationArray, int length) public static void CopyTo(Array sourceArray, Array destinationArray) => CopyTo(sourceArray, 0, destinationArray, 0, sourceArray.Length); - public static void Reverse(Array array) { - try { - Array.Reverse(array, 0, array.Length); - } catch (Exception e) { - AddException(e); - } - } + /// Inverte uma lista. + public static void Reverse(Array array) + => Array.Reverse(array, 0, array.Length); + /// Indica se a lista está vazia. public static bool EmpytArray(ICollection array) => array == null ? true : array.Count == 0; + /// Indica o comprimento da lista. public static int ArrayLength(ICollection array) => array == null ? 0 : array.Count; +#pragma warning restore CS1591 } } diff --git a/Runtime/Cobilas/Collections/IReadOnlyArray.cs b/Runtime/Cobilas/Collections/IReadOnlyArray.cs new file mode 100644 index 0000000..4153c9f --- /dev/null +++ b/Runtime/Cobilas/Collections/IReadOnlyArray.cs @@ -0,0 +1,8 @@ +using System.Collections; + +namespace Cobilas.Collections { + public interface IReadOnlyArray : IEnumerable { + int Count { get; } + object this[int index] { get; } + } +} diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Compiler/Compiler_ALFBT_1_0.cs.meta b/Runtime/Cobilas/Collections/IReadOnlyArray.cs.meta similarity index 83% rename from Runtime/Cobilas/IO/Alf/Alfbt/Compiler/Compiler_ALFBT_1_0.cs.meta rename to Runtime/Cobilas/Collections/IReadOnlyArray.cs.meta index d4eacf9..b2c58cc 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Compiler/Compiler_ALFBT_1_0.cs.meta +++ b/Runtime/Cobilas/Collections/IReadOnlyArray.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f68ae4e692bdf1a4bb91dda305a58fbb +guid: b6a2608cbf28eef4da62c50b6a0a9206 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/Collections/IReadOnlyArrayGeneric.cs b/Runtime/Cobilas/Collections/IReadOnlyArrayGeneric.cs new file mode 100644 index 0000000..1bd4046 --- /dev/null +++ b/Runtime/Cobilas/Collections/IReadOnlyArrayGeneric.cs @@ -0,0 +1,9 @@ +#pragma warning disable CS0108 +using System.Collections.Generic; + +namespace Cobilas.Collections { + public interface IReadOnlyArray : IReadOnlyArray, IEnumerable { + T this[int index] { get; } + } +} +#pragma warning restore CS0108 \ No newline at end of file diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTWrite.cs.meta b/Runtime/Cobilas/Collections/IReadOnlyArrayGeneric.cs.meta similarity index 83% rename from Runtime/Cobilas/IO/Alf/Alfbt/ALFBTWrite.cs.meta rename to Runtime/Cobilas/Collections/IReadOnlyArrayGeneric.cs.meta index be65a70..cacb12a 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTWrite.cs.meta +++ b/Runtime/Cobilas/Collections/IReadOnlyArrayGeneric.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8edcda446c14f7041a6f4a4ac815a908 +guid: 5538c20ab1d10274ba39b406bc63e252 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/Core.meta b/Runtime/Cobilas/Extensions.meta similarity index 77% rename from Runtime/Cobilas/Core.meta rename to Runtime/Cobilas/Extensions.meta index 6fea455..b83f17e 100644 --- a/Runtime/Cobilas/Core.meta +++ b/Runtime/Cobilas/Extensions.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6deb39057e71b7143a99777d5b1734c1 +guid: c89571602c6f1474c9101ae69e9eedc3 folderAsset: yes DefaultImporter: externalObjects: {} diff --git "a/Runtime/Cobilas/Core/Extension/PJ_CharExten\303\247\303\243o.meta" "b/Runtime/Cobilas/Extensions/PJ_CharExten\303\247\303\243o.meta" similarity index 77% rename from "Runtime/Cobilas/Core/Extension/PJ_CharExten\303\247\303\243o.meta" rename to "Runtime/Cobilas/Extensions/PJ_CharExten\303\247\303\243o.meta" index eb8dd5f..c74bd47 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_CharExten\303\247\303\243o.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_CharExten\303\247\303\243o.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 56197b5ae74446442bda8e6f70990724 +guid: 4fae4805bfe03dd4b8dd53431ed70955 folderAsset: yes DefaultImporter: externalObjects: {} diff --git "a/Runtime/Cobilas/Core/Extension/PJ_CharExten\303\247\303\243o/Char_CB_Extension.cs" "b/Runtime/Cobilas/Extensions/PJ_CharExten\303\247\303\243o/Char_CB_Extension.cs" similarity index 100% rename from "Runtime/Cobilas/Core/Extension/PJ_CharExten\303\247\303\243o/Char_CB_Extension.cs" rename to "Runtime/Cobilas/Extensions/PJ_CharExten\303\247\303\243o/Char_CB_Extension.cs" diff --git "a/Runtime/Cobilas/Core/Extension/PJ_CharExten\303\247\303\243o/Char_CB_Extension.cs.meta" "b/Runtime/Cobilas/Extensions/PJ_CharExten\303\247\303\243o/Char_CB_Extension.cs.meta" similarity index 83% rename from "Runtime/Cobilas/Core/Extension/PJ_CharExten\303\247\303\243o/Char_CB_Extension.cs.meta" rename to "Runtime/Cobilas/Extensions/PJ_CharExten\303\247\303\243o/Char_CB_Extension.cs.meta" index b54540f..ba69904 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_CharExten\303\247\303\243o/Char_CB_Extension.cs.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_CharExten\303\247\303\243o/Char_CB_Extension.cs.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6b207d9567ae2814fa5ea84f8d1023fe +guid: 574f6a7916578c844a3daa22ac3c9780 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git "a/Runtime/Cobilas/Core/Extension/PJ_CharExten\303\247\303\243o/Char_CB_ExtensionEnum.cs" "b/Runtime/Cobilas/Extensions/PJ_CharExten\303\247\303\243o/Char_CB_ExtensionEnum.cs" similarity index 100% rename from "Runtime/Cobilas/Core/Extension/PJ_CharExten\303\247\303\243o/Char_CB_ExtensionEnum.cs" rename to "Runtime/Cobilas/Extensions/PJ_CharExten\303\247\303\243o/Char_CB_ExtensionEnum.cs" diff --git "a/Runtime/Cobilas/Core/Extension/PJ_CharExten\303\247\303\243o/Char_CB_ExtensionEnum.cs.meta" "b/Runtime/Cobilas/Extensions/PJ_CharExten\303\247\303\243o/Char_CB_ExtensionEnum.cs.meta" similarity index 83% rename from "Runtime/Cobilas/Core/Extension/PJ_CharExten\303\247\303\243o/Char_CB_ExtensionEnum.cs.meta" rename to "Runtime/Cobilas/Extensions/PJ_CharExten\303\247\303\243o/Char_CB_ExtensionEnum.cs.meta" index 3f92192..2225395 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_CharExten\303\247\303\243o/Char_CB_ExtensionEnum.cs.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_CharExten\303\247\303\243o/Char_CB_ExtensionEnum.cs.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6057da13ae75f9a4d8cc7e77f67295fd +guid: f8d48ea18d644434fa5d59ceb62953ab MonoImporter: externalObjects: {} serializedVersion: 2 diff --git "a/Runtime/Cobilas/Core/Extension/PJ_EnumExten\303\247\303\243o.meta" "b/Runtime/Cobilas/Extensions/PJ_EnumExten\303\247\303\243o.meta" similarity index 77% rename from "Runtime/Cobilas/Core/Extension/PJ_EnumExten\303\247\303\243o.meta" rename to "Runtime/Cobilas/Extensions/PJ_EnumExten\303\247\303\243o.meta" index a156842..08c8145 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_EnumExten\303\247\303\243o.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_EnumExten\303\247\303\243o.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 339caa8272001c846b4fc71821707db4 +guid: dc5f717c53694be43a5ddbf11f74d781 folderAsset: yes DefaultImporter: externalObjects: {} diff --git "a/Runtime/Cobilas/Core/Extension/PJ_EnumExten\303\247\303\243o/Enum_CB_Extension.cs" "b/Runtime/Cobilas/Extensions/PJ_EnumExten\303\247\303\243o/Enum_CB_Extension.cs" similarity index 100% rename from "Runtime/Cobilas/Core/Extension/PJ_EnumExten\303\247\303\243o/Enum_CB_Extension.cs" rename to "Runtime/Cobilas/Extensions/PJ_EnumExten\303\247\303\243o/Enum_CB_Extension.cs" diff --git "a/Runtime/Cobilas/Core/Extension/PJ_EnumExten\303\247\303\243o/Enum_CB_Extension.cs.meta" "b/Runtime/Cobilas/Extensions/PJ_EnumExten\303\247\303\243o/Enum_CB_Extension.cs.meta" similarity index 83% rename from "Runtime/Cobilas/Core/Extension/PJ_EnumExten\303\247\303\243o/Enum_CB_Extension.cs.meta" rename to "Runtime/Cobilas/Extensions/PJ_EnumExten\303\247\303\243o/Enum_CB_Extension.cs.meta" index a1eb5a1..5729f56 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_EnumExten\303\247\303\243o/Enum_CB_Extension.cs.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_EnumExten\303\247\303\243o/Enum_CB_Extension.cs.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ad1ba2377583b4e49bf4099f48860c3f +guid: 825ba3bfa7b575b4e8beb11898888581 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git "a/Runtime/Cobilas/Core/Extension/PJ_HashAlgorithmexten\303\247\303\243o.meta" "b/Runtime/Cobilas/Extensions/PJ_HashAlgorithmexten\303\247\303\243o.meta" similarity index 77% rename from "Runtime/Cobilas/Core/Extension/PJ_HashAlgorithmexten\303\247\303\243o.meta" rename to "Runtime/Cobilas/Extensions/PJ_HashAlgorithmexten\303\247\303\243o.meta" index 0a0cff4..688efd2 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_HashAlgorithmexten\303\247\303\243o.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_HashAlgorithmexten\303\247\303\243o.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 813b16464f4dbdf419a03843979aa19e +guid: 04e388ed91475104aa407b115cb7e457 folderAsset: yes DefaultImporter: externalObjects: {} diff --git "a/Runtime/Cobilas/Core/Extension/PJ_HashAlgorithmexten\303\247\303\243o/HashAlgorithm_CB_Extension.cs" "b/Runtime/Cobilas/Extensions/PJ_HashAlgorithmexten\303\247\303\243o/HashAlgorithm_CB_Extension.cs" similarity index 100% rename from "Runtime/Cobilas/Core/Extension/PJ_HashAlgorithmexten\303\247\303\243o/HashAlgorithm_CB_Extension.cs" rename to "Runtime/Cobilas/Extensions/PJ_HashAlgorithmexten\303\247\303\243o/HashAlgorithm_CB_Extension.cs" diff --git "a/Runtime/Cobilas/Core/Extension/PJ_HashAlgorithmexten\303\247\303\243o/HashAlgorithm_CB_Extension.cs.meta" "b/Runtime/Cobilas/Extensions/PJ_HashAlgorithmexten\303\247\303\243o/HashAlgorithm_CB_Extension.cs.meta" similarity index 83% rename from "Runtime/Cobilas/Core/Extension/PJ_HashAlgorithmexten\303\247\303\243o/HashAlgorithm_CB_Extension.cs.meta" rename to "Runtime/Cobilas/Extensions/PJ_HashAlgorithmexten\303\247\303\243o/HashAlgorithm_CB_Extension.cs.meta" index d4058dd..da231e2 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_HashAlgorithmexten\303\247\303\243o/HashAlgorithm_CB_Extension.cs.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_HashAlgorithmexten\303\247\303\243o/HashAlgorithm_CB_Extension.cs.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 38bde3f69d2d1a14ba0d244542d8e624 +guid: cabfee7a41809f44180970b251927ae2 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git "a/Runtime/Cobilas/Core/Extension/PJ_ObjectExten\303\247\303\243o.meta" "b/Runtime/Cobilas/Extensions/PJ_ObjectExten\303\247\303\243o.meta" similarity index 77% rename from "Runtime/Cobilas/Core/Extension/PJ_ObjectExten\303\247\303\243o.meta" rename to "Runtime/Cobilas/Extensions/PJ_ObjectExten\303\247\303\243o.meta" index da38b12..2c073a9 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_ObjectExten\303\247\303\243o.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_ObjectExten\303\247\303\243o.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8b3b970a1e002214bbc82eb0689d409f +guid: fe94c0ac7ca07b34881eda205e03aeb2 folderAsset: yes DefaultImporter: externalObjects: {} diff --git "a/Runtime/Cobilas/Core/Extension/PJ_ObjectExten\303\247\303\243o/Object_CB_Extension.cs" "b/Runtime/Cobilas/Extensions/PJ_ObjectExten\303\247\303\243o/Object_CB_Extension.cs" similarity index 100% rename from "Runtime/Cobilas/Core/Extension/PJ_ObjectExten\303\247\303\243o/Object_CB_Extension.cs" rename to "Runtime/Cobilas/Extensions/PJ_ObjectExten\303\247\303\243o/Object_CB_Extension.cs" diff --git "a/Runtime/Cobilas/Core/Extension/PJ_ObjectExten\303\247\303\243o/Object_CB_Extension.cs.meta" "b/Runtime/Cobilas/Extensions/PJ_ObjectExten\303\247\303\243o/Object_CB_Extension.cs.meta" similarity index 83% rename from "Runtime/Cobilas/Core/Extension/PJ_ObjectExten\303\247\303\243o/Object_CB_Extension.cs.meta" rename to "Runtime/Cobilas/Extensions/PJ_ObjectExten\303\247\303\243o/Object_CB_Extension.cs.meta" index ce939cd..e92227e 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_ObjectExten\303\247\303\243o/Object_CB_Extension.cs.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_ObjectExten\303\247\303\243o/Object_CB_Extension.cs.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4d08101b7b58e654fa9b0b4e8a61e829 +guid: dcfa4eeed9c56214bb0a3bcdd2ef724a MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/Core/Extension/PJ_StreamExtencao.meta b/Runtime/Cobilas/Extensions/PJ_StreamExtencao.meta similarity index 77% rename from Runtime/Cobilas/Core/Extension/PJ_StreamExtencao.meta rename to Runtime/Cobilas/Extensions/PJ_StreamExtencao.meta index eb2f888..36a8e10 100644 --- a/Runtime/Cobilas/Core/Extension/PJ_StreamExtencao.meta +++ b/Runtime/Cobilas/Extensions/PJ_StreamExtencao.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 13202224e887b004bbfff3125f7094a2 +guid: 6fab7716cfec7404aab1b92b8c86e127 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/Cobilas/Core/Extension/PJ_StreamExtencao/Stream_CB_Extension.cs b/Runtime/Cobilas/Extensions/PJ_StreamExtencao/Stream_CB_Extension.cs similarity index 100% rename from Runtime/Cobilas/Core/Extension/PJ_StreamExtencao/Stream_CB_Extension.cs rename to Runtime/Cobilas/Extensions/PJ_StreamExtencao/Stream_CB_Extension.cs diff --git a/Runtime/Cobilas/Core/Extension/PJ_StreamExtencao/Stream_CB_Extension.cs.meta b/Runtime/Cobilas/Extensions/PJ_StreamExtencao/Stream_CB_Extension.cs.meta similarity index 83% rename from Runtime/Cobilas/Core/Extension/PJ_StreamExtencao/Stream_CB_Extension.cs.meta rename to Runtime/Cobilas/Extensions/PJ_StreamExtencao/Stream_CB_Extension.cs.meta index f992ef2..caf35c3 100644 --- a/Runtime/Cobilas/Core/Extension/PJ_StreamExtencao/Stream_CB_Extension.cs.meta +++ b/Runtime/Cobilas/Extensions/PJ_StreamExtencao/Stream_CB_Extension.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 43e6d5081edc88947a4b1e2f43514a1a +guid: 985354872dc1b3d45bd1d4b81b190d2e MonoImporter: externalObjects: {} serializedVersion: 2 diff --git "a/Runtime/Cobilas/Core/Extension/PJ_StringBuilderExten\303\247\303\243o.meta" "b/Runtime/Cobilas/Extensions/PJ_StringBuilderExten\303\247\303\243o.meta" similarity index 77% rename from "Runtime/Cobilas/Core/Extension/PJ_StringBuilderExten\303\247\303\243o.meta" rename to "Runtime/Cobilas/Extensions/PJ_StringBuilderExten\303\247\303\243o.meta" index 420dabf..c986ffa 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_StringBuilderExten\303\247\303\243o.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_StringBuilderExten\303\247\303\243o.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: fe3cc631dba1ba84b8dd60558853b088 +guid: c23f4b6edf9d5924c84af4b45142c5e1 folderAsset: yes DefaultImporter: externalObjects: {} diff --git "a/Runtime/Cobilas/Core/Extension/PJ_StringBuilderExten\303\247\303\243o/StringBuilder_CB_Extension.cs" "b/Runtime/Cobilas/Extensions/PJ_StringBuilderExten\303\247\303\243o/StringBuilder_CB_Extension.cs" similarity index 100% rename from "Runtime/Cobilas/Core/Extension/PJ_StringBuilderExten\303\247\303\243o/StringBuilder_CB_Extension.cs" rename to "Runtime/Cobilas/Extensions/PJ_StringBuilderExten\303\247\303\243o/StringBuilder_CB_Extension.cs" diff --git "a/Runtime/Cobilas/Core/Extension/PJ_StringBuilderExten\303\247\303\243o/StringBuilder_CB_Extension.cs.meta" "b/Runtime/Cobilas/Extensions/PJ_StringBuilderExten\303\247\303\243o/StringBuilder_CB_Extension.cs.meta" similarity index 83% rename from "Runtime/Cobilas/Core/Extension/PJ_StringBuilderExten\303\247\303\243o/StringBuilder_CB_Extension.cs.meta" rename to "Runtime/Cobilas/Extensions/PJ_StringBuilderExten\303\247\303\243o/StringBuilder_CB_Extension.cs.meta" index 92cdbc7..a2bddd5 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_StringBuilderExten\303\247\303\243o/StringBuilder_CB_Extension.cs.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_StringBuilderExten\303\247\303\243o/StringBuilder_CB_Extension.cs.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b841f93fc6a17f44992edf4fb7067a1b +guid: 4ee2943cfeec4c14d876225cce935274 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git "a/Runtime/Cobilas/Core/Extension/PJ_StringExten\303\247\303\243o.meta" "b/Runtime/Cobilas/Extensions/PJ_StringExten\303\247\303\243o.meta" similarity index 77% rename from "Runtime/Cobilas/Core/Extension/PJ_StringExten\303\247\303\243o.meta" rename to "Runtime/Cobilas/Extensions/PJ_StringExten\303\247\303\243o.meta" index 7baaa69..78b875f 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_StringExten\303\247\303\243o.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_StringExten\303\247\303\243o.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b7c1fa0134b3e9b46adec959827075fa +guid: 6b667f63daffdc84b9331e6cb6863f0e folderAsset: yes DefaultImporter: externalObjects: {} diff --git "a/Runtime/Cobilas/Core/Extension/PJ_StringExten\303\247\303\243o/String_CB_Extension.cs" "b/Runtime/Cobilas/Extensions/PJ_StringExten\303\247\303\243o/String_CB_Extension.cs" similarity index 100% rename from "Runtime/Cobilas/Core/Extension/PJ_StringExten\303\247\303\243o/String_CB_Extension.cs" rename to "Runtime/Cobilas/Extensions/PJ_StringExten\303\247\303\243o/String_CB_Extension.cs" diff --git "a/Runtime/Cobilas/Core/Extension/PJ_StringExten\303\247\303\243o/String_CB_Extension.cs.meta" "b/Runtime/Cobilas/Extensions/PJ_StringExten\303\247\303\243o/String_CB_Extension.cs.meta" similarity index 83% rename from "Runtime/Cobilas/Core/Extension/PJ_StringExten\303\247\303\243o/String_CB_Extension.cs.meta" rename to "Runtime/Cobilas/Extensions/PJ_StringExten\303\247\303\243o/String_CB_Extension.cs.meta" index 08011fb..4b01e53 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_StringExten\303\247\303\243o/String_CB_Extension.cs.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_StringExten\303\247\303\243o/String_CB_Extension.cs.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8553a1635cbb14945be015c0adb917d6 +guid: fcc4204e4d6ba8a48be941f18fd3fb95 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git "a/Runtime/Cobilas/Core/Extension/PJ_TypeExten\303\247\303\243o.meta" "b/Runtime/Cobilas/Extensions/PJ_TypeExten\303\247\303\243o.meta" similarity index 77% rename from "Runtime/Cobilas/Core/Extension/PJ_TypeExten\303\247\303\243o.meta" rename to "Runtime/Cobilas/Extensions/PJ_TypeExten\303\247\303\243o.meta" index cd383e7..58a3f82 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_TypeExten\303\247\303\243o.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_TypeExten\303\247\303\243o.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5fc68d90ac5084249a2d2d04a99e40d4 +guid: 8faee25fe78b0d849a5a824e5ebcc76f folderAsset: yes DefaultImporter: externalObjects: {} diff --git "a/Runtime/Cobilas/Core/Extension/PJ_TypeExten\303\247\303\243o/Type_CB_Extension.cs" "b/Runtime/Cobilas/Extensions/PJ_TypeExten\303\247\303\243o/Type_CB_Extension.cs" similarity index 100% rename from "Runtime/Cobilas/Core/Extension/PJ_TypeExten\303\247\303\243o/Type_CB_Extension.cs" rename to "Runtime/Cobilas/Extensions/PJ_TypeExten\303\247\303\243o/Type_CB_Extension.cs" diff --git "a/Runtime/Cobilas/Core/Extension/PJ_TypeExten\303\247\303\243o/Type_CB_Extension.cs.meta" "b/Runtime/Cobilas/Extensions/PJ_TypeExten\303\247\303\243o/Type_CB_Extension.cs.meta" similarity index 83% rename from "Runtime/Cobilas/Core/Extension/PJ_TypeExten\303\247\303\243o/Type_CB_Extension.cs.meta" rename to "Runtime/Cobilas/Extensions/PJ_TypeExten\303\247\303\243o/Type_CB_Extension.cs.meta" index d8e586e..043515f 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_TypeExten\303\247\303\243o/Type_CB_Extension.cs.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_TypeExten\303\247\303\243o/Type_CB_Extension.cs.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 176a2e97277afda4192fa98b24e87c91 +guid: 01e19d305ec6fa640a2a204444787088 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o.meta" "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o.meta" similarity index 77% rename from "Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o.meta" rename to "Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o.meta" index 8e2619d..b728a8e 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4b16fe5dc48e9d641adaa23cd3a22e96 +guid: fa369bf68be918c428ced7552141d086 folderAsset: yes DefaultImporter: externalObjects: {} diff --git "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares.meta" "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares.meta" similarity index 77% rename from "Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares.meta" rename to "Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares.meta" index 2875dce..7639614 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 88eea6f95e6becd47bb6dc2d7d11439a +guid: 7e3168b5885d2ea48bdbf95f1dc427e5 folderAsset: yes DefaultImporter: externalObjects: {} diff --git "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementAttribute.cs" "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementAttribute.cs" similarity index 100% rename from "Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementAttribute.cs" rename to "Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementAttribute.cs" diff --git "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementAttribute.cs.meta" "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementAttribute.cs.meta" similarity index 83% rename from "Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementAttribute.cs.meta" rename to "Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementAttribute.cs.meta" index b55c892..c470500 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementAttribute.cs.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementAttribute.cs.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c2b5a6b36fe2c794ca14ae341765bd27 +guid: f2b3f2bf1883ec54ba748ceb2c4d393e MonoImporter: externalObjects: {} serializedVersion: 2 diff --git "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementBase.cs" "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementBase.cs" similarity index 100% rename from "Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementBase.cs" rename to "Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementBase.cs" diff --git "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementBase.cs.meta" "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementBase.cs.meta" similarity index 83% rename from "Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementBase.cs.meta" rename to "Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementBase.cs.meta" index 82a2ab8..0602096 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementBase.cs.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementBase.cs.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ad45fd63f83a17843bbc84dee4c6932c +guid: b6a50339a53103b4d8664cff6baad775 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementTag.cs" "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementTag.cs" similarity index 100% rename from "Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementTag.cs" rename to "Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementTag.cs" diff --git "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementTag.cs.meta" "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementTag.cs.meta" similarity index 83% rename from "Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementTag.cs.meta" rename to "Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementTag.cs.meta" index 1f25c73..712b010 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementTag.cs.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementTag.cs.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2ee45d29227581d47b4f237018ad0ca7 +guid: e21e380e7084dcc45831b57047169f2f MonoImporter: externalObjects: {} serializedVersion: 2 diff --git "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementValue.cs" "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementValue.cs" similarity index 100% rename from "Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementValue.cs" rename to "Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementValue.cs" diff --git "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementValue.cs.meta" "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementValue.cs.meta" similarity index 83% rename from "Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementValue.cs.meta" rename to "Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementValue.cs.meta" index 85273f9..44a30e1 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementValue.cs.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/Classe auxiliares/ElementValue.cs.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4f938efb87f3e5946a11f0f47de9aff3 +guid: 7930327e7ed62664ab45be79dd183068 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o.meta" "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o.meta" similarity index 77% rename from "Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o.meta" rename to "Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o.meta" index ca8528a..81389d4 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: deed41b51ea4abe409c0343f4e9e9b1d +guid: beb93266df12321458b20eb98b5761a1 folderAsset: yes DefaultImporter: externalObjects: {} diff --git "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLReadExtencao.cs" "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLReadExtencao.cs" similarity index 100% rename from "Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLReadExtencao.cs" rename to "Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLReadExtencao.cs" diff --git "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLReadExtencao.cs.meta" "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLReadExtencao.cs.meta" similarity index 83% rename from "Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLReadExtencao.cs.meta" rename to "Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLReadExtencao.cs.meta" index 2a5e919..b32e3e6 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLReadExtencao.cs.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLReadExtencao.cs.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: cafa36efe1eaca04699e56432b50fada +guid: 38c236de0ec8a07469aa3bd28d446877 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLWriterExtencao.cs" "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLWriterExtencao.cs" similarity index 100% rename from "Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLWriterExtencao.cs" rename to "Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLWriterExtencao.cs" diff --git "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLWriterExtencao.cs.meta" "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLWriterExtencao.cs.meta" similarity index 83% rename from "Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLWriterExtencao.cs.meta" rename to "Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLWriterExtencao.cs.meta" index b687830..b21b7b4 100644 --- "a/Runtime/Cobilas/Core/Extension/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLWriterExtencao.cs.meta" +++ "b/Runtime/Cobilas/Extensions/PJ_XMLExten\303\247\303\243o/XMLExten\303\247\303\243o/XMLWriterExtencao.cs.meta" @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 36660119762373c45ba049239544df8c +guid: 31ea0f4446192794b988d6356a6b1f95 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/Core/Extension.meta b/Runtime/Cobilas/IO/Alf/ALF format.meta similarity index 77% rename from Runtime/Cobilas/Core/Extension.meta rename to Runtime/Cobilas/IO/Alf/ALF format.meta index 5b8f580..85970cf 100644 --- a/Runtime/Cobilas/Core/Extension.meta +++ b/Runtime/Cobilas/IO/Alf/ALF format.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 24fef13302c83aa49886f238977e738d +guid: 28c0b9b633b9fa447972e2e36ab0cf6f folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/Cobilas/IO/Alf/ALF format/ALF format(1.0).txt b/Runtime/Cobilas/IO/Alf/ALF format/ALF format(1.0).txt new file mode 100644 index 0000000..3af5b73 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/ALF format/ALF format(1.0).txt @@ -0,0 +1,12 @@ +[header:> + [version:1.0] + [encoding:utf-8] +<] + +[? Comentários ?] + +[Tag1: + :texto1 + :> + [Tag1-1:text1] +<] \ No newline at end of file diff --git a/Runtime/Cobilas/IO/Alf/ALF format/ALF format(1.0).txt.meta b/Runtime/Cobilas/IO/Alf/ALF format/ALF format(1.0).txt.meta new file mode 100644 index 0000000..7874f67 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/ALF format/ALF format(1.0).txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 874f8dfbc243f974694b24365b24501e +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/ALFERROR.cs b/Runtime/Cobilas/IO/Alf/ALFERROR.cs new file mode 100644 index 0000000..3ecec9f --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/ALFERROR.cs @@ -0,0 +1,22 @@ +namespace Cobilas.IO.Alf { + internal static class ALFERROR { + + public static ALFException PrintError(string format, params object[] args) + => new ALFException(string.Format(format, args)); + + public static ALFException PrintError(string arg) + => PrintError("{0}", arg); + + public static ALFException PrintLineError(string format, int line, params object[] args) + => PrintError(string.Format("(L:{0}){1}", line, format), args); + + public static ALFException TextElementERROR(int line) + => PrintError("(L:{0}){1}", line, "the text element has not been started!"); + + public static ALFException CommentERROR(int line) + => PrintError("(L:{0}){1}", line, "the comment must start on an empty line!"); + + public static ALFException UnidentifiedElement(int line, string txt) + => PrintError("(L:{0})element ({1}) not identified!", line, txt); + } +} diff --git a/Runtime/Cobilas/Core/interrupter.cs.meta b/Runtime/Cobilas/IO/Alf/ALFERROR.cs.meta similarity index 83% rename from Runtime/Cobilas/Core/interrupter.cs.meta rename to Runtime/Cobilas/IO/Alf/ALFERROR.cs.meta index 59b3f0b..70a8159 100644 --- a/Runtime/Cobilas/Core/interrupter.cs.meta +++ b/Runtime/Cobilas/IO/Alf/ALFERROR.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 28aa1d2bc16bbc648b03cb6b45c68a6b +guid: 1e305b42fb9eac144855c0b02695ed35 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/IO/Alf/ALFException.cs b/Runtime/Cobilas/IO/Alf/ALFException.cs new file mode 100644 index 0000000..392abc9 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/ALFException.cs @@ -0,0 +1,12 @@ +using System; +using System.Runtime.Serialization; + +namespace Cobilas.IO.Alf { + [Serializable] + public class ALFException : Exception { + public ALFException() { } + public ALFException(string message) : base(message) { } + public ALFException(string message, Exception inner) : base(message, inner) { } + protected ALFException(SerializationInfo info, StreamingContext context) : base(info, context) { } + } +} \ No newline at end of file diff --git a/Runtime/Cobilas/IO/Alf/ALFException.cs.meta b/Runtime/Cobilas/IO/Alf/ALFException.cs.meta new file mode 100644 index 0000000..ce6979c --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/ALFException.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: af1ceb2141853e3428496a3c7f40fac3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/ALFRead.cs b/Runtime/Cobilas/IO/Alf/ALFRead.cs new file mode 100644 index 0000000..0963b54 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/ALFRead.cs @@ -0,0 +1,46 @@ +using System; +using System.IO; +using System.Text; +using Cobilas.Collections; +using Cobilas.IO.Alf.Components; +using Cobilas.IO.Alf.Components.Collections; + +namespace Cobilas.IO.Alf { + public sealed class ALFRead : IDisposable { + private readonly ALFItem root; + private bool disposedValue; + + public ALFItemReadOnly ReadOnly => new ALFItemReadOnly(root); + + private ALFRead() { + root = new ALFItem(); + root.isRoot = true; + root.name = "Root"; + } + + public void Dispose() { + if (disposedValue) + throw new ObjectDisposedException($"The object {typeof(ALFWriter)} has already been discarded"); + disposedValue = true; + root?.Dispose(); + } + + public static ALFRead Create(TextReader reader) { + ALFRead read = new ALFRead(); + string[] lines = (string[])null; + string line; + while ((line = reader.ReadLine()) != (string)null) + ArrayManipulation.Add(line, ref lines); + ALFCompiler.Read(read.root, lines); + return read; + } + + public static ALFRead Create(Stream stream, Encoding encoding) { + using (StringReader reader = new StringReader(stream.GetString(encoding))) + return Create(reader); + } + + public static ALFRead Create(Stream stream) + => Create(stream, Encoding.UTF8); + } +} diff --git a/Runtime/Cobilas/IO/Alf/ALFRead.cs.meta b/Runtime/Cobilas/IO/Alf/ALFRead.cs.meta new file mode 100644 index 0000000..ab07a69 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/ALFRead.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0c41013e0567c114ebbdad76d9724448 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/ALFWriter.cs b/Runtime/Cobilas/IO/Alf/ALFWriter.cs new file mode 100644 index 0000000..b3e2d57 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/ALFWriter.cs @@ -0,0 +1,163 @@ +using System; +using System.IO; +using System.Text; +using Cobilas.Collections; +using Cobilas.IO.Alf.Components; + +namespace Cobilas.IO.Alf { + public sealed class ALFWriter : IDisposable { + + private Stream stream; + private Encoding encoding; + private TextWriter textWriter; + private bool disposed; + private bool writingStarted; + private bool headerStarted; + private readonly ALFItem root; + private ALFItem temp; + + private ALFWriter() { + disposed = false; + temp = root = new ALFItem(); + temp.isRoot = true; + temp.name = "Root"; + stream = (Stream)null; + encoding = (Encoding)null; + textWriter = (TextWriter)null; + } + + public void StartElement(string name) { + if (string.IsNullOrEmpty(name)) + throw ALFERROR.PrintError("the markup cannot be given a blank name."); + + if (name.Contains("\n") || name.Contains(":")) + throw ALFERROR.PrintError("name cannot contain ('\\n', ':')\"{0}\"", name); + + writingStarted = true; + ALFItem itemtemp = new ALFItem(); + itemtemp.name = name; + itemtemp.parent = temp; + temp.Add(itemtemp); + temp = itemtemp; + } + + public void StartElementHeader() { + if (writingStarted || headerStarted) + throw new ALFException("The header must start first."); + headerStarted = true; + StartElement("header"); + StartElement("version"); + WriteText(ALFCompiler.version); + EndElement(); + StartElement("type"); + WriteText(".alf"); + EndElement(); + if (encoding != (Encoding)null) { + StartElement("encoding"); + WriteText(encoding.BodyName); + EndElement(); + } + if (textWriter != (TextWriter)null) { + StartElement("encoding"); + WriteText(textWriter.Encoding.BodyName); + EndElement(); + } + EndElement(); + } + + public void StartElementComment(string format, params object[] args) { + StartElement("comment"); + WriteText(string.Format(format, args)); + EndElement(); + if (!headerStarted) + writingStarted = false; + } + public void StartElementComment(string text) => StartElementComment("{0}", text); + public void StartElementBreakLine(int breaks) { + StartElement("breakline"); + for (int I = 0; I < breaks; I++) + WriteText("\r\n"); + EndElement(); + if (!headerStarted) + writingStarted = false; + } + public void StartElementBreakLine() => StartElementBreakLine(1); + + public void WriteText(bool value) => I_WriteText(value); + public void WriteText(string value) => I_WriteText(value); + public void WriteText(char value) => I_WriteText(value); + public void WriteText(char[] value) => I_WriteText(value); + public void WriteText(float value) => I_WriteText(value); + public void WriteText(double value) => I_WriteText(value); + public void WriteText(decimal value) => I_WriteText(value); + public void WriteText(sbyte value) => I_WriteText(value); + public void WriteText(short value) => I_WriteText(value); + public void WriteText(int value) => I_WriteText(value); + public void WriteText(long value)=> I_WriteText(value); + public void WriteText(byte value) => I_WriteText(value); + public void WriteText(ushort value) => I_WriteText(value); + public void WriteText(uint value) => I_WriteText(value); + public void WriteText(ulong value) => I_WriteText(value); + public void WriteText(DateTime value) => I_WriteText(value); + + public void EndElement() { + if (temp.isRoot) + throw new ALFException("No element has been started!"); + ALFItem mtemp = temp.parent; + temp = mtemp; + } + + public void Dispose() { + if (disposed) + throw new ObjectDisposedException($"The object {typeof(ALFWriter)} has already been discarded"); + disposed = true; + + int count = ArrayManipulation.ArrayLength(root.itens); + StringBuilder builder = new StringBuilder(); + for (int I = 0; I < count; I++) + ALFCompiler.Writer(root.itens[I], 0, builder); + + if (IsStrem()) { + byte[] chars = encoding.GetBytes(builder.ToString()); + stream.Write(chars, 0, chars.Length); + } else { + textWriter.Write(builder.ToString()); + } + + stream = (Stream)null; + encoding = (Encoding)null; + textWriter = (TextWriter)null; + } + + private void I_WriteText(object value) { + if (temp.isRoot) + throw new ALFException("No element has been started!"); + temp.text.Append(value); + } + + private void I_WriteText(char[] value) { + if (temp.isRoot) + throw new ALFException("No element has been started!"); + temp.text.Append(value); + } + + private bool IsStrem() + => stream != (Stream)null; + + public static ALFWriter Create(TextWriter text) { + ALFWriter writer = new ALFWriter(); + writer.textWriter = text; + return writer; + } + + public static ALFWriter Create(Stream stream, Encoding encoding) { + ALFWriter res = new ALFWriter(); + res.stream = stream; + res.encoding = encoding; + return res; + } + + public static ALFWriter Create(Stream stream) + => Create(stream, Encoding.UTF8); + } +} diff --git a/Runtime/Cobilas/IO/Alf/ALFWriter.cs.meta b/Runtime/Cobilas/IO/Alf/ALFWriter.cs.meta new file mode 100644 index 0000000..a3b0c8c --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/ALFWriter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1d5fa3debcd39a445bc06e11745d686c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTArk/ALFBT format(1.5).txt b/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTArk/ALFBT format(1.5).txt new file mode 100644 index 0000000..137dd8c --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTArk/ALFBT format(1.5).txt @@ -0,0 +1,17 @@ +#> ALFBT format(1.5) + +#> Comentário +#! version:/*1.5*/ +#! type:/*.alfbt*/ +#! encoding:/*utf-8*/ + +#> Marcação uni-linha +#! Tag1:/*value1*/ + +#> Marcação mult-linha +#! Tag2:/* +value1 +value2 +value3 +value4 +*/ \ No newline at end of file diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTArk/ALFBT format(1.5).txt.meta b/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTArk/ALFBT format(1.5).txt.meta new file mode 100644 index 0000000..8ce15ff --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTArk/ALFBT format(1.5).txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d79b28b79b5370041bd5d7041a58ddb2 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Components/ALFBTFormatException.cs b/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTFormatException.cs similarity index 85% rename from Runtime/Cobilas/IO/Alf/Alfbt/Components/ALFBTFormatException.cs rename to Runtime/Cobilas/IO/Alf/Alfbt/ALFBTFormatException.cs index 7614d7a..20294b8 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Components/ALFBTFormatException.cs +++ b/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTFormatException.cs @@ -1,16 +1,15 @@ using System; +using Cobilas.IO.Alf; using System.Globalization; using System.Runtime.Serialization; -namespace Cobilas.IO.Alf.Alfbt.Components { -#pragma warning disable CS1591 +namespace Cobilas.IO.Alf.Alfbt { [Serializable] - public class ALFBTFormatException : Exception { + public class ALFBTFormatException : ALFException { public ALFBTFormatException() { } public ALFBTFormatException(string message) : base(message) { } public ALFBTFormatException(string message, Exception inner) : base(message, inner) { } protected ALFBTFormatException(SerializationInfo info, StreamingContext context) : base(info, context) { } -#pragma warning restore CS1591 internal static ALFBTFormatException GetException(string msm_en_US, string other) { switch (CultureInfo.CurrentCulture.Name) { @@ -19,11 +18,11 @@ public class ALFBTFormatException : Exception { } } - internal static ALFBTFormatException GetRepeatedFlag(string name, AlfbtFlags type) - => GetException( - $"Flag {name}(type:{type}) already exists!", - $"Bandeira {name}(tipo:{type}) já existe!" - ); + //internal static ALFBTFormatException GetRepeatedFlag(string name, AlfbtFlags type) + // => GetException( + // $"Flag {name}(type:{type}) already exists!", + // $"Bandeira {name}(tipo:{type}) já existe!" + // ); internal static ALFBTFormatException GetHeaderSecond() => GetException( @@ -31,10 +30,10 @@ internal static ALFBTFormatException GetHeaderSecond() "Cabeçalho deve estar acima das bandeiras de texto e marcação!" ); - internal static ALFBTFormatException GetInvalidFormattingException(int line) + internal static ALFBTFormatException GetInvalidFormattingException(int line, string txt) => GetException( - $"(Line: {line})Flag formatting invalid!", - $"(Linha: {line})Formatação de bandeira invalida!" + $"(Line: {line})({txt})\r\nFlag formatting invalid!", + $"(Linha: {line})({txt})\r\nFormatação de bandeira invalida!" ); internal static ALFBTFormatException GetHeaderFlagNameInvalid(string name) diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Components/ALFBTFormatException.cs.meta b/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTFormatException.cs.meta similarity index 83% rename from Runtime/Cobilas/IO/Alf/Alfbt/Components/ALFBTFormatException.cs.meta rename to Runtime/Cobilas/IO/Alf/Alfbt/ALFBTFormatException.cs.meta index f459deb..cc39084 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Components/ALFBTFormatException.cs.meta +++ b/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTFormatException.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 30fd27002f3607b49a397426ff8b72f2 +guid: 592a646f8b6f8eb4184243c1aa1eb70d MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTRead.cs b/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTRead.cs index fda7771..43b5d6d 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTRead.cs +++ b/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTRead.cs @@ -3,127 +3,165 @@ using System.Text; using Cobilas.Collections; using Cobilas.IO.Alf.Alfbt.Flags; -using Cobilas.IO.Alf.Alfbt.Compiler; using Cobilas.IO.Alf.Alfbt.Components; +using Cobilas.IO.Alf.Alfbt.Components.Compiler; +using Cobilas.IO.Alf.Alfbt.Components.Collections; +using System.Collections.Generic; +using System.Collections; -/* - * bandeira de marcação = marking flag - * bandeira de texto = text flag - * bandeira de cabeçalho = header flag - * bandeira de comentario = comment flag - */ namespace Cobilas.IO.Alf.Alfbt { -#pragma warning disable CS1591 /// Responsavel pela leitura de um texto alfbt. - public sealed class ALFBTRead : IDisposable { - private bool disposedValue; - private FlagBase[] flags; + public sealed class ALFBTRead : IDisposable, IReadOnlyArray { - public int FlagCount => ArrayManipulation.ArrayLength(flags); + private readonly ALFRead myRead; - internal ALFBTRead(string[] args) { - flags = Compiler_ALFBT_1_0.Decompiler(args); - } + public int Count => ((IReadOnlyArray)ReadOnly).Count; + public ALFBTFlagReadOnly ReadOnly => new ALFBTFlagReadOnly(myRead.ReadOnly); + + object IReadOnlyArray.this[int index] => ((IReadOnlyArray)ReadOnly)[index]; + public ALFBTFlagReadOnly this[int index] => ((IReadOnlyArray)ReadOnly)[index]; - ~ALFBTRead() - => Dispose(); + private ALFBTRead(ALFRead read) { + this.myRead = read; + } + [Obsolete("Use ALFBTFlagReadOnly:GetFlag(string)")] public HeaderFlag GetHeaderFlag() => new HeaderFlag( - GetFlag(Compiler_ALFBT_1_0.n_Version, AlfbtFlags.HeaderFlag), - GetFlag(Compiler_ALFBT_1_0.n_Type, AlfbtFlags.HeaderFlag), - GetFlag(Compiler_ALFBT_1_0.n_Encoding, AlfbtFlags.HeaderFlag) + GetFlag(ALFBTCompiler_1_0.n_Version), + GetFlag(ALFBTCompiler_1_0.n_Type), + GetFlag(ALFBTCompiler_1_0.n_Encoding) ); + [Obsolete("Use ALFBTFlagReadOnly:GetFlag(string)")] public MarkingFlag GetMarkingFlag(string name) - => new MarkingFlag(GetFlag(name, AlfbtFlags.MarkingFlag)); + => new MarkingFlag(I_GetMarkingFlag(name)); + [Obsolete("Use ALFBTFlagReadOnly:GetFlag(string)")] public TextFlag GetTextFlag(string name) - => new TextFlag(GetFlag(name, AlfbtFlags.TextFlag)); + => new TextFlag(I_GetTextFlag(name)); + [Obsolete("Use ALFBTFlagReadOnly:GetFlag(string)")] public MarkingFlag[] GetAllMarkingFlags() { MarkingFlag[] res = null; - for (int I = 0; I < FlagCount; I++) - if (flags[I].Flags == AlfbtFlags.MarkingFlag) - ArrayManipulation.Add(new MarkingFlag(flags[I]), ref res); + foreach (var item in ReadOnly) + if (!item.ToString().Contains("\n")) + ArrayManipulation.Add(new MarkingFlag(item), ref res); return res; } + [Obsolete("Use ALFBTFlagReadOnly:GetFlag(string)")] public TextFlag[] GetAllTextFlags() { TextFlag[] res = null; - for (int I = 0; I < FlagCount; I++) - if (flags[I].Flags == AlfbtFlags.TextFlag) - ArrayManipulation.Add(new TextFlag(flags[I]), ref res); + foreach (var item in ReadOnly) + if (item.ToString().Contains("\n")) + ArrayManipulation.Add(new TextFlag(item), ref res); return res; } public CommentFlag GetCommentFlag() { CommentFlag comment = new CommentFlag(); - for (int I = 0; I < FlagCount; I++) - if (flags[I].Flags == AlfbtFlags.CommentFlag) - comment.Add(flags[I]); + foreach (var item in ReadOnly) + if (item.Name == "comment") + comment.Add(item); return comment; } + [Obsolete("Use bool:FlagExists(string)")] public bool TextFlagExists(string name) => FlagExists(name, AlfbtFlags.TextFlag); + [Obsolete("Use bool:FlagExists(string)")] public bool MarkingFlagExists(string name) => FlagExists(name, AlfbtFlags.MarkingFlag); + [Obsolete("Use bool:FlagExists(string)")] public bool HeaderFlagExists(string name) => FlagExists(name, AlfbtFlags.HeaderFlag); + [Obsolete("Use bool:FlagExists(string)")] public bool FlagExists(string name, AlfbtFlags flags) { - for (int I = 0; I < FlagCount; I++) - if (this.flags[I].Name == name && this.flags[I].Flags == flags) + bool res = false; + switch (flags) { + case AlfbtFlags.MarkingFlag: + res = !GetFlag(name).ToString().Contains("\n") && + name != ALFBTCompiler_1_0.n_Version && + name != ALFBTCompiler_1_0.n_Type && + name != ALFBTCompiler_1_0.n_Encoding; + return res; + case AlfbtFlags.TextFlag: + res = GetFlag(name).ToString().Contains("\n") && + name != ALFBTCompiler_1_0.n_Version && + name != ALFBTCompiler_1_0.n_Type && + name != ALFBTCompiler_1_0.n_Encoding; + return res; + case AlfbtFlags.HeaderFlag: + res = GetFlag(name) != (ALFBTFlagReadOnly)null && + (name == ALFBTCompiler_1_0.n_Version || + name == ALFBTCompiler_1_0.n_Type || + name == ALFBTCompiler_1_0.n_Encoding); + return res; + default: return res; + } + } + + public bool FlagExists(string name) { + foreach (var item in ReadOnly) + if (item.Name == name) return true; return false; } public void Dispose() { - if (disposedValue) return; - disposedValue = true; - if (FlagCount > 0) - ArrayManipulation.ClearArray(ref flags); + myRead?.Dispose(); } - private FlagBase GetFlag(string name, AlfbtFlags flags) { - for (int I = 0; I < FlagCount; I++) - if (this.flags[I].Name == name && this.flags[I].Flags == flags) - return this.flags[I]; - return (FlagBase)null; + public ALFBTFlagReadOnly GetFlag(string name) { + foreach (var item in ReadOnly) + if (item.Name == name) + return item; + return (ALFBTFlagReadOnly)null; } - public static ALFBTRead Create(Stream stream, Encoding encoding) { - string[] args = null; - using (StreamReader reader = new StreamReader(stream, encoding)) - while (!reader.EndOfStream) - ArrayManipulation.Add(reader.ReadLine(), ref args); - return new ALFBTRead(args); + public IEnumerator GetEnumerator() + => ((IEnumerable)ReadOnly).GetEnumerator(); + + IEnumerator IEnumerable.GetEnumerator() + => ((IEnumerable)ReadOnly).GetEnumerator(); + + private ALFBTFlagReadOnly I_GetMarkingFlag(string name) { + ALFBTFlagReadOnly readOnly = GetFlag(name); + if (readOnly != (ALFBTFlagReadOnly)null) + if (!readOnly.ToString().Contains("\n")) + return readOnly; + return (ALFBTFlagReadOnly)null; } - public static ALFBTRead Create(Stream stream) { - string[] args = null; - using (StreamReader reader = new StreamReader(stream)) - while (!reader.EndOfStream) - ArrayManipulation.Add(reader.ReadLine(), ref args); - return new ALFBTRead(args); + private ALFBTFlagReadOnly I_GetTextFlag(string name) { + ALFBTFlagReadOnly readOnly = GetFlag(name); + if (readOnly != (ALFBTFlagReadOnly)null) + if (readOnly.ToString().Contains("\n")) + return readOnly; + return (ALFBTFlagReadOnly)null; } public static ALFBTRead Create(TextReader reader) { - string[] args = null; - string temp; - while ((temp = reader.ReadLine()) != null) - ArrayManipulation.Add(temp, ref args); - return new ALFBTRead(args); + string[] lines = (string[])null; + string line; + while ((line = reader.ReadLine()) != (string)null) + ArrayManipulation.Add(line, ref lines); + + using (StringWriter stringWriter = new StringWriter()) { + using (ALFWriter writer = ALFWriter.Create(stringWriter)) + ALFBTCompiler.Read(lines, writer); + return new ALFBTRead(ALFRead.Create(new StringReader(stringWriter.ToString()))); + } } - public static ALFBTRead Create(string path, Encoding encoding) - => Create(File.OpenRead(path), encoding); + public static ALFBTRead Create(Stream stream, Encoding encoding) + => Create(new StringReader(stream.GetString(encoding))); - public static ALFBTRead Create(string path) - => Create(File.OpenRead(path)); + public static ALFBTRead Create(Stream stream) + => Create(stream, Encoding.UTF8); } -#pragma warning restore CS1591 } diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTWrite.cs b/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTWrite.cs deleted file mode 100644 index 4d5f41f..0000000 --- a/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTWrite.cs +++ /dev/null @@ -1,171 +0,0 @@ -using System; -using System.IO; -using System.Text; -using Cobilas.Collections; -using Cobilas.IO.Alf.Alfbt.Flags; -using Cobilas.IO.Alf.Alfbt.Compiler; -using Cobilas.IO.Alf.Alfbt.Components; - -namespace Cobilas.IO.Alf.Alfbt { - /// Responsavel por escrever um texto alfbt - public sealed class ALFBTWrite : IDisposable { - private bool append; - private Stream stream; - private FlagBase[] flags; - private bool headerSecond; - private Encoding encoding; - private bool disposedValue; - -#pragma warning disable CS1591 - public int FlagCount => ArrayManipulation.ArrayLength(flags); - - internal ALFBTWrite(Stream stream, bool append, Encoding encoding) { - this.stream = stream; - this.encoding = encoding; - this.append = append; - } - - ~ALFBTWrite() - => Dispose(); - - public void Write(StringBuilder builder) - => Write(builder.ToString()); - - public void Write(string text) - => Write(new StringReader(text)); - - public void Write(StringReader reader) { - string[] args = null; - string temp; - while ((temp = reader.ReadLine()) != null) - ArrayManipulation.Add(temp, ref args); - ArrayManipulation.Add(Compiler_ALFBT_1_0.Decompiler(args), ref flags); - headerSecond = true; - } - - public void WriteVersionHeaderFlag() { - if (headerSecond) throw ALFBTFormatException.GetHeaderSecond(); - AddFlag(Compiler_ALFBT_1_0.n_Version, Compiler_ALFBT_1_0.m_CompilerVersion, AlfbtFlags.HeaderFlag); - } - - public void WriteTypeHeaderFlag() { - if (headerSecond) throw ALFBTFormatException.GetHeaderSecond(); - AddFlag(Compiler_ALFBT_1_0.n_Type, Compiler_ALFBT_1_0.m_CompilerType, AlfbtFlags.HeaderFlag); - } - - public void WriteEncodingHeaderFlag() { - if (headerSecond) throw ALFBTFormatException.GetHeaderSecond(); - AddFlag(Compiler_ALFBT_1_0.n_Encoding, encoding.BodyName, AlfbtFlags.HeaderFlag); - } - - public void WriteHeaderFlag() { - WriteVersionHeaderFlag(); - WriteTypeHeaderFlag(); - WriteEncodingHeaderFlag(); - } - - public void WriteTextFlag(string name, string text) { - headerSecond = true; - AddFlag(name, text, AlfbtFlags.TextFlag); - } - - public void WriteMarkingFlag(string name, string text) { - headerSecond = true; - AddFlag(name, text, AlfbtFlags.MarkingFlag); - } - - public void WriteCommentFlag(string text) - => AddFlag("cmt", text, AlfbtFlags.CommentFlag); - - public void WriteLineBreak() - => AddFlag("lb", "\n", AlfbtFlags.LineBreak); -#pragma warning restore CS1591 - - /// Fecha o atual. - public void CloseFlow() - => stream.Dispose(); - - /// Dispensa todos os recursos usados no . - public void Dispose() { - if (disposedValue) return; - disposedValue = true; - - byte[] res = encoding.GetBytes(Compiler_ALFBT_1_0.Compiler(flags)); - if (!append) stream.SetLength(res.LongLength); - stream.Write(res, 0, res.Length); - - if (FlagCount > 0) - ArrayManipulation.ClearArray(ref flags); - encoding = null; - stream = null; - } - - private FlagBase Contains(FlagBase flag) { - for (int I = 0; I < FlagCount; I++) - if (flag.Flags != AlfbtFlags.CommentFlag && - flag.Flags != AlfbtFlags.LineBreak && - flags[I].Name == flag.Name && - flags[I].Flags == flag.Flags) - throw ALFBTFormatException.GetRepeatedFlag(flag.Name, flag.Flags); - return flag; - } - - private void AddFlag(string name, string value, AlfbtFlags flag) - => ArrayManipulation.Add(Contains(new FlagBase(name, value, flag)), ref flags); - - /// - /// creates an instance - /// - public static ALFBTWrite Create(Stream stream, bool append, Encoding encoding) - => new ALFBTWrite(stream, append, encoding); - - /// - /// creates an instance - /// Defaut .UTF8 - /// - public static ALFBTWrite Create(Stream stream, bool append) - => Create(stream, append, Encoding.UTF8); - - /// - /// creates an instance - /// Defaut .UTF8 - /// - public static ALFBTWrite Create(Stream stream) - => Create(stream, Encoding.UTF8); - - /// - /// creates an instance - /// Defaut append:true - /// - public static ALFBTWrite Create(Stream stream, Encoding encoding) - => Create(stream, true, encoding); - - /// - /// creates an instance - /// - public static ALFBTWrite Create(string path, bool append, Encoding encoding) - => Create(File.OpenWrite(path), append, encoding); - - /// - /// creates an instance - /// Defaut append:false - /// - public static ALFBTWrite Create(string path, Encoding encoding) - => Create(path, false, encoding); - - /// - /// creates an instance - /// Defaut .UTF8 - /// - public static ALFBTWrite Create(string path, bool append) - => Create(path, append, Encoding.UTF8); - - /// - /// creates an instance - /// Defaut .UTF8 - /// Defaut append:false - /// - public static ALFBTWrite Create(string path) - => Create(path, false, Encoding.UTF8); - } -} diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTWriter.cs b/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTWriter.cs new file mode 100644 index 0000000..57db752 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTWriter.cs @@ -0,0 +1,122 @@ +using System; +using System.IO; +using System.Text; +using Cobilas.IO.Alf.Components; +using Cobilas.IO.Alf.Alfbt.Components.Compiler; + +namespace Cobilas.IO.Alf.Alfbt { + public sealed class ALFBTWriter : IDisposable { + private Stream stream; + private Encoding encoding; + private TextWriter textWriter; + private bool disposed; + private bool writingStarted; + private bool headerStarted; + private readonly ALFItem root; + + private ALFBTWriter() { + disposed = false; + root = new ALFItem(); + root.isRoot = true; + root.name = "Root"; + stream = (Stream)null; + encoding = (Encoding)null; + textWriter = (TextWriter)null; + } + + public void WriterHeaderFlag() { + if (writingStarted || headerStarted) + throw ALFBTFormatException.GetHeaderSecond(); + headerStarted = true; + WriteFlag(ALFBTCompiler_1_0.n_Version, ALFBTCompiler.version); + WriteFlag(ALFBTCompiler_1_0.n_Type, ".alfbt"); + WriteFlag(ALFBTCompiler_1_0.n_Encoding, IsStrem() ? encoding.BodyName : textWriter.Encoding.BodyName); + } + + public void WriterMarkingFlag(string name, string value) { + if (string.IsNullOrEmpty(value)) + throw ALFBTFormatException.GetEmptyValue(false); + if (value.Contains('\n')) + throw ALFBTFormatException.GetException( + "Markup flag value cannot contain line break!", + "O valor de bandeira de marcação não pode conter quebra de linha!" + ); + writingStarted = true; + WriteFlag(name, value); + } + + public void WriteSpacing() + => WriteSpacing(0); + + public void WriteSpacing(int spacings) { + for (int I = 0; I < spacings; I++) { + if (!headerStarted) + writingStarted = false; + WriteFlag(ALFBTCompiler_1_0.n_BreakLine, "\r\n"); + } + } + + public void WriterCommentFlag(string text) { + WriteFlag(ALFBTCompiler_1_0.n_Comment, text); + if (!headerStarted) + writingStarted = false; + } + + public void WriterTextFlag(string name, string value) { + writingStarted = true; + WriteFlag(name, string.IsNullOrEmpty(value) ? "\r\n" : value); + } + + [Obsolete("Use WriteSpacing()")] + public void WriteLineBreak() + => WriteSpacing(); + + public void Dispose() { + if (disposed) + throw new ObjectDisposedException($"The object {typeof(ALFWriter)} has already been discarded"); + disposed = true; + StringBuilder builder = new StringBuilder(); + ALFBTCompiler.Writer(root, builder); + + if (IsStrem()) { + byte[] bytes = encoding.GetBytes(builder.ToString()); + stream.Write(bytes); + } else { + textWriter.Write(builder.ToString()); + } + + root.Dispose(); + stream = (Stream)null; + encoding = (Encoding)null; + textWriter = (TextWriter)null; + } + + private void WriteFlag(string name, string value) { + if (string.IsNullOrEmpty(name)) + throw ALFBTFormatException.GetEmptyValue(); + ALFItem item = new ALFItem(); + item.name = name; + item.text.Append(value); + root.Add(item); + } + + private bool IsStrem() + => stream != (Stream)null; + + public static ALFBTWriter Create(TextWriter writer) { + ALFBTWriter a_writer = new ALFBTWriter(); + a_writer.textWriter = writer; + return a_writer; + } + + public static ALFBTWriter Create(Stream stream, Encoding encoding) { + ALFBTWriter a_writer = new ALFBTWriter(); + a_writer.stream = stream; + a_writer.encoding = encoding; + return a_writer; + } + + public static ALFBTWriter Create(Stream stream) + => Create(stream, Encoding.UTF8); + } +} diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTWriter.cs.meta b/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTWriter.cs.meta new file mode 100644 index 0000000..0cc0bca --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Alfbt/ALFBTWriter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8fba0b37997803841ad27fe815cefd30 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Compiler/Compiler_ALFBT_1_0.cs b/Runtime/Cobilas/IO/Alf/Alfbt/Compiler/Compiler_ALFBT_1_0.cs deleted file mode 100644 index cf4ead2..0000000 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Compiler/Compiler_ALFBT_1_0.cs +++ /dev/null @@ -1,196 +0,0 @@ -using System.Text; -using Cobilas.Collections; -using Cobilas.IO.Alf.Alfbt.Flags; -using Cobilas.IO.Alf.Alfbt.Extension; -using Cobilas.IO.Alf.Alfbt.Components; - -namespace Cobilas.IO.Alf.Alfbt.Compiler { - internal static class Compiler_ALFBT_1_0 { - public const string n_Version = "version"; - public const string n_Type = "type"; - public const string n_Encoding = "encoding"; - private static int CommentFlagCount; - private static int LineBreakCount; - - public static string m_CompilerVersion => "1.0"; - public static string m_CompilerType => ".alfbt"; - - public static FlagBase[] Decompiler(string[] args) { - CommentFlagCount = LineBreakCount = 0; - FlagBase[] res = null; - bool headerSecond = false; - for (int I = 0; I < ArrayManipulation.ArrayLength(args); I++) { - string str_flag = GetFalgType(args[I]); - switch (str_flag) { - case "#*": - ArrayManipulation.Add(CreateCommentFlag(GetFlagContent(args[I])), ref res); - break; - case "#$": - if (headerSecond) throw ALFBTFormatException.GetHeaderSecond(); - ArrayManipulation.Add(Contains(CreateMarkupOrHeaderFlag(GetFlagContent(args[I]), I, AlfbtFlags.HeaderFlag), res), ref res); - break; - case "#!": - headerSecond = true; - ArrayManipulation.Add(Contains(CreateMarkupOrHeaderFlag(GetFlagContent(args[I]), I, AlfbtFlags.MarkingFlag), res), ref res); - break; - case "#?": - headerSecond = true; - ArrayManipulation.Add(Contains(CreateTextFlag(GetFlagContent(args[I]), args, ref I), res), ref res); - break; - default: - if (!string.IsNullOrEmpty(args[I])) - throw ALFBTFormatException.GetInvalidFormattingException(I + 1); - else ArrayManipulation.Add(new FlagBase($"LineBreak_{LineBreakCount++}", "\n", AlfbtFlags.LineBreak), ref res); - break; - } - } - return res; - } - - public static string Compiler(FlagBase[] flags) { - StringBuilder builder = new StringBuilder(); - bool headerSecond = false; - for (int I = 0; I < ArrayManipulation.ArrayLength(flags); I++) { - switch (flags[I].Flags) { - case AlfbtFlags.MarkingFlag: - headerSecond = true; - ValueIsValid(flags[I].Name, true); - ValueIsValid(flags[I].Value, false); - builder.AppendFormat("#! {0}={1}\n", flags[I].Name, flags[I].Value); - break; - case AlfbtFlags.TextFlag: - headerSecond = true; - ValueIsValid(flags[I].Name, true); - builder.AppendFormat("#? {0}=@(\n", flags[I].Name); - if (flags[I].Value.LastIndexOf('\n') == -1) - builder.AppendLine(flags[I].Value); - else builder.Append(flags[I].Value); - builder.AppendLine(")@"); - break; - case AlfbtFlags.HeaderFlag: - if (headerSecond) throw ALFBTFormatException.GetHeaderSecond(); - HeaderFlagIsValid(flags[I]); - builder.AppendFormat("#$ {0}={1}\n", flags[I].Name, flags[I].Value); - break; - case AlfbtFlags.CommentFlag: - builder.AppendFormat("#* {0}\n", flags[I].Value); - break; - case AlfbtFlags.LineBreak: - builder.AppendFormat("{0}", flags[I].Value); - break; - } - } - return builder.ToString(); - } - - private static void GetFlagNameEndValue(string str, out string name, out string value) - => SeparateString(str, '=', out name, out value); - - private static string GetFlagContent(string str) { - string strOut; - SeparateString(str, ' ', out _, out strOut); - return strOut; - } - - private static string GetFalgType(string str) { - string strOut; - SeparateString(str, ' ', out strOut, out _); - return strOut; - } - - private static void SeparateString(string str, char separator, out string str1, out string str2) { - int indexSpace = str.IndexOf(separator); - if (indexSpace == -1) { - str1 = str; - str2 = null; - return; - } - str1 = str.Remove(indexSpace); - str2 = str.Remove(0, indexSpace + 1); - } - - private static FlagBase Contains(FlagBase flag, FlagBase[] flags) { - for (int I = 0; I < ArrayManipulation.ArrayLength(flags); I++) - if (flags[I].Name == flag.Name && flags[I].Flags == flag.Flags) - throw ALFBTFormatException.GetRepeatedFlag(flag.Name, flag.Flags); - return flag; - } - - private static void HeaderFlagIsValid(FlagBase flag) { - if (!(flag.Name == n_Version || flag.Name == n_Type || flag.Name == n_Encoding)) - throw ALFBTFormatException.GetHeaderFlagNameInvalid(flag.Name); - ValueIsValid(flag.Value, false); - } - - private static void ValueIsValid(string value, bool isName) { - if (string.IsNullOrEmpty(value)) throw ALFBTFormatException.GetEmptyValue(isName); - else if (value.Contains(" ")) throw ALFBTFormatException.GetWhiteSpaceException(value); - } - - private static FlagBase CreateTextFlag(string str_arg, string[] args, ref int index) { - int startLine = index; - - StringBuilder builder = new StringBuilder(); - string name; - string value; - GetFlagNameEndValue(str_arg, out name, out value); - - char charError; - if (string.IsNullOrEmpty(name)) - throw ALFBTFormatException.GetFlagNameException(startLine + 1); - if (name.AlfbtIsWhiteSpace()) throw ALFBTFormatException.GetWhiteSpaceException(startLine + 1, true); - if (!name.AlfbtValidName(out charError)) - throw ALFBTFormatException.GetInvalidChar(name, charError, startLine + 1); - if (value.TrimEnd() != "@(") - throw ALFBTFormatException.GetException( - $"(Line: {startLine + 1})Text block opening symbol \"@(\" not found!", - $"(Linha: {startLine + 1})O símbolo de abertura de bloco de texto \"@(\" não foi encontrado!" - ); - - for (int I = index + 1; I < ArrayManipulation.ArrayLength(args); I++) { - if (args[I].TrimEnd() == ")@") { - index = I; - return new FlagBase(name, builder.ToString(), AlfbtFlags.TextFlag); - } - builder.AppendLine(args[I]); - } - - throw ALFBTFormatException.GetException( - $"(Line: {startLine + 1})Text block closing symbol \")@\" not found!", - $"(Linha: {startLine + 1})Símbolo de fechamento de bloco de texto \")@\" não encontrado!" - ); - } - - private static FlagBase CreateMarkupOrHeaderFlag(string str_arg, int index, AlfbtFlags flag) { - string name; - string value; - GetFlagNameEndValue(str_arg, out name, out value); - - char charError; - if (string.IsNullOrEmpty(name)) - throw ALFBTFormatException.GetFlagNameException(index + 1); - if (name.AlfbtIsWhiteSpace()) throw ALFBTFormatException.GetWhiteSpaceException(index + 1, true); - switch (flag) { - case AlfbtFlags.HeaderFlag: - if (!(name == n_Version || name == n_Type || name == n_Encoding)) - throw ALFBTFormatException.GetHeaderFlagNameInvalid(name); - break; - default: - if (!name.AlfbtValidName(out charError)) - throw ALFBTFormatException.GetInvalidChar(name, charError, index + 1); - break; - } - - if (string.IsNullOrEmpty(value)) - throw ALFBTFormatException.GetFlagValueException(index + 1); - if (value.AlfbtIsWhiteSpace()) throw ALFBTFormatException.GetWhiteSpaceException(index + 1, true); - if (!value.AlfbtValidText(out charError)) - throw ALFBTFormatException.GetInvalidChar(value, charError, index + 1); - - return new FlagBase(name, value, flag); - } - - private static FlagBase CreateCommentFlag(string str_arg) - => new FlagBase($"Comment_{CommentFlagCount++}", str_arg, AlfbtFlags.CommentFlag); - } -} diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Components/ALFBTVersionEnum.cs b/Runtime/Cobilas/IO/Alf/Alfbt/Components/ALFBTVersionEnum.cs new file mode 100644 index 0000000..49c6ea1 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Components/ALFBTVersionEnum.cs @@ -0,0 +1,7 @@ +namespace Cobilas.IO.Alf.Alfbt { + public enum ALFBTVersion : byte { + UnknownVersion = 0, + alfbt_1_0 = 1, + alfbt_1_5 = 2 + } +} \ No newline at end of file diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Components/ALFBTVersionEnum.cs.meta b/Runtime/Cobilas/IO/Alf/Alfbt/Components/ALFBTVersionEnum.cs.meta new file mode 100644 index 0000000..f07121d --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Components/ALFBTVersionEnum.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9f2fce4ad8ee33e4a9e29445dd18ca26 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Components/Collections.meta b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Collections.meta new file mode 100644 index 0000000..38835e1 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Collections.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 89b0962ba673621479cb010469fed7d6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Components/Collections/ALFBTFlagReadOnly.cs b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Collections/ALFBTFlagReadOnly.cs new file mode 100644 index 0000000..fc652e6 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Collections/ALFBTFlagReadOnly.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections; +using Cobilas.Collections; +using System.Collections.Generic; +using Cobilas.IO.Alf.Alfbt.Flags; +using Cobilas.IO.Alf.Components.Collections; + +namespace Cobilas.IO.Alf.Alfbt.Components.Collections { + public sealed class ALFBTFlagReadOnly : FlagBase, IReadOnlyArray, IConvertible { + private ALFItemReadOnly readOnly; + + public int Count => readOnly.Count; + + public ALFBTFlagReadOnly this[int index] => new ALFBTFlagReadOnly(readOnly[index]); + object IReadOnlyArray.this[int index] => new ALFBTFlagReadOnly(readOnly[index]); + + public ALFBTFlagReadOnly(ALFItemReadOnly readOnly):base(readOnly.Name, readOnly.ToString(), AlfbtFlags.MarkingFlag) + { + this.readOnly = readOnly; + } + + public IEnumerator GetEnumerator() + => new ALFBTFlagReadOnlyEnumerator(this); + + public TypeCode GetTypeCode() + => ((IConvertible)readOnly).GetTypeCode(); + + public override string ToString() + => readOnly.ToString(); + + IEnumerator IEnumerable.GetEnumerator() + => new ALFBTFlagReadOnlyEnumerator(this); + + bool IConvertible.ToBoolean(IFormatProvider provider) + => ((IConvertible)readOnly).ToBoolean(provider); + + byte IConvertible.ToByte(IFormatProvider provider) + => ((IConvertible)readOnly).ToByte(provider); + + char IConvertible.ToChar(IFormatProvider provider) + => ((IConvertible)readOnly).ToChar(provider); + + DateTime IConvertible.ToDateTime(IFormatProvider provider) + => ((IConvertible)readOnly).ToDateTime(provider); + + decimal IConvertible.ToDecimal(IFormatProvider provider) + => ((IConvertible)readOnly).ToDecimal(provider); + + double IConvertible.ToDouble(IFormatProvider provider) + => ((IConvertible)readOnly).ToDouble(provider); + + short IConvertible.ToInt16(IFormatProvider provider) + => ((IConvertible)readOnly).ToInt16(provider); + + int IConvertible.ToInt32(IFormatProvider provider) + => ((IConvertible)readOnly).ToInt32(provider); + + long IConvertible.ToInt64(IFormatProvider provider) + => ((IConvertible)readOnly).ToInt64(provider); + + sbyte IConvertible.ToSByte(IFormatProvider provider) + => ((IConvertible)readOnly).ToSByte(provider); + + float IConvertible.ToSingle(IFormatProvider provider) + => ((IConvertible)readOnly).ToSingle(provider); + + string IConvertible.ToString(IFormatProvider provider) + => ((IConvertible)readOnly).ToString(provider); + + object IConvertible.ToType(Type conversionType, IFormatProvider provider) + => ((IConvertible)readOnly).ToType(conversionType, provider); + + ushort IConvertible.ToUInt16(IFormatProvider provider) + => ((IConvertible)readOnly).ToUInt16(provider); + + uint IConvertible.ToUInt32(IFormatProvider provider) + => ((IConvertible)readOnly).ToUInt32(provider); + + ulong IConvertible.ToUInt64(IFormatProvider provider) + => ((IConvertible)readOnly).ToUInt64(provider); + } +} diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Components/Collections/ALFBTFlagReadOnly.cs.meta b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Collections/ALFBTFlagReadOnly.cs.meta new file mode 100644 index 0000000..12522db --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Collections/ALFBTFlagReadOnly.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: da7c2cbc68dbf414cba79beb8cededf4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Components/Collections/ALFBTFlagReadOnlyEnumerator.cs b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Collections/ALFBTFlagReadOnlyEnumerator.cs new file mode 100644 index 0000000..d39d143 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Collections/ALFBTFlagReadOnlyEnumerator.cs @@ -0,0 +1,30 @@ +using System.Collections; +using System.Collections.Generic; + +namespace Cobilas.IO.Alf.Alfbt.Components.Collections { + public sealed class ALFBTFlagReadOnlyEnumerator : IEnumerator { + private ALFBTFlagReadOnly item; + private int index; + private object myObject; + + public ALFBTFlagReadOnly Current => (ALFBTFlagReadOnly)myObject; + object IEnumerator.Current => myObject; + + public ALFBTFlagReadOnlyEnumerator(ALFBTFlagReadOnly item) { + this.item = item; + this.index = -1; + } + + public void Dispose() + => this.item = (ALFBTFlagReadOnly)null; + + public bool MoveNext() + { + if (++index >= item.Count) return false; + this.myObject = item[index]; + return true; + } + + public void Reset() => this.index = -1; + } +} diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Components/Collections/ALFBTFlagReadOnlyEnumerator.cs.meta b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Collections/ALFBTFlagReadOnlyEnumerator.cs.meta new file mode 100644 index 0000000..86bcf49 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Collections/ALFBTFlagReadOnlyEnumerator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4d072a24b329ef5498c09c5e105e0f97 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Compiler.meta b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler.meta similarity index 77% rename from Runtime/Cobilas/IO/Alf/Alfbt/Compiler.meta rename to Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler.meta index 8e3debc..7c3e5e8 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Compiler.meta +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 134046d6a9a84054bb50e5bb02abedea +guid: b50a7968653675747a011793e0c1a953 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler/ALFBTCompiler.cs b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler/ALFBTCompiler.cs new file mode 100644 index 0000000..5bd984d --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler/ALFBTCompiler.cs @@ -0,0 +1,48 @@ +using System.Text; +using Cobilas.IO.Alf.Components; + +namespace Cobilas.IO.Alf.Alfbt.Components.Compiler { + internal static class ALFBTCompiler { + + internal static string version => GetALFBTVersion(ALFBTVersion.alfbt_1_5); + + internal static void Read(string[] inputs, ALFWriter writer) { + ALFBTVersion aLFBTVersion = DetectAlfbtVersion(inputs); + + switch (aLFBTVersion) { + case ALFBTVersion.alfbt_1_0: + ALFBTCompiler_1_0.Read(inputs, writer); + break; + case ALFBTVersion.alfbt_1_5: + ALFBTCompiler_1_5.Read(inputs, writer); + break; + default: + break; + } + } + + internal static void Writer(ALFItem root, StringBuilder builder) + => ALFBTCompiler_1_5.Writer(root, builder); + + private static ALFBTVersion DetectAlfbtVersion(string[] lines) { + ALFBTVersion res = ALFBTVersion.UnknownVersion; + foreach (var item in lines) { + if (string.IsNullOrEmpty(item)) continue; + if (ALFBTCompiler_1_0.DetectAlfbtVersion(item, out res)) + return res; + if (ALFBTCompiler_1_5.DetectAlfbtVersion(item, out res)) + return res; + } + + return res; + } + + private static string GetALFBTVersion(ALFBTVersion v) { + switch (v) { + case ALFBTVersion.alfbt_1_0: return "1.0"; + case ALFBTVersion.alfbt_1_5: return "1.5"; + default: return "x.x"; + } + } + } +} \ No newline at end of file diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler/ALFBTCompiler.cs.meta b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler/ALFBTCompiler.cs.meta new file mode 100644 index 0000000..7e82203 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler/ALFBTCompiler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a65ec2d528b819c409f62bdd49af8cbf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler/ALFBTCompiler_1_0.cs b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler/ALFBTCompiler_1_0.cs new file mode 100644 index 0000000..1fde532 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler/ALFBTCompiler_1_0.cs @@ -0,0 +1,165 @@ +using Cobilas.Collections; +using Cobilas.IO.Alf.Alfbt.Extension; + +namespace Cobilas.IO.Alf.Alfbt.Components.Compiler { + internal static class ALFBTCompiler_1_0 { + + public const string n_Type = "type"; + public const string n_Version = "version"; + public const string n_Comment = "comment"; + public const string n_Encoding = "encoding"; + public const string n_BreakLine = "breakline"; + + internal static void Read(string[] inputs, ALFWriter writer) { + bool headerSecond = false; + for (int I = 0; I < ArrayManipulation.ArrayLength(inputs); I++) { + string tagType = GetFalgType(inputs[I]); + switch (tagType) { + case "#$": + if (headerSecond) throw ALFBTFormatException.GetHeaderSecond(); + GetHeader(GetFlagContent(inputs[I]), I, writer); + break; + case "#!": + headerSecond = true; + GetTag(GetFlagContent(inputs[I]), I, writer); + break; + case "#?": + headerSecond = true; + I = GetTagText(inputs, I, writer); + break; + case "#*": + writer.StartElementComment(GetFlagContent(inputs[I])); + break; + default: + if (!string.IsNullOrEmpty(inputs[I])) + throw ALFBTFormatException.GetInvalidFormattingException(I + 1, inputs[I]); + break; + } + } + } + + internal static bool DetectAlfbtVersion(string line, out ALFBTVersion version) { + if (line.IndexOf("#*") >= 0 || + (line.IndexOf("#!") >= 0 && line.IndexOf("=") >= 0) || + (line.IndexOf("#$") >= 0 && line.IndexOf("=") >= 0) || + (line.IndexOf("#?") >= 0 && line.IndexOf("=@(") >= 0)) { + version = ALFBTVersion.alfbt_1_0; + return true; + } + version = ALFBTVersion.UnknownVersion; + return false; + } + + internal static string GetFlagContent(string str) { + string strOut; + SeparateString(str, ' ', out _, out strOut); + return strOut; + } + + internal static string GetFalgType(string str) { + string strOut; + SeparateString(str, ' ', out strOut, out _); + return strOut; + } + + internal static void GetFlagNameEndValue(string str, out string name, out string value) + => SeparateString(str, '=', out name, out value); + + internal static void SeparateString(string str, char separator, out string str1, out string str2) { + int indexSpace = str.IndexOf(separator); + if (indexSpace == -1) { + str1 = str; + str2 = null; + return; + } + str1 = str.Remove(indexSpace); + str2 = str.Remove(0, indexSpace + 1); + } + + private static void GetHeader(string line, int indexline, ALFWriter writer) { + string name; + string value; + + GetFlagNameEndValue(line, out name, out value); + char charError; + + if (string.IsNullOrEmpty(name)) + throw ALFBTFormatException.GetFlagNameException(indexline + 1); + if (name.AlfbtIsWhiteSpace()) throw ALFBTFormatException.GetWhiteSpaceException(indexline + 1, true); + + if (!(name == n_Version || name == n_Type || name == n_Encoding)) + throw ALFBTFormatException.GetHeaderFlagNameInvalid(name); + + if (string.IsNullOrEmpty(value)) + throw ALFBTFormatException.GetFlagValueException(indexline + 1); + if (value.AlfbtIsWhiteSpace()) throw ALFBTFormatException.GetWhiteSpaceException(indexline + 1, true); + if (!value.AlfbtValidText(out charError)) + throw ALFBTFormatException.GetInvalidChar(value, charError, indexline + 1); + + writer.StartElement(name); + writer.WriteText(value); + writer.EndElement(); + } + + private static void GetTag(string line, int indexline, ALFWriter writer) { + string name; + string value; + + GetFlagNameEndValue(line, out name, out value); + char charError; + + if (string.IsNullOrEmpty(name)) + throw ALFBTFormatException.GetFlagNameException(indexline + 1); + if (name.AlfbtIsWhiteSpace()) throw ALFBTFormatException.GetWhiteSpaceException(indexline + 1, true); + + if (!name.AlfbtValidName(out charError)) + throw ALFBTFormatException.GetInvalidChar(name, charError, indexline + 1); + + if (string.IsNullOrEmpty(value)) + throw ALFBTFormatException.GetFlagValueException(indexline + 1); + if (value.AlfbtIsWhiteSpace()) throw ALFBTFormatException.GetWhiteSpaceException(indexline + 1, true); + if (!value.AlfbtValidText(out charError)) + throw ALFBTFormatException.GetInvalidChar(value, charError, indexline + 1); + + writer.StartElement(name); + writer.WriteText(value); + writer.EndElement(); + } + + private static int GetTagText(string[] lines, int indexline, ALFWriter writer) { + string name; + string value; + + GetFlagNameEndValue(lines[indexline], out name, out value); + name = GetFlagContent(name); + + char charError; + if (string.IsNullOrEmpty(name)) + throw ALFBTFormatException.GetFlagNameException(indexline + 1); + if (name.AlfbtIsWhiteSpace()) throw ALFBTFormatException.GetWhiteSpaceException(indexline + 1, true); + if (!name.AlfbtValidName(out charError)) + throw ALFBTFormatException.GetInvalidChar(name, charError, indexline + 1); + + if (value.Trim() != "@(") + throw ALFBTFormatException.GetException( + $"(Line: {indexline + 1})Text block opening symbol \"@(\" not found!", + $"(Linha: {indexline + 1})O símbolo de abertura de bloco de texto \"@(\" não foi encontrado!" + ); + + writer.StartElement(name); + + for (int I = indexline + 1; I < ArrayManipulation.ArrayLength(lines); I++) { + if (lines[I].Trim() == ")@") { + writer.EndElement(); + return I; + } + writer.WriteText(lines[I]); + } + + throw ALFBTFormatException.GetException( + $"(Line: {indexline + 1})Text block closing symbol \")@\" not found!", + $"(Linha: {indexline + 1})Símbolo de fechamento de bloco de texto \")@\" não encontrado!" + ); + } + } +} diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler/ALFBTCompiler_1_0.cs.meta b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler/ALFBTCompiler_1_0.cs.meta new file mode 100644 index 0000000..cc74313 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler/ALFBTCompiler_1_0.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 860e6d4c6d7635c4a974b0e9e622529d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler/ALFBTCompiler_1_5.cs b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler/ALFBTCompiler_1_5.cs new file mode 100644 index 0000000..fbc543c --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler/ALFBTCompiler_1_5.cs @@ -0,0 +1,131 @@ +using System.Text; +using Cobilas.Collections; +using Cobilas.IO.Alf.Components; +using Cobilas.IO.Alf.Alfbt.Extension; + +namespace Cobilas.IO.Alf.Alfbt.Components.Compiler { + internal static class ALFBTCompiler_1_5 { + + internal static void Read(string[] lines, ALFWriter writer) { + for (int I = 0; I < ArrayManipulation.ArrayLength(lines); I++) { + string tagtype = ALFBTCompiler_1_0.GetFalgType(lines[I]); + switch (tagtype) { + case "#!": + if (IsSingleLine(lines[I])) { + GetSingleTag(ALFBTCompiler_1_0.GetFlagContent(lines[I]), I, writer); + break; + } + I = GetMultLineTag(lines, I, writer); + break; + case "#>": + writer.StartElementComment(ALFBTCompiler_1_0.GetFlagContent(lines[I])); + break; + default: + if (!string.IsNullOrEmpty(lines[I])) + throw ALFBTFormatException.GetInvalidFormattingException(I + 1, lines[I]); + break; + } + } + } + + internal static void Writer(ALFItem root, StringBuilder builder) { + for (int I = 0; I < ArrayManipulation.ArrayLength(root.itens); I++) { + ALFItem temp = root.itens[I]; + string txt = temp.text.ToString(); + + switch (temp.name) { + case ALFBTCompiler_1_0.n_Comment: + builder.AppendFormat("#> {0}\r\n", txt); + break; + case ALFBTCompiler_1_0.n_BreakLine: + builder.Append("\r\n"); + break; + default: + builder.AppendFormat("#! {0}:/*", temp.name); + if (txt.Contains("\n")) { + builder.Append("\r\n"); + builder.Append(txt); + builder.Append("\r\n*/\r\n"); + } else { + builder.AppendFormat("{0}*/\r\n", txt); + } + break; + } + } + } + + internal static bool DetectAlfbtVersion(string line, out ALFBTVersion version) { + if (line.IndexOf("#>") >= 0 || + (line.IndexOf("#!") >= 0 && line.IndexOf(":/*") >= 0)) { + version = ALFBTVersion.alfbt_1_5; + return true; + } + version = ALFBTVersion.UnknownVersion; + return false; + } + + private static void GetSingleTag(string line, int indexline, ALFWriter writer) { + string name; + string value; + string value2; + GetFlagNameEndValue(line, out name, out value); + + if (string.IsNullOrEmpty(name)) + throw ALFBTFormatException.GetFlagNameException(indexline + 1); + if (name.AlfbtIsWhiteSpace()) throw ALFBTFormatException.GetWhiteSpaceException(indexline + 1, true); + + if (value.IndexOf("/*") < 0) + throw ALFBTFormatException.GetFlagValueException(indexline + 1); + + if (value.LastIndexOf("*/") < 0) + throw ALFBTFormatException.GetFlagValueException(indexline + 1); + + value2 = value.Remove(value.IndexOf("/*")); + if (!string.IsNullOrEmpty(value2)) + throw ALFBTFormatException.GetFlagValueException(indexline + 1); + + value2 = value.Remove(0, value.LastIndexOf("*/") + 2); + if (!string.IsNullOrEmpty(value2)) + throw ALFBTFormatException.GetFlagValueException(indexline + 1); + + writer.StartElement(name); + writer.WriteText(value.Trim('/').Trim('*').Trim()); + writer.EndElement(); + } + + private static int GetMultLineTag(string[] lines, int indexline, ALFWriter writer) { + string line = ALFBTCompiler_1_0.GetFlagContent(lines[indexline]); + string name; + string value; + GetFlagNameEndValue(line, out name, out value); + + if (string.IsNullOrEmpty(name)) + throw ALFBTFormatException.GetFlagNameException(indexline + 1); + if (name.AlfbtIsWhiteSpace()) throw ALFBTFormatException.GetWhiteSpaceException(indexline + 1, true); + + writer.StartElement(name); + + if (value.Trim() != "/*") throw ALFBTFormatException.GetFlagValueException(indexline + 1); + for (int I = indexline + 1; I < ArrayManipulation.ArrayLength(lines); I++) { + line = lines[I]; + if (line.Trim() == "*/") { + writer.EndElement(); + return I; + } else if (I != indexline + 1) + writer.WriteText("\r\n"); + writer.WriteText(line); + } + + throw ALFBTFormatException.GetException( + $"(Line: {indexline + 1})Text block closing symbol \"*/\" not found!", + $"(Linha: {indexline + 1})Símbolo de fechamento de bloco de texto \"*/\" não encontrado!" + ); + } + + private static bool IsSingleLine(string line) + => line.IndexOf(":/*") >= 0 && line.LastIndexOf("*/") >= 0; + + private static void GetFlagNameEndValue(string stg, out string name, out string value) + => ALFBTCompiler_1_0.SeparateString(stg, ':', out name, out value); + } +} \ No newline at end of file diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler/ALFBTCompiler_1_5.cs.meta b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler/ALFBTCompiler_1_5.cs.meta new file mode 100644 index 0000000..d694e5a --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Compiler/ALFBTCompiler_1_5.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c329d1c21a3260445bccbf7733658184 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Components/Enums.cs b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Enums.cs index 354328f..b4f535d 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Components/Enums.cs +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Components/Enums.cs @@ -1,5 +1,4 @@ namespace Cobilas.IO.Alf.Alfbt.Components { -#pragma warning disable CS1591 public enum AlfbtFlags { MarkingFlag = 0, TextFlag = 1, @@ -7,5 +6,4 @@ public enum AlfbtFlags { CommentFlag = 3, LineBreak = 4 } -#pragma warning restore CS1591 } diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Extension/StringExtension.cs b/Runtime/Cobilas/IO/Alf/Alfbt/Extension/StringExtension.cs index 59944e2..dc337b9 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Extension/StringExtension.cs +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Extension/StringExtension.cs @@ -23,6 +23,12 @@ public static bool AlfbtIsWhiteSpace(this string str) return res; } + public static string TabPadRight(this string stg, int tabs) + => string.Format("{0}{1}", stg, string.Empty.PadRight(tabs, '\t')); + + public static string TabPadLeft(this string stg, int tabs) + => string.Format("{0}{1}", string.Empty.PadLeft(tabs, '\t'), stg); + public static bool AlfbtValidName(this string str, out char errorChar) { char OutErrorChar = '\0'; bool res = str.All((c) => { diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Flags/CommentFlag.cs b/Runtime/Cobilas/IO/Alf/Alfbt/Flags/CommentFlag.cs index be5fc17..2401071 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Flags/CommentFlag.cs +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Flags/CommentFlag.cs @@ -7,10 +7,8 @@ namespace Cobilas.IO.Alf.Alfbt.Flags { public struct CommentFlag : ICloneable { private FlagBase[] flags; -#pragma warning disable CS1591 public int FlagCount => ArrayManipulation.ArrayLength(flags); public long l_FlagCount => ArrayManipulation.EmpytArray(flags) ? 0 : flags.LongLength; -#pragma warning restore CS1591 internal void Add(FlagBase flag) => ArrayManipulation.Add(flag, ref flags); @@ -23,7 +21,6 @@ public string GetComment(int index) public string GetComment(long index) => flags[index].Value; -#pragma warning disable CS1591 public override string ToString() { StringBuilder builder = new StringBuilder(); for (int I = 0; I < FlagCount; I++) @@ -36,6 +33,5 @@ public string GetComment(long index) res.flags = flags is null ? (FlagBase[])null : (FlagBase[])flags.Clone(); return res; } -#pragma warning restore CS1591 } } diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Flags/FlagBase.cs b/Runtime/Cobilas/IO/Alf/Alfbt/Flags/FlagBase.cs index 422f133..d09a94a 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Flags/FlagBase.cs +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Flags/FlagBase.cs @@ -7,14 +7,11 @@ public class FlagBase : ICloneable { private string name; private string value; private AlfbtFlags flags; -#pragma warning disable CS1591 public string Name => name; public string Value => value; -#pragma warning restore CS1591 /// O tipo da bandeira. public AlfbtFlags Flags => flags; -#pragma warning disable CS1591 public FlagBase(string name, string value, AlfbtFlags flags) { this.name = name; this.value = value; @@ -27,6 +24,5 @@ public object Clone() value is null ? string.Empty : (string)value.Clone(), flags ); -#pragma warning restore CS1591 } } diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Flags/HeaderFlag.cs b/Runtime/Cobilas/IO/Alf/Alfbt/Flags/HeaderFlag.cs index 40b80ec..c67ee3d 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Flags/HeaderFlag.cs +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Flags/HeaderFlag.cs @@ -24,7 +24,6 @@ public struct HeaderFlag : ICloneable { private string GetValue(byte index) => flags[index] == null ? "vl_null" : flags[index].Value; -#pragma warning disable CS1591 public override string ToString() { StringBuilder builder = new StringBuilder(); if (flags[0] != null) @@ -41,6 +40,5 @@ private string GetValue(byte index) res.flags = flags is null ? (FlagBase[])null : (FlagBase[])flags.Clone(); return res; } -#pragma warning restore CS1591 } } diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Flags/MarkingFlag.cs b/Runtime/Cobilas/IO/Alf/Alfbt/Flags/MarkingFlag.cs index fbdf3cd..33e8d68 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Flags/MarkingFlag.cs +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Flags/MarkingFlag.cs @@ -6,10 +6,8 @@ public struct MarkingFlag : ICloneable { private string name; private string value; -#pragma warning disable CS1591 public string Name => name; public string Value => value; -#pragma warning restore CS1591 internal MarkingFlag(string name, string value) { this.name = name; @@ -19,7 +17,6 @@ public struct MarkingFlag : ICloneable { internal MarkingFlag(FlagBase flag) : this(flag.Name, flag.Value) { } -#pragma warning disable CS1591 public override string ToString() { return $"Name:{name}\n" + $"Value:{value}\n"; @@ -30,6 +27,5 @@ public object Clone() name is null ? string.Empty : (string)name.Clone(), value is null ? string.Empty : (string)value.Clone() ); -#pragma warning restore CS1591 } } diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Flags/TextFlag.cs b/Runtime/Cobilas/IO/Alf/Alfbt/Flags/TextFlag.cs index 07afe31..9e7f64c 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Flags/TextFlag.cs +++ b/Runtime/Cobilas/IO/Alf/Alfbt/Flags/TextFlag.cs @@ -8,10 +8,8 @@ public struct TextFlag : ICloneable { private string name; private string value; -#pragma warning disable CS1591 public string Name => name; public string Value => value; -#pragma warning restore CS1591 internal TextFlag(string name, string value) { this.name = name; @@ -50,7 +48,6 @@ private string I_Format(IFormatProvider provider, params object[] args) private string I_Format(params object[] args) => I_Format(CultureInfo.CurrentCulture, args); -#pragma warning disable CS1591 public override string ToString() { StringBuilder builder = new StringBuilder(); builder.AppendLine($"Name:{name} {{"); @@ -64,6 +61,5 @@ public object Clone() name is null ? string.Empty : (string)name.Clone(), value is null ? string.Empty : (string)value.Clone() ); -#pragma warning restore CS1591 } } diff --git a/Runtime/Cobilas/IO/Alf/Components.meta b/Runtime/Cobilas/IO/Alf/Components.meta new file mode 100644 index 0000000..0cb5928 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Components.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 62f832af97bc32c4daadb05163e5cd97 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/Components/ALFCompiler.cs b/Runtime/Cobilas/IO/Alf/Components/ALFCompiler.cs new file mode 100644 index 0000000..9bf9969 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Components/ALFCompiler.cs @@ -0,0 +1,195 @@ +using System; +using System.Text; +using Cobilas.Collections; + +namespace Cobilas.IO.Alf.Components { + internal static class ALFCompiler { + internal static readonly string version = "1.0"; + + internal static void Read(ALFItem root, string[] lines) { + bool OpenTextElement = false; + for (int I = 0; I < ArrayManipulation.ArrayLength(lines); I++) { + switch (GetALFNodeType(lines[I], I + 1, out Exception exception)) { + case ALFNodeType.OpenElement: + root.Add(root = new ALFItem()); + root.name = GetElementName(lines[I]); + break; + case ALFNodeType.ClosedElement: + root = root.parent; + break; + case ALFNodeType.OpenTextElement: + OpenTextElement = true; + goto case ALFNodeType.OpenElement; + case ALFNodeType.ClosedTextElement: + OpenTextElement = false; + break; + case ALFNodeType.TextElement: + if (OpenTextElement) { + root.text.Append(GetElementText(lines[I], false)); + root.text.Append("\r\n"); + } + else throw ALFERROR.TextElementERROR(I + 1); + break; + case ALFNodeType.SingleLineElement: + root.Add(root = new ALFItem()); + root.name = GetElementName(lines[I]); + root.text.Append(GetElementText(lines[I])); + root = root.parent; + break; + case ALFNodeType.SingleLineComment: + root.Add(root = new ALFItem()); + root.name = "comment"; + root.text.Append(lines[I].Remove(0, lines[I].IndexOf(' ') + 1)); + root = root.parent; + break; + case ALFNodeType.UnknownElement: + if (exception == (Exception)null) + throw ALFERROR.UnidentifiedElement(I + 1, lines[I]); + throw exception; + } + } + } + + internal static void Writer(ALFItem root, int tab, StringBuilder builder) { + string txt = root.text.ToString(); + + if (IsMultLine(txt) || !ArrayManipulation.EmpytArray(root.itens)) { + builder.AppendFormat("{0}[{1}", GetTab(tab), root.name); + if (!string.IsNullOrEmpty(txt)) { + builder.Append(":\r\n"); + txt = txt.Replace("\n", string.Format("\n{0}:", GetTab(tab + 1))); + + builder.AppendFormat("{0}:{1}\r\n", GetTab(tab + 1), txt); + builder.AppendFormat("{0}:>\r\n", GetTab(tab + 1)); + } else builder.Append(":>\r\n"); + + for (int I = 0; I < ArrayManipulation.ArrayLength(root.itens); I++) + Writer(root.itens[I], tab + 1, builder); + + builder.AppendFormat("{0}<]\r\n", GetTab(tab + 1)); + } else { + switch (root.name) { + case "breakline": + builder.AppendFormat("{0}{1}", GetTab(tab), txt); + break; + case "comment": + builder.AppendFormat("{0}[* {1}\r\n", GetTab(tab), txt); + break; + default: + builder.AppendFormat("{0}[{1}:{2}]\r\n", GetTab(tab), root.name, txt); + break; + } + } + } + + private static bool IsMultLine(string txt) + => !string.IsNullOrEmpty(txt) && txt.Contains("\n"); + + private static string GetTab(int tabs) + => string.Empty.PadRight(tabs, '\t'); + + private static string GetElementName(string line) { + line = line.Trim().Trim('[', ']'); + return line.Remove(line.IndexOf(':')); + } + + private static string GetElementText(string line, bool isSingleLineElement) { + if (isSingleLineElement) + line = line.TrimStart().Trim('[', ']'); + return line.Remove(0, line.IndexOf(':') + 1); + } + + private static string GetElementText(string line) + => GetElementText(line, true); + + private static ALFNodeType GetALFNodeType(string line, int iline, out Exception exception) { + string txt404; + exception = (Exception)null; + if (string.IsNullOrEmpty(line)) return ALFNodeType.EmptyElement; + line = line.Trim(); + + if (line.IndexOf("[*") >= 0) { + if (!string.IsNullOrEmpty(line.Remove(line.IndexOf('[')))) { + exception = ALFERROR.CommentERROR(iline); + return ALFNodeType.UnknownElement; + } + + return ALFNodeType.SingleLineComment; + } + + if (line.IndexOf('[') >= 0 && line.LastIndexOf(']') >= 0) { + if (!string.IsNullOrEmpty(txt404 = line.Remove(line.IndexOf('[')))) { + exception = ALFERROR.UnidentifiedElement(iline, txt404); + return ALFNodeType.UnknownElement; + } + + if (!string.IsNullOrEmpty(txt404 = line.Remove(0, line.LastIndexOf(']') + 1))) { + exception = ALFERROR.UnidentifiedElement(iline, txt404); + return ALFNodeType.UnknownElement; + } + + if (line.IndexOf(':') < 0) { + exception = ALFERROR.UnidentifiedElement(iline, line); + return ALFNodeType.UnknownElement; + } + return ALFNodeType.SingleLineElement; + } + + if (line.IndexOf('[') >= 0 && line.LastIndexOf(":>") >= 0) { + + if (!string.IsNullOrEmpty(txt404 = line.Remove(line.IndexOf('[')))) { + exception = ALFERROR.UnidentifiedElement(iline, txt404); + return ALFNodeType.UnknownElement; + } + + if ((txt404 = line.Remove(0, line.IndexOf(':'))) != ":>") { + exception = ALFERROR.UnidentifiedElement(iline, txt404); + return ALFNodeType.UnknownElement; + } + + return ALFNodeType.OpenElement; + } + + if (line.IndexOf('[') >= 0 && line.LastIndexOf(':') >= 0) { + + if (!string.IsNullOrEmpty(txt404 = line.Remove(line.IndexOf('[')))) { + exception = ALFERROR.UnidentifiedElement(iline, txt404); + return ALFNodeType.UnknownElement; + } + + if ((txt404 = line.Remove(0, line.IndexOf(':'))) != ":") { + exception = ALFERROR.UnidentifiedElement(iline, txt404); + return ALFNodeType.UnknownElement; + } + + return ALFNodeType.OpenTextElement; + } + + if (line.IndexOf(":>") >= 0) { + if (line != ":>") { + exception = ALFERROR.UnidentifiedElement(iline, line); + return ALFNodeType.UnknownElement; + } + return ALFNodeType.ClosedTextElement; + } + + if (line.IndexOf(':') >= 0) { + if (!string.IsNullOrEmpty(txt404 = line.Remove(line.IndexOf(':')))) { + exception = ALFERROR.PrintLineError("({0})text delimiter must not have prefix", iline, txt404); + return ALFNodeType.UnknownElement; + } + return ALFNodeType.TextElement; + } + + if (line.IndexOf("<]") >= 0) { + if (line != "<]") { + exception = ALFERROR.UnidentifiedElement(iline, line); + return ALFNodeType.UnknownElement; + } + return ALFNodeType.ClosedElement; + } + + return ALFNodeType.UnknownElement; + } + } +} diff --git a/Runtime/Cobilas/IO/Alf/Components/ALFCompiler.cs.meta b/Runtime/Cobilas/IO/Alf/Components/ALFCompiler.cs.meta new file mode 100644 index 0000000..2a7c49c --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Components/ALFCompiler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: de4d34d03fdd2104693379435703ab81 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/Components/ALFItem.cs b/Runtime/Cobilas/IO/Alf/Components/ALFItem.cs new file mode 100644 index 0000000..b291d87 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Components/ALFItem.cs @@ -0,0 +1,61 @@ +using System; +using System.Text; +using System.Collections; +using Cobilas.Collections; +using System.Collections.Generic; + +namespace Cobilas.IO.Alf.Components { + public sealed class ALFItem : IDisposable, IEnumerable { + public ALFItem parent; + public string name; + public bool isRoot; + public StringBuilder text; + public ALFItem[] itens; + + public ALFItem() + { + text = new StringBuilder(); + } + + public void Add(ALFItem item) { + item.parent = this; + ArrayManipulation.Add(item, ref itens); + } + + public override string ToString() { + StringBuilder builder = new StringBuilder(); + ToString(builder, 0); + return builder.ToString(); + } + + private void ToString(StringBuilder builder, int tab) { + builder.AppendFormat("{0}-> {1}{2}\n", string.Empty.PadRight(tab), isRoot ? "Root:" : string.Empty, name); + string txt = text.ToString(); + if (!string.IsNullOrEmpty(txt)) { + txt = txt.Replace("\n", string.Format("\n{0}", string.Empty.PadRight(tab + 1))); + builder.AppendFormat("{0}-->my text:\n", string.Empty.PadRight(tab + 1)); + builder.AppendFormat("{0}{1}\n", string.Empty.PadRight(tab + 1), txt); + builder.AppendFormat("{0}-- {1}{2}\n", string.Empty.PadRight(tab), isRoot ? "Root:" : string.Empty, name); + } + + public void Dispose() { + this.isRoot = default; + this.parent = (ALFItem)null; + this.name = (string)null; + this.text = (StringBuilder)null; + for (int I = 0; I < ArrayManipulation.ArrayLength(itens); I++) + itens[I].Dispose(); + ArrayManipulation.ClearArraySafe(ref itens); + } + + public IEnumerator GetEnumerator() + => new ArrayToIEnumerator(itens); + + IEnumerator IEnumerable.GetEnumerator() + => new ArrayToIEnumerator(itens); + } +} diff --git a/Runtime/Cobilas/IO/Alf/Components/ALFItem.cs.meta b/Runtime/Cobilas/IO/Alf/Components/ALFItem.cs.meta new file mode 100644 index 0000000..5bd455e --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Components/ALFItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5d9340763bc4da644a8fb0efdd1f097d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/Components/ALFNodeType.cs b/Runtime/Cobilas/IO/Alf/Components/ALFNodeType.cs new file mode 100644 index 0000000..d3f8c4b --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Components/ALFNodeType.cs @@ -0,0 +1,13 @@ +namespace Cobilas.IO.Alf.Components { + public enum ALFNodeType : byte { + UnknownElement = 0, + EmptyElement = 1, + OpenElement = 2, + ClosedElement = 3, + OpenTextElement = 4, + ClosedTextElement = 5, + TextElement = 6, + SingleLineElement = 7, + SingleLineComment = 8 + } +} diff --git a/Runtime/Cobilas/IO/Alf/Components/ALFNodeType.cs.meta b/Runtime/Cobilas/IO/Alf/Components/ALFNodeType.cs.meta new file mode 100644 index 0000000..04bfd61 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Components/ALFNodeType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3836ef9af120c464c8361e7a3619a298 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/Components/Collections.meta b/Runtime/Cobilas/IO/Alf/Components/Collections.meta new file mode 100644 index 0000000..88f4a41 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Components/Collections.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ac56c8fb145600149add4c5706a01a6b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/Components/Collections/ALFItemReadOnly.cs b/Runtime/Cobilas/IO/Alf/Components/Collections/ALFItemReadOnly.cs new file mode 100644 index 0000000..dcbb233 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Components/Collections/ALFItemReadOnly.cs @@ -0,0 +1,97 @@ +using System; +using System.Collections; +using Cobilas.Collections; +using System.Collections.Generic; + +namespace Cobilas.IO.Alf.Components.Collections { + public sealed class ALFItemReadOnly : IReadOnlyArray, IConvertible { + private readonly ALFItem item; + private ALFItemReadOnly parent; + + public string Name => item.name; + public bool IsRoot => item.isRoot; + public ALFItemReadOnly Parent => parent; + public int Count => ArrayManipulation.ArrayLength(item.itens); + + public ALFItemReadOnly this[string name] => this[IndexOf(name)]; + public ALFItemReadOnly this[int index] => GetALFItemReadOnly(item.itens[index]); + + object IReadOnlyArray.this[int index] => GetALFItemReadOnly(item.itens[index]); + + public ALFItemReadOnly(ALFItem item) + => this.item = item; + + private ALFItemReadOnly GetALFItemReadOnly(ALFItem item) { + ALFItemReadOnly readOnly = new ALFItemReadOnly(item); + readOnly.parent = this; + return readOnly; + } + + public int IndexOf(string name) { + for (int I = 0; I < Count; I++) + if (item.itens[I].name == name) + return I; + return -1; + } + + public TypeCode GetTypeCode() + => TypeCode.String; + + bool IConvertible.ToBoolean(IFormatProvider provider) + => (ToString() as IConvertible).ToBoolean(provider); + + char IConvertible.ToChar(IFormatProvider provider) + => (ToString() as IConvertible).ToChar(provider); + + sbyte IConvertible.ToSByte(IFormatProvider provider) + => (ToString() as IConvertible).ToSByte(provider); + + byte IConvertible.ToByte(IFormatProvider provider) + => (ToString() as IConvertible).ToByte(provider); + + short IConvertible.ToInt16(IFormatProvider provider) + => (ToString() as IConvertible).ToByte(provider); + + ushort IConvertible.ToUInt16(IFormatProvider provider) + => (ToString() as IConvertible).ToUInt16(provider); + + int IConvertible.ToInt32(IFormatProvider provider) + => (ToString() as IConvertible).ToInt32(provider); + + uint IConvertible.ToUInt32(IFormatProvider provider) + => (ToString() as IConvertible).ToUInt32(provider); + + long IConvertible.ToInt64(IFormatProvider provider) + => (ToString() as IConvertible).ToInt64(provider); + + ulong IConvertible.ToUInt64(IFormatProvider provider) + => (ToString() as IConvertible).ToUInt64(provider); + + public float ToSingle(IFormatProvider provider) + => (ToString() as IConvertible).ToSingle(provider); + + double IConvertible.ToDouble(IFormatProvider provider) + => (ToString() as IConvertible).ToDouble(provider); + + decimal IConvertible.ToDecimal(IFormatProvider provider) + => (ToString() as IConvertible).ToDecimal(provider); + + DateTime IConvertible.ToDateTime(IFormatProvider provider) + => (ToString() as IConvertible).ToDateTime(provider); + + object IConvertible.ToType(Type conversionType, IFormatProvider provider) + => (ToString() as IConvertible).ToType(conversionType, provider); + + IEnumerator IEnumerable.GetEnumerator() + => new ALFItemReadOnlyEnumerator(this); + + public IEnumerator GetEnumerator() + => new ALFItemReadOnlyEnumerator(this); + + public override string ToString() + => item.text.ToString(); + + public string ToString(IFormatProvider provider) + => ToString().ToString(provider); + } +} diff --git a/Runtime/Cobilas/IO/Alf/Components/Collections/ALFItemReadOnly.cs.meta b/Runtime/Cobilas/IO/Alf/Components/Collections/ALFItemReadOnly.cs.meta new file mode 100644 index 0000000..10a91eb --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Components/Collections/ALFItemReadOnly.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 79ba0bed3eeda084dab50980e74eb87f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/Components/Collections/ALFItemReadOnlyToIEnumerator.cs b/Runtime/Cobilas/IO/Alf/Components/Collections/ALFItemReadOnlyToIEnumerator.cs new file mode 100644 index 0000000..971064e --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Components/Collections/ALFItemReadOnlyToIEnumerator.cs @@ -0,0 +1,30 @@ +using System.Collections; +using System.Collections.Generic; + +namespace Cobilas.IO.Alf.Components.Collections { + public sealed class ALFItemReadOnlyEnumerator : IEnumerator { + private ALFItemReadOnly item; + private int index; + private object myObject; + + public ALFItemReadOnly Current => (ALFItemReadOnly)myObject; + object IEnumerator.Current => myObject; + + public ALFItemReadOnlyEnumerator(ALFItemReadOnly item) { + this.item = item; + this.index = -1; + } + + public void Dispose() + => this.item = (ALFItemReadOnly)null; + + public bool MoveNext() + { + if (++index >= item.Count) return false; + this.myObject = item[index]; + return true; + } + + public void Reset() => this.index = -1; + } +} diff --git a/Runtime/Cobilas/IO/Alf/Components/Collections/ALFItemReadOnlyToIEnumerator.cs.meta b/Runtime/Cobilas/IO/Alf/Components/Collections/ALFItemReadOnlyToIEnumerator.cs.meta new file mode 100644 index 0000000..d0d85bc --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Components/Collections/ALFItemReadOnlyToIEnumerator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 514741f4c4d895748bf6ae79cacc25ee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Management.meta b/Runtime/Cobilas/IO/Alf/Management.meta similarity index 77% rename from Runtime/Cobilas/IO/Alf/Alfbt/Management.meta rename to Runtime/Cobilas/IO/Alf/Management.meta index 00b3b67..7be7b9a 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Management.meta +++ b/Runtime/Cobilas/IO/Alf/Management.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d472c5fd536b5324e9b354916bcea9b1 +guid: 498adc2ca8e2a954aa0032944700c903 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/Cobilas/IO/Alf/Management/Alfbt.meta b/Runtime/Cobilas/IO/Alf/Management/Alfbt.meta new file mode 100644 index 0000000..fe36560 --- /dev/null +++ b/Runtime/Cobilas/IO/Alf/Management/Alfbt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bcfd5022ea3858f4f848b4e51986dbc1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Management/LanguageBlock.cs b/Runtime/Cobilas/IO/Alf/Management/Alfbt/LanguageBlock.cs similarity index 96% rename from Runtime/Cobilas/IO/Alf/Alfbt/Management/LanguageBlock.cs rename to Runtime/Cobilas/IO/Alf/Management/Alfbt/LanguageBlock.cs index e160297..a27b62c 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Management/LanguageBlock.cs +++ b/Runtime/Cobilas/IO/Alf/Management/Alfbt/LanguageBlock.cs @@ -3,8 +3,6 @@ using Cobilas.Collections; namespace Cobilas.IO.Alf.Management.Alfbt { -#pragma warning disable CS1591 -#pragma warning disable CS1573 /// Representa um bloco de texto. public struct LanguageBlock : IDisposable { private string lang_gui; diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Management/LanguageBlock.cs.meta b/Runtime/Cobilas/IO/Alf/Management/Alfbt/LanguageBlock.cs.meta similarity index 83% rename from Runtime/Cobilas/IO/Alf/Alfbt/Management/LanguageBlock.cs.meta rename to Runtime/Cobilas/IO/Alf/Management/Alfbt/LanguageBlock.cs.meta index e4f00f7..e700bb3 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Management/LanguageBlock.cs.meta +++ b/Runtime/Cobilas/IO/Alf/Management/Alfbt/LanguageBlock.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 003b7b757be6c2841885fae02a7731b5 +guid: 1827525c5a8b26743bb439888fa510c9 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Management/LanguageInfo.cs b/Runtime/Cobilas/IO/Alf/Management/Alfbt/LanguageInfo.cs similarity index 91% rename from Runtime/Cobilas/IO/Alf/Alfbt/Management/LanguageInfo.cs rename to Runtime/Cobilas/IO/Alf/Management/Alfbt/LanguageInfo.cs index 573e6e2..3fa4de1 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Management/LanguageInfo.cs +++ b/Runtime/Cobilas/IO/Alf/Management/Alfbt/LanguageInfo.cs @@ -1,10 +1,9 @@ using System; namespace Cobilas.IO.Alf.Management.Alfbt { -#pragma warning disable CS1591 public struct LanguageInfo : IEquatable, ICloneable { - private string lang; - private string display_lang; + private readonly string lang; + private readonly string display_lang; public string Language => lang; public string Display_Name => display_lang; @@ -44,5 +43,4 @@ private object CloneSafe(ICloneable cloneable) public static bool operator !=(LanguageInfo A, LanguageInfo B) => !(A == B); } -#pragma warning restore CS1591 } diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Management/LanguageInfo.cs.meta b/Runtime/Cobilas/IO/Alf/Management/Alfbt/LanguageInfo.cs.meta similarity index 83% rename from Runtime/Cobilas/IO/Alf/Alfbt/Management/LanguageInfo.cs.meta rename to Runtime/Cobilas/IO/Alf/Management/Alfbt/LanguageInfo.cs.meta index 0f7ae92..7eb4d97 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Management/LanguageInfo.cs.meta +++ b/Runtime/Cobilas/IO/Alf/Management/Alfbt/LanguageInfo.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1ca603a1cbdacdd41b00874b7c8f7ce7 +guid: 97e8a09a4fea29e408ecc356d70e6216 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Management/LanguageText.cs b/Runtime/Cobilas/IO/Alf/Management/Alfbt/LanguageText.cs similarity index 98% rename from Runtime/Cobilas/IO/Alf/Alfbt/Management/LanguageText.cs rename to Runtime/Cobilas/IO/Alf/Management/Alfbt/LanguageText.cs index 5a5605a..dc5a183 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Management/LanguageText.cs +++ b/Runtime/Cobilas/IO/Alf/Management/Alfbt/LanguageText.cs @@ -3,7 +3,6 @@ using System.Globalization; namespace Cobilas.IO.Alf.Management.Alfbt { -#pragma warning disable CS1591 /// Representa um container de texto. public struct LanguageText : IEquatable, IDisposable { private string name; diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Management/LanguageText.cs.meta b/Runtime/Cobilas/IO/Alf/Management/Alfbt/LanguageText.cs.meta similarity index 83% rename from Runtime/Cobilas/IO/Alf/Alfbt/Management/LanguageText.cs.meta rename to Runtime/Cobilas/IO/Alf/Management/Alfbt/LanguageText.cs.meta index 5d680fc..d16a0e8 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Management/LanguageText.cs.meta +++ b/Runtime/Cobilas/IO/Alf/Management/Alfbt/LanguageText.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a4e3efd7fd68eed4089e05677ca834c4 +guid: 6b0a4a21ba5091349bab318d86fd2d72 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Management/TranslationCollection.cs b/Runtime/Cobilas/IO/Alf/Management/Alfbt/TranslationCollection.cs similarity index 97% rename from Runtime/Cobilas/IO/Alf/Alfbt/Management/TranslationCollection.cs rename to Runtime/Cobilas/IO/Alf/Management/Alfbt/TranslationCollection.cs index b10acf1..99c64f3 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Management/TranslationCollection.cs +++ b/Runtime/Cobilas/IO/Alf/Management/Alfbt/TranslationCollection.cs @@ -3,8 +3,6 @@ using Cobilas.Collections; namespace Cobilas.IO.Alf.Management.Alfbt { -#pragma warning disable CS1591 -#pragma warning disable CS1573 /// Contem todos os textos do idioma alvo. public sealed class TranslationCollection : IDisposable { private string lang; diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Management/TranslationCollection.cs.meta b/Runtime/Cobilas/IO/Alf/Management/Alfbt/TranslationCollection.cs.meta similarity index 83% rename from Runtime/Cobilas/IO/Alf/Alfbt/Management/TranslationCollection.cs.meta rename to Runtime/Cobilas/IO/Alf/Management/Alfbt/TranslationCollection.cs.meta index a879269..c9c599b 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Management/TranslationCollection.cs.meta +++ b/Runtime/Cobilas/IO/Alf/Management/Alfbt/TranslationCollection.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a9795f591c19afc4cabdcb07ea4997dd +guid: 6c70fac1e3628b543ae0016812902b92 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Management/TranslationManagement.cs b/Runtime/Cobilas/IO/Alf/Management/Alfbt/TranslationManagement.cs similarity index 99% rename from Runtime/Cobilas/IO/Alf/Alfbt/Management/TranslationManagement.cs rename to Runtime/Cobilas/IO/Alf/Management/Alfbt/TranslationManagement.cs index 74d61da..aa51114 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Management/TranslationManagement.cs +++ b/Runtime/Cobilas/IO/Alf/Management/Alfbt/TranslationManagement.cs @@ -8,7 +8,6 @@ //Language block >> Bloco de idioma //Language text >> Texto de idioma namespace Cobilas.IO.Alf.Management.Alfbt { -#pragma warning disable CS1591 public sealed class TranslationManagement : IDisposable { /// O separador atual por padrão é '.' public char CurrentSeparator; diff --git a/Runtime/Cobilas/IO/Alf/Alfbt/Management/TranslationManagement.cs.meta b/Runtime/Cobilas/IO/Alf/Management/Alfbt/TranslationManagement.cs.meta similarity index 83% rename from Runtime/Cobilas/IO/Alf/Alfbt/Management/TranslationManagement.cs.meta rename to Runtime/Cobilas/IO/Alf/Management/Alfbt/TranslationManagement.cs.meta index fd4b4a4..b266cc0 100644 --- a/Runtime/Cobilas/IO/Alf/Alfbt/Management/TranslationManagement.cs.meta +++ b/Runtime/Cobilas/IO/Alf/Management/Alfbt/TranslationManagement.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 668c606e743ffa44b9450572c541ef9e +guid: ac9129b5bfad8be4c835149dccd26ce2 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/IO/ScratchObject.cs b/Runtime/Cobilas/IO/ScratchObject.cs index dd2920b..668dd63 100644 --- a/Runtime/Cobilas/IO/ScratchObject.cs +++ b/Runtime/Cobilas/IO/ScratchObject.cs @@ -35,7 +35,7 @@ public static void UnloadScratchObject(ScratchObject scratch, string folderPath, /// Carrega um objeto de um arquivo. /// Caminho do arquivo. - public static ScratchObject loadScratchObject(string filePath) { + public static ScratchObject LoadScratchObject(string filePath) { BinaryFormatter formatter = new BinaryFormatter(); using (FileStream stream = File.OpenRead(filePath)) return (ScratchObject)formatter.Deserialize(stream); diff --git a/Runtime/Cobilas/Core/interrupter.cs b/Runtime/Cobilas/Interrupter.cs similarity index 100% rename from Runtime/Cobilas/Core/interrupter.cs rename to Runtime/Cobilas/Interrupter.cs diff --git a/Runtime/Cobilas/Interrupter.cs.meta b/Runtime/Cobilas/Interrupter.cs.meta new file mode 100644 index 0000000..6f5d225 --- /dev/null +++ b/Runtime/Cobilas/Interrupter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a0e2afc4ad1263f499c39526f12de99a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/Core/Numeric.meta b/Runtime/Cobilas/Numeric.meta similarity index 77% rename from Runtime/Cobilas/Core/Numeric.meta rename to Runtime/Cobilas/Numeric.meta index 24fbcc3..56d9eea 100644 --- a/Runtime/Cobilas/Core/Numeric.meta +++ b/Runtime/Cobilas/Numeric.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 40fd19ac3ec18454c843c119cb079fc2 +guid: 767837de582ee7e4f9fb6b2d64766046 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/Cobilas/Core/Numeric/BaseCalcItem.cs b/Runtime/Cobilas/Numeric/BaseCalcItem.cs similarity index 100% rename from Runtime/Cobilas/Core/Numeric/BaseCalcItem.cs rename to Runtime/Cobilas/Numeric/BaseCalcItem.cs diff --git a/Runtime/Cobilas/Core/Numeric/BaseCalcItem.cs.meta b/Runtime/Cobilas/Numeric/BaseCalcItem.cs.meta similarity index 83% rename from Runtime/Cobilas/Core/Numeric/BaseCalcItem.cs.meta rename to Runtime/Cobilas/Numeric/BaseCalcItem.cs.meta index 1f3e144..3d6c0d1 100644 --- a/Runtime/Cobilas/Core/Numeric/BaseCalcItem.cs.meta +++ b/Runtime/Cobilas/Numeric/BaseCalcItem.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a32f88b59ecd5474ba78560437bde817 +guid: ca030addd806a3a4cbafe27eb2912c77 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/Core/Numeric/CalcSign.cs b/Runtime/Cobilas/Numeric/CalcSign.cs similarity index 100% rename from Runtime/Cobilas/Core/Numeric/CalcSign.cs rename to Runtime/Cobilas/Numeric/CalcSign.cs diff --git a/Runtime/Cobilas/Core/Numeric/CalcSign.cs.meta b/Runtime/Cobilas/Numeric/CalcSign.cs.meta similarity index 83% rename from Runtime/Cobilas/Core/Numeric/CalcSign.cs.meta rename to Runtime/Cobilas/Numeric/CalcSign.cs.meta index f1c6cbc..7c527d5 100644 --- a/Runtime/Cobilas/Core/Numeric/CalcSign.cs.meta +++ b/Runtime/Cobilas/Numeric/CalcSign.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 23ad4a714ba657147b2464ad054fd193 +guid: 35523e4fb2aaffb4a831c4f2bfcbe73f MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/Core/Numeric/CalcValue.cs b/Runtime/Cobilas/Numeric/CalcValue.cs similarity index 100% rename from Runtime/Cobilas/Core/Numeric/CalcValue.cs rename to Runtime/Cobilas/Numeric/CalcValue.cs diff --git a/Runtime/Cobilas/Core/Numeric/CalcValue.cs.meta b/Runtime/Cobilas/Numeric/CalcValue.cs.meta similarity index 83% rename from Runtime/Cobilas/Core/Numeric/CalcValue.cs.meta rename to Runtime/Cobilas/Numeric/CalcValue.cs.meta index e0b00d3..e0c976b 100644 --- a/Runtime/Cobilas/Core/Numeric/CalcValue.cs.meta +++ b/Runtime/Cobilas/Numeric/CalcValue.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7673034853680e44bbd13fdbd90afcf2 +guid: a290642221a87854db9a1d8c94eabbd8 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/Core/Numeric/Calculator.cs b/Runtime/Cobilas/Numeric/Calculator.cs similarity index 100% rename from Runtime/Cobilas/Core/Numeric/Calculator.cs rename to Runtime/Cobilas/Numeric/Calculator.cs diff --git a/Runtime/Cobilas/Core/Numeric/Calculator.cs.meta b/Runtime/Cobilas/Numeric/Calculator.cs.meta similarity index 83% rename from Runtime/Cobilas/Core/Numeric/Calculator.cs.meta rename to Runtime/Cobilas/Numeric/Calculator.cs.meta index 4b24df3..8cc7a88 100644 --- a/Runtime/Cobilas/Core/Numeric/Calculator.cs.meta +++ b/Runtime/Cobilas/Numeric/Calculator.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8b72124acec14214cb4e56574602285b +guid: 61d130b6ad6068a47a36f2c2aa7c960a MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/Core/Numeric/Convert.meta b/Runtime/Cobilas/Numeric/Convert.meta similarity index 77% rename from Runtime/Cobilas/Core/Numeric/Convert.meta rename to Runtime/Cobilas/Numeric/Convert.meta index 57052dc..171eaf9 100644 --- a/Runtime/Cobilas/Core/Numeric/Convert.meta +++ b/Runtime/Cobilas/Numeric/Convert.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 61ea862773a1d8740a345f44d24115dc +guid: e2db73f3049de77499ebeecce5ef5b59 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/Cobilas/Core/Numeric/Convert/BitArray_Binary_Extension.cs b/Runtime/Cobilas/Numeric/Convert/BitArray_Binary_Extension.cs similarity index 100% rename from Runtime/Cobilas/Core/Numeric/Convert/BitArray_Binary_Extension.cs rename to Runtime/Cobilas/Numeric/Convert/BitArray_Binary_Extension.cs diff --git a/Runtime/Cobilas/Core/Numeric/Convert/BitArray_Binary_Extension.cs.meta b/Runtime/Cobilas/Numeric/Convert/BitArray_Binary_Extension.cs.meta similarity index 83% rename from Runtime/Cobilas/Core/Numeric/Convert/BitArray_Binary_Extension.cs.meta rename to Runtime/Cobilas/Numeric/Convert/BitArray_Binary_Extension.cs.meta index 2af63fa..dd79a6b 100644 --- a/Runtime/Cobilas/Core/Numeric/Convert/BitArray_Binary_Extension.cs.meta +++ b/Runtime/Cobilas/Numeric/Convert/BitArray_Binary_Extension.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c619a1336b1a10b48b2713660aa1a1a9 +guid: 783a2d56612cb2144b0be64bee073ed3 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/Core/Numeric/Convert/String_Hexadecimal_Extension.cs b/Runtime/Cobilas/Numeric/Convert/String_Hexadecimal_Extension.cs similarity index 100% rename from Runtime/Cobilas/Core/Numeric/Convert/String_Hexadecimal_Extension.cs rename to Runtime/Cobilas/Numeric/Convert/String_Hexadecimal_Extension.cs diff --git a/Runtime/Cobilas/Core/Numeric/Convert/String_Hexadecimal_Extension.cs.meta b/Runtime/Cobilas/Numeric/Convert/String_Hexadecimal_Extension.cs.meta similarity index 83% rename from Runtime/Cobilas/Core/Numeric/Convert/String_Hexadecimal_Extension.cs.meta rename to Runtime/Cobilas/Numeric/Convert/String_Hexadecimal_Extension.cs.meta index 2c67d8e..199ba0b 100644 --- a/Runtime/Cobilas/Core/Numeric/Convert/String_Hexadecimal_Extension.cs.meta +++ b/Runtime/Cobilas/Numeric/Convert/String_Hexadecimal_Extension.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: deff778dca8174d47af145896c018904 +guid: 2d02aec855eab634883d213441cb9325 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/Core/CobilasConsole.cs b/Runtime/Cobilas/PrintOut.cs similarity index 86% rename from Runtime/Cobilas/Core/CobilasConsole.cs rename to Runtime/Cobilas/PrintOut.cs index a380904..827561c 100644 --- a/Runtime/Cobilas/Core/CobilasConsole.cs +++ b/Runtime/Cobilas/PrintOut.cs @@ -1,9 +1,9 @@ using System; -using Cobilas.Collections; using System.Diagnostics; +using Cobilas.Collections; namespace Cobilas { - public static class CobilasConsole { + public static class PrintOut { /// Default separator CRLF public static string Separator = "\r\n"; @@ -19,7 +19,7 @@ public static void Print(object value) => Print(new object[] { value }); public static void Print(IFormatProvider provider, string format, params object[] args) - => Print(new object[]{ string.Format(provider, format, args) }); + => Print(new object[] { string.Format(provider, format, args) }); public static void Print(string format, params object[] args) => Print(new object[] { string.Format(format, args) }); @@ -33,33 +33,38 @@ public static void PrintLine(string format, params object[] args) public static void PrintLine(IFormatProvider provider, string format, params object[] args) => PrintLine(string.Format(provider, format, args)); - public static void TrackedPrint(object value) { + public static void TrackedPrint(object value) + { PrintLine(MethodTrackingList(2)); PrintLine(value); } - public static void TrackedPrintLine(params object[] values) { + public static void TrackedPrintLine(params object[] values) + { PrintLine(MethodTrackingList(2)); PrintLine(values); } - public static void TrackedPrintLine(IFormatProvider provider, string format, params object[] args) { + public static void TrackedPrintLine(IFormatProvider provider, string format, params object[] args) + { PrintLine(MethodTrackingList(2)); PrintLine(provider, format, args); } - public static void TrackedPrintLine(string format, params object[] args) { + public static void TrackedPrintLine(string format, params object[] args) + { PrintLine(MethodTrackingList(2)); PrintLine(format, args); } - public static string MethodTrackingList(int startIndex) { + public static string MethodTrackingList(int startIndex) + { StackFrame[] frames = TrackMethod(); string Res = null; for (int I = startIndex; I < ArrayManipulation.ArrayLength(frames); I++) Res = string.Format("{0}{1}File name: {2} (C:{3} L:{4}) Method: {5}", Res, (Res == null ? "" : Separator), - frames[I].GetFileName(), frames[I].GetFileLineNumber(), + frames[I].GetFileName(), frames[I].GetFileLineNumber(), frames[I].GetFileLineNumber(), frames[I].GetMethod()); return Res; } @@ -71,7 +76,7 @@ public static void ResetSeparato() => Separator = "\r\n"; public static void ResetWrite() - => Write = (o) => { Console.Write(o); }; + => Write = (o) => Console.Write(o); public static void ResetWriteLine() => WriteLine = (o) => { Write(o); Write(Separator); }; diff --git a/Runtime/Cobilas/PrintOut.cs.meta b/Runtime/Cobilas/PrintOut.cs.meta new file mode 100644 index 0000000..04cc48e --- /dev/null +++ b/Runtime/Cobilas/PrintOut.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 02bcc2b99f8494740978ea50613ad7d2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Cobilas/Core/Threading.meta b/Runtime/Cobilas/Threading.meta similarity index 77% rename from Runtime/Cobilas/Core/Threading.meta rename to Runtime/Cobilas/Threading.meta index a15f7db..7ed0a8a 100644 --- a/Runtime/Cobilas/Core/Threading.meta +++ b/Runtime/Cobilas/Threading.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a6251354956bf8540af984e47491f62d +guid: 6f6b7b05670401c42baef07e1838c373 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/Cobilas/Core/Threading/Tasks.meta b/Runtime/Cobilas/Threading/Tasks.meta similarity index 77% rename from Runtime/Cobilas/Core/Threading/Tasks.meta rename to Runtime/Cobilas/Threading/Tasks.meta index 2fec776..c93a969 100644 --- a/Runtime/Cobilas/Core/Threading/Tasks.meta +++ b/Runtime/Cobilas/Threading/Tasks.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6038892e58c889142bfef84093d38108 +guid: b6084d8d5a6b8164fa6c3a9b35131190 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/Cobilas/Core/Threading/Tasks/AsyncTask.cs b/Runtime/Cobilas/Threading/Tasks/AsyncTask.cs similarity index 100% rename from Runtime/Cobilas/Core/Threading/Tasks/AsyncTask.cs rename to Runtime/Cobilas/Threading/Tasks/AsyncTask.cs diff --git a/Runtime/Cobilas/Core/Threading/Tasks/AsyncTask.cs.meta b/Runtime/Cobilas/Threading/Tasks/AsyncTask.cs.meta similarity index 83% rename from Runtime/Cobilas/Core/Threading/Tasks/AsyncTask.cs.meta rename to Runtime/Cobilas/Threading/Tasks/AsyncTask.cs.meta index 19b8764..4afbafa 100644 --- a/Runtime/Cobilas/Core/Threading/Tasks/AsyncTask.cs.meta +++ b/Runtime/Cobilas/Threading/Tasks/AsyncTask.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1af6b8b34a8d17349a4cfb1741a3ef76 +guid: 084d795f532e489419c68cb81a0c99dd MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/Core/Threading/Tasks/AsyncTaskWait.cs b/Runtime/Cobilas/Threading/Tasks/AsyncTaskWait.cs similarity index 100% rename from Runtime/Cobilas/Core/Threading/Tasks/AsyncTaskWait.cs rename to Runtime/Cobilas/Threading/Tasks/AsyncTaskWait.cs diff --git a/Runtime/Cobilas/Core/Threading/Tasks/AsyncTaskWait.cs.meta b/Runtime/Cobilas/Threading/Tasks/AsyncTaskWait.cs.meta similarity index 83% rename from Runtime/Cobilas/Core/Threading/Tasks/AsyncTaskWait.cs.meta rename to Runtime/Cobilas/Threading/Tasks/AsyncTaskWait.cs.meta index 0d0a13e..54a19dd 100644 --- a/Runtime/Cobilas/Core/Threading/Tasks/AsyncTaskWait.cs.meta +++ b/Runtime/Cobilas/Threading/Tasks/AsyncTaskWait.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c1410a60a500a6340907b9659d2a27f7 +guid: a0284f65e5857904b87ced334308f3e1 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/Core/Threading/Tasks/Interfaces.meta b/Runtime/Cobilas/Threading/Tasks/Interfaces.meta similarity index 77% rename from Runtime/Cobilas/Core/Threading/Tasks/Interfaces.meta rename to Runtime/Cobilas/Threading/Tasks/Interfaces.meta index 0677cda..95c2a3e 100644 --- a/Runtime/Cobilas/Core/Threading/Tasks/Interfaces.meta +++ b/Runtime/Cobilas/Threading/Tasks/Interfaces.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: cdcadcab474fff2478907f8e273ecf4b +guid: 3ed01efe9d430cf488344405e57d4dea folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/Cobilas/Core/Threading/Tasks/Interfaces/IAsyncTask.cs b/Runtime/Cobilas/Threading/Tasks/Interfaces/IAsyncTask.cs similarity index 100% rename from Runtime/Cobilas/Core/Threading/Tasks/Interfaces/IAsyncTask.cs rename to Runtime/Cobilas/Threading/Tasks/Interfaces/IAsyncTask.cs diff --git a/Runtime/Cobilas/Core/Threading/Tasks/Interfaces/IAsyncTask.cs.meta b/Runtime/Cobilas/Threading/Tasks/Interfaces/IAsyncTask.cs.meta similarity index 83% rename from Runtime/Cobilas/Core/Threading/Tasks/Interfaces/IAsyncTask.cs.meta rename to Runtime/Cobilas/Threading/Tasks/Interfaces/IAsyncTask.cs.meta index 6638603..d88e180 100644 --- a/Runtime/Cobilas/Core/Threading/Tasks/Interfaces/IAsyncTask.cs.meta +++ b/Runtime/Cobilas/Threading/Tasks/Interfaces/IAsyncTask.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 846602280969bfe4289cc484e9274fd5 +guid: 24e377abba52f1e44997179d0080d6c6 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/Core/Threading/Tasks/Interfaces/IAsyncTaskWait.cs b/Runtime/Cobilas/Threading/Tasks/Interfaces/IAsyncTaskWait.cs similarity index 100% rename from Runtime/Cobilas/Core/Threading/Tasks/Interfaces/IAsyncTaskWait.cs rename to Runtime/Cobilas/Threading/Tasks/Interfaces/IAsyncTaskWait.cs diff --git a/Runtime/Cobilas/Core/Threading/Tasks/Interfaces/IAsyncTaskWait.cs.meta b/Runtime/Cobilas/Threading/Tasks/Interfaces/IAsyncTaskWait.cs.meta similarity index 83% rename from Runtime/Cobilas/Core/Threading/Tasks/Interfaces/IAsyncTaskWait.cs.meta rename to Runtime/Cobilas/Threading/Tasks/Interfaces/IAsyncTaskWait.cs.meta index ed00dcb..bf83bc7 100644 --- a/Runtime/Cobilas/Core/Threading/Tasks/Interfaces/IAsyncTaskWait.cs.meta +++ b/Runtime/Cobilas/Threading/Tasks/Interfaces/IAsyncTaskWait.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f4b29436c57940a4e9c9d3bbfa7ef87e +guid: 688278797dee6cc44837151a8b24d7c0 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/Core/Threading/Tasks/Interfaces/ITaskPoolItem.cs b/Runtime/Cobilas/Threading/Tasks/Interfaces/ITaskPoolItem.cs similarity index 100% rename from Runtime/Cobilas/Core/Threading/Tasks/Interfaces/ITaskPoolItem.cs rename to Runtime/Cobilas/Threading/Tasks/Interfaces/ITaskPoolItem.cs diff --git a/Runtime/Cobilas/Core/Threading/Tasks/Interfaces/ITaskPoolItem.cs.meta b/Runtime/Cobilas/Threading/Tasks/Interfaces/ITaskPoolItem.cs.meta similarity index 83% rename from Runtime/Cobilas/Core/Threading/Tasks/Interfaces/ITaskPoolItem.cs.meta rename to Runtime/Cobilas/Threading/Tasks/Interfaces/ITaskPoolItem.cs.meta index 97e054c..b28c8bb 100644 --- a/Runtime/Cobilas/Core/Threading/Tasks/Interfaces/ITaskPoolItem.cs.meta +++ b/Runtime/Cobilas/Threading/Tasks/Interfaces/ITaskPoolItem.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4c58c0b046431344a803d442747eac27 +guid: 4b47de383713d0b408373793ccb36810 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/Core/Threading/Tasks/InternalWait.cs b/Runtime/Cobilas/Threading/Tasks/InternalWait.cs similarity index 100% rename from Runtime/Cobilas/Core/Threading/Tasks/InternalWait.cs rename to Runtime/Cobilas/Threading/Tasks/InternalWait.cs diff --git a/Runtime/Cobilas/Core/Threading/Tasks/InternalWait.cs.meta b/Runtime/Cobilas/Threading/Tasks/InternalWait.cs.meta similarity index 83% rename from Runtime/Cobilas/Core/Threading/Tasks/InternalWait.cs.meta rename to Runtime/Cobilas/Threading/Tasks/InternalWait.cs.meta index 8707f46..1fd2fa7 100644 --- a/Runtime/Cobilas/Core/Threading/Tasks/InternalWait.cs.meta +++ b/Runtime/Cobilas/Threading/Tasks/InternalWait.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7944c578e5fee8743a8adbd1fcec4a6c +guid: a0256b5b1ce30fe439dcd10faa502931 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/Core/Threading/Tasks/TaskPool.cs b/Runtime/Cobilas/Threading/Tasks/TaskPool.cs similarity index 100% rename from Runtime/Cobilas/Core/Threading/Tasks/TaskPool.cs rename to Runtime/Cobilas/Threading/Tasks/TaskPool.cs diff --git a/Runtime/Cobilas/Core/Threading/Tasks/TaskPool.cs.meta b/Runtime/Cobilas/Threading/Tasks/TaskPool.cs.meta similarity index 83% rename from Runtime/Cobilas/Core/Threading/Tasks/TaskPool.cs.meta rename to Runtime/Cobilas/Threading/Tasks/TaskPool.cs.meta index a01f410..5d22aa1 100644 --- a/Runtime/Cobilas/Core/Threading/Tasks/TaskPool.cs.meta +++ b/Runtime/Cobilas/Threading/Tasks/TaskPool.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6cb8f92c2cebb2440b38359b5a0522e2 +guid: 71b2348c705301a48870a5da9b9bd8af MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/Core/Threading/Tasks/TaskPoolItem.cs b/Runtime/Cobilas/Threading/Tasks/TaskPoolItem.cs similarity index 98% rename from Runtime/Cobilas/Core/Threading/Tasks/TaskPoolItem.cs rename to Runtime/Cobilas/Threading/Tasks/TaskPoolItem.cs index 4d442de..012e98c 100644 --- a/Runtime/Cobilas/Core/Threading/Tasks/TaskPoolItem.cs +++ b/Runtime/Cobilas/Threading/Tasks/TaskPoolItem.cs @@ -9,7 +9,7 @@ public class TaskPoolItem : ITaskPoolItem { private bool isCanceled; private bool isFaulted; private Exception exception = (Exception)null; - private InternalWait wait; + private readonly InternalWait wait; public int TaskID => task.Id; public TaskStatus Status => task.Status; diff --git a/Runtime/Cobilas/Core/Threading/Tasks/TaskPoolItem.cs.meta b/Runtime/Cobilas/Threading/Tasks/TaskPoolItem.cs.meta similarity index 83% rename from Runtime/Cobilas/Core/Threading/Tasks/TaskPoolItem.cs.meta rename to Runtime/Cobilas/Threading/Tasks/TaskPoolItem.cs.meta index c60cd7d..93592e1 100644 --- a/Runtime/Cobilas/Core/Threading/Tasks/TaskPoolItem.cs.meta +++ b/Runtime/Cobilas/Threading/Tasks/TaskPoolItem.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5e0a28563dbe18046a48159fe5245acd +guid: 92012fd877ec7a2428f60eccda1b7a42 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Cobilas/TypeUtilitarian.cs b/Runtime/Cobilas/TypeUtilitarian.cs new file mode 100644 index 0000000..ac8f44e --- /dev/null +++ b/Runtime/Cobilas/TypeUtilitarian.cs @@ -0,0 +1,21 @@ +using System; +using System.Reflection; +using Cobilas.Collections; + +namespace Cobilas { + public static class TypeUtilitarian { + public static bool TypeExist(string fullName) { + Assembly[] assemblies = GetAssemblies(); + for (int A = 0; A < ArrayManipulation.ArrayLength(assemblies); A++) { + Type[] types = assemblies[A].GetTypes(); + for (int B = 0; B < ArrayManipulation.ArrayLength(types); B++) + if (types[B].Name == fullName) + return true; + } + return false; + } + + public static Assembly[] GetAssemblies() + => AppDomain.CurrentDomain.GetAssemblies(); + } +} diff --git a/Runtime/Cobilas/TypeUtilitarian.cs.meta b/Runtime/Cobilas/TypeUtilitarian.cs.meta new file mode 100644 index 0000000..c8eb4b1 --- /dev/null +++ b/Runtime/Cobilas/TypeUtilitarian.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8e8174c0c32291e4eb22d797110a1414 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.cobilas.core.gpack b/com.cobilas.core.gpack index f23cb13..9ec2e76 100644 --- a/com.cobilas.core.gpack +++ b/com.cobilas.core.gpack @@ -1,9 +1,10 @@ { "name": "com.cobilas.core", - "version": "1.0.0", + "version": "1.0.1", "repository": "https://github.com/BelicusBr/com.cobilas.core.git", "relatedPackages": [ - "1.0.0" + "1.0.0", + "1.0.1" ], "gitDependencies": [] } \ No newline at end of file diff --git a/package.json b/package.json index e77c6fb..4c32b3b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "com.cobilas.core", - "version": "1.0.0", + "version": "1.0.1", "displayName": "Cobilas Core 2", "description": "Pacote de blibiotecas para unity3d", "documentationUrl": "https://github.com/BelicusBr/com.cobilas.core.wiki.git",