├── images
└── ventuz.png
├── examples
├── README.md
├── JsonQuery
│ ├── jquery.vzs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── JQuery.cs
│ ├── JsonQuery.csproj
│ └── .gitignore
└── StringCompress
│ ├── Properties
│ └── AssemblyInfo.cs
│ ├── StringCompress.csproj
│ └── StringCompress.cs
├── snippets
├── README.md
├── RandomGen.cs
├── LoadFile.cs
├── SimpleMeshGen
├── Enum.cs
├── Impulse.cs
├── StringSplitter.cs
├── SimpleCompare.cs
├── MeshStar.cs
└── FloatArrayClip.cs
├── README.md
├── VersionChangeLog.md
└── .gitignore
/images/ventuz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VentuzTechnology/Ventuz.Extension.prerelease/HEAD/images/ventuz.png
--------------------------------------------------------------------------------
/examples/README.md:
--------------------------------------------------------------------------------
1 | # Examples Folder
2 |
3 | This folder should contain further sub-folders. One folder per stand-alone project.
--------------------------------------------------------------------------------
/examples/JsonQuery/jquery.vzs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VentuzTechnology/Ventuz.Extension.prerelease/HEAD/examples/JsonQuery/jquery.vzs
--------------------------------------------------------------------------------
/snippets/README.md:
--------------------------------------------------------------------------------
1 | = Snippets =
2 |
3 | This folder contains very simple stand-alone .cs files as code snippets.
4 | Copy and paste code from here into your own project.
--------------------------------------------------------------------------------
/snippets/RandomGen.cs:
--------------------------------------------------------------------------------
1 | [VxToolBox("Random VX", "VX-Test", "rnd", "Generate random numbers", false)]
2 | [VxDefaultValue(10.0f, "Range")]
3 | [VxHelpUrl("https://www.ventuz.com", "Ventuz Homepage")]
4 | public class RandomNumerVx : VxContentNode
5 | {
6 | Random RND = new Random();
7 |
8 | public float GenerateRandom(float Range) => (float)(RND.NextDouble() * Range);
9 | }
10 |
11 |
--------------------------------------------------------------------------------
/snippets/LoadFile.cs:
--------------------------------------------------------------------------------
1 | [VxToolBox("Load File VX", "VX-Test", "Load", "This node load a file as text and returns a string", false)]
2 | [VxUri(VxDataPool.Data, "File")]
3 | public class LoadFileVx: VxContentNode
4 | {
5 | public string ValidateText(Uri File)
6 | {
7 | if (File != null)
8 | {
9 | try
10 | {
11 | using ( var stream = VX.IO.GetReadStream(File))
12 | {
13 | using (var reader = new StreamReader(stream))
14 | {
15 | return reader.ReadToEnd();
16 | }
17 | }
18 | }
19 | catch (Exception ex)
20 | {
21 | VX.Log.Error("Failed to load file", ex);
22 | }
23 | }
24 | return "";
25 | }
26 | }
27 |
28 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Ventuz Extension API
2 |
3 |
4 |
5 |
6 | # Documentation
7 | The documentation can be found in the [Wiki section](https://github.com/VentuzTechnology/Ventuz.Extension.prerelease/wiki)
8 |
9 | # Downloads
10 | ## Ventuz Versions
11 | | Download Link | Version _BuildNumber_Revision | API Version | API Changelog |
12 | | ------------- |:-------------|:-------------|:-------------|
13 | | [Official Downloads](https://www.ventuz.com/downloads/) | 6.12.07, 7.0.4, 7.1.0 | 1.0.0 | [API Changelog](VersionChangeLog.md)|
14 | | [Official Downloads](https://www.ventuz.com/downloads/files/versions/Ventuz_Setup_V6.12.01_x64.exe) | 6.12.01_309_37961 | 0.9.1 | [API Changelog](VersionChangeLog.md)|
15 | | [Official Downloads](https://www.ventuz.com/downloads/files/versions/Ventuz_Setup_V6.12.00_x64.exe) | 6.12.00_254_37359 | 0.9.0 | [API Changelog](VersionChangeLog.md)|
16 | | n/a | 6.12.00_211 | 0.9.0 | [API Changelog](VersionChangeLog.md)|
17 | | n/a | 6.12.00_219_37118 | 0.9.0 | [API Changelog](VersionChangeLog.md)|
18 | | n/a | 6.12.00_242_37316 | 0.9.0 | [API Changelog](VersionChangeLog.md)|
19 |
--------------------------------------------------------------------------------
/snippets/SimpleMeshGen:
--------------------------------------------------------------------------------
1 | [VxDynamicIcon("Geo")]
2 | public class VX_SIMPLE_MESH_GEN : VxContentNode
3 | {
4 | public struct PS : IMeshResourceParameter
5 | {
6 | public float Size;
7 |
8 | public IMesh GenerateMesh(IMeshFactory meshFactory)
9 | {
10 | var v = new VertexPN[4];
11 |
12 | v[0].px = -Size;
13 | v[0].py = Size;
14 | v[0].nz = -1.0f;
15 |
16 | v[1].px = -Size;
17 | v[1].py = -Size;
18 | v[1].nz = -1.0f;
19 |
20 | v[2].px = Size;
21 | v[2].py = Size;
22 | v[2].nz = -1.0f;
23 |
24 | v[3].px = Size;
25 | v[3].py = -Size;
26 | v[3].nz = -1.0f;
27 |
28 | var i = new ushort[6];
29 |
30 | i[0] = 0;
31 | i[1] = 2;
32 | i[2] = 1;
33 |
34 | i[3] = 1;
35 | i[4] = 2;
36 | i[5] = 3;
37 |
38 | return meshFactory.CreateTriangleList(v, i);
39 | }
40 | }
41 |
42 | public IMesh ValidateGeo(float Size)
43 | => VX.Resources.CreateMesh("Geo", new PS() { Size = Size });
44 | }
45 |
--------------------------------------------------------------------------------
/snippets/Enum.cs:
--------------------------------------------------------------------------------
1 | [VxDefaultValue(MyDirection.Up, "Direction")]
2 | [VxDefaultValue(MyFlags.B, "Flags")]
3 | public class VX_ENUM : VxContentNode
4 | {
5 | public enum MyDirection
6 | {
7 | Left, Right, Up, Down
8 | }
9 |
10 | [VxFlagGroupName(0x0f, "Select one or more flags")]
11 | [VxFlagGroupName(0x30, "Select a color")]
12 | [Flags]
13 | public enum MyFlags
14 | {
15 | // 0x0f: ABCD (flags)
16 |
17 | [VxFlagGroupItem(0x0f, false, DisplayName = "For A")]
18 | A = 1,
19 |
20 | [VxFlagGroupItem(0x0f, false, DisplayName = "For B")]
21 | B = 2,
22 |
23 | [VxFlagGroupItem(0x0f, false, DisplayName = "For C")]
24 | C = 4,
25 |
26 | [VxFlagGroupItem(0x0f, false, DisplayName = "For D")]
27 | D = 8,
28 |
29 | // 0x30: color selection (enum)
30 |
31 | [VxFlagGroupItem(0x30, true, DisplayName = "Red")]
32 | R = 0x10,
33 |
34 | [VxFlagGroupItem(0x30, true, DisplayName = "Green")]
35 | G = 0x20,
36 |
37 | [VxFlagGroupItem(0x30, true, DisplayName = "Yellow")]
38 | Y = 0x30,
39 |
40 | }
41 |
42 | public int ValidateOut(MyDirection Direction, MyFlags Flags)
43 | {
44 | return (int)Direction + (int)Flags;
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/snippets/Impulse.cs:
--------------------------------------------------------------------------------
1 | // This node creates a 'boolean impulse' with a specific duration like this:
2 | //
3 | // true ------
4 | // | |
5 | // | |
6 | // fale: ----- --------
7 | [VxToolBox("VX Impulse", "VX-Test", "Impulse", "Impulse with customizable duration", false)]
8 | [VxDefaultValue(1, "Duration")]
9 | [VxDefaultValue(false, "Invert")]
10 | public class VX_Impulse : VxContentNode
11 | {
12 | int countdownDuration = 0;
13 | int countdown = 0;
14 |
15 | public void MethodTrigger()
16 | {
17 | countdown = countdownDuration; // begin countdown
18 | this.Invalidate(); // force node validation
19 | }
20 |
21 | public bool GenerateValue(int Duration, bool Invert)
22 | {
23 | countdownDuration = Duration;
24 |
25 | if ( !Invert )
26 | {
27 | // false -> true -> false
28 | if ( countdown > 0 )
29 | {
30 | countdown--;
31 | return true;
32 | }
33 |
34 | return false;
35 | }
36 | else
37 | {
38 | // true -> false -> true
39 | if ( countdown > 0 )
40 | {
41 | countdown--;
42 | return false;
43 | }
44 |
45 | return true;
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/examples/StringCompress/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("StringCompress")]
9 | [assembly: AssemblyDescription("Ventuz Extension for compressing strings")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("Glare Productions GmbH")]
12 | [assembly: AssemblyProduct("StringCompress")]
13 | [assembly: AssemblyCopyright("Copyright © 2022 Glare Productions GmbH")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("8e9a2616-9d8d-4a81-8236-7da69da758f8")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("0.9.0.0")]
36 | [assembly: AssemblyFileVersion("0.9.0.0")]
37 |
--------------------------------------------------------------------------------
/examples/JsonQuery/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // Allgemeine Informationen über eine Assembly werden über die folgenden
6 | // Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
7 | // die einer Assembly zugeordnet sind.
8 | [assembly: AssemblyTitle("JsonQuery")]
9 | [assembly: AssemblyDescription("Ventuz Extention JsonQuery")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("Realtime Department GmbH")]
12 | [assembly: AssemblyProduct("Realtime Departmetn Ventuz Extentions")]
13 | [assembly: AssemblyCopyright("Copyright © Realtime Department 2022")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
18 | // für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
19 | // COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
20 | [assembly: ComVisible(false)]
21 |
22 | // Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
23 | [assembly: Guid("192747f5-70b4-4c73-aabb-a9028e4b432e")]
24 |
25 | // Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
26 | //
27 | // Hauptversion
28 | // Nebenversion
29 | // Buildnummer
30 | // Revision
31 | //
32 | // Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
33 | // indem Sie "*" wie unten gezeigt eingeben:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/snippets/StringSplitter.cs:
--------------------------------------------------------------------------------
1 | [VxToolBox("String Splitter VX", "VX-Test", "Split", "This node splits a text string into text fragments which can be accessed by their index.", false)]
2 | [VxIcon("NodeIcons.Logic.Expressions")]
3 | [VxCategory(0, "Text", false, "Input", "Current", "RemoveEmptyItems")]
4 | [VxCategory(1, "Separator", false, "Custom", "Lines", "Tabs")]
5 | [VxCategory(2, "Output", false, "Items", "Count", "IsNullOrWhitespace", "Item")]
6 | [VxDefaultValue("", "Input", "Custom")]
7 | [VxDefaultValue(0, "Current")]
8 | [VxDefaultValue(false, "RemoveEmptyItems", "Tabs")]
9 | [VxDefaultValue(true, "Lines")]
10 | public class StringSplitterVx : VxContentNode
11 | {
12 | protected char[] Validate_Seps(string Custom, bool Lines, bool Tabs)
13 | {
14 | string sep = "";
15 | if ( Custom != null ) sep += Custom.Replace("\n\r", "").Replace("\n", "");
16 | if ( Lines ) sep += "\n";
17 | if ( Tabs ) sep += "\t";
18 | return sep.ToCharArray();
19 | }
20 |
21 | protected (string[] Items, int Count, bool IsNullOrWhitespace) Validate2(string Input, char[] _Seps, bool RemoveEmptyItems)
22 | {
23 | string[] toks = null;
24 | if (Input != null && _Seps?.Length > 0)
25 | {
26 | Input = Input.Replace("\r", "");
27 | toks = Input.Split(_Seps, RemoveEmptyItems ? StringSplitOptions.RemoveEmptyEntries : StringSplitOptions.None);
28 | }
29 | return (toks, toks?.Length ?? 0, string.IsNullOrWhiteSpace(Input));
30 | }
31 |
32 | protected string ValidateItem(string[] Items, int Current, bool RemoveEmptyItems)
33 | => (Current >= 0 && Current < (Items?.Length ?? 0)) ? Items[Current] : "";
34 | }
35 |
36 |
--------------------------------------------------------------------------------
/VersionChangeLog.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 | All notable changes to the Ventuz Extension API will be documented in this file.
3 |
4 | | Version_BuildNumber_Revision | API Version | Date |
5 | ## [6.12.0x_yyy_zzzzz] [1.0.0] - dd-mm-yyyy
6 | ## [7.00.0x_yyy_zzzzz] [1.0.0] - dd-mm-yyyy
7 | ### Fixed
8 | ### Added
9 | - Support for derived Vx-Nodes
10 | - Support for Vx-Property Group
11 | - VxToolBoxAttribute has now also Sort and BreakAfter properties
12 | - new VxCategoriesAttribute for sorting categories and define their collapsed states
13 | ### Changed
14 | - Access to API functions moved to static class VX (no API as inherited members anymore)
15 | - The usages are now adjusted for all from VxMetaDataAttribute derived classes
16 | - Vx methods starting with "Method" receive the event argument via VX.Node.MethodArg because they can declare properties as parameters now for easy access
17 | - The argument for VxCategoryAttribute have changed. Use also the new VxCategoriesAttribute.
18 |
19 |
20 | ## [6.12.01_309_37961] [0.9.1] - 06-12-2022
21 | ### Fixed
22 | - Name clashes caused by the same VX assembly prevented Ventuz from starting
23 | - VX Matrix array conversion to the native Matrix array type did not work
24 | - When renaming Methods old version was still displayed after deserialization (issue #27)
25 | - VxLegacyNames attribute did not work at all
26 | - Attributes like VxCategory or VxLegacyNames were not applied to Node methods
27 | ### Added
28 | - Color4b arrays are now a supported property type
29 | - Static VxLog class for simpler logging to Ventuz logs
30 | ### Changed
31 | - ParameterSets for ICustomResource instances must now implement Equals() & GetHashCode()
32 |
33 | ## [6.12.00_242_37316] [0.9.0] - 26-10-2022
34 | ### Fixed
35 | Vx: fixed issues with Node validation, which was caused by incorrect dependencies of in- and output properties
36 |
37 | All your extensions must be recompiled!
38 |
39 | ## [6.12.00_219_37118] [0.9.0] - 11-10-2022
40 | ### Fixed
41 | - vx.exe: wrong PlatformTarget in Release configuration - now also x64
42 | ### Added
43 | - Vx: base class VxNode has now a method to invalidate the node by a given property or completely
44 | ### Changed
45 |
46 |
--------------------------------------------------------------------------------
/snippets/SimpleCompare.cs:
--------------------------------------------------------------------------------
1 |
2 | [VxToolBox("Double_Compare", "VX Samples", "Cmp", "This Node compares values with simple operators", true)]
3 | [VxCategory(0, "Inputs", false, "ValueLeft", "ValueRight", "Operator")]
4 | [VxIcon("FirstVXTest.Resources.Icons.Equal.svg", 0)]
5 | [VxIcon("FirstVXTest.Resources.Icons.NotEqual.svg", 1)]
6 | [VxIcon("FirstVXTest.Resources.Icons.Smaller.svg", 2)]
7 | [VxIcon("FirstVXTest.Resources.Icons.Bigger.svg", 3)]
8 | [VxIcon("FirstVXTest.Resources.Icons.SmallerEqual.svg", 4)]
9 | [VxIcon("FirstVXTest.Resources.Icons.BiggerEqual.svg", 5)]
10 | [VxIcon("FirstVXTest.Resources.Icons.Error.svg", 6)]
11 | [VxDefaultValue(0, "Operator")]
12 |
13 | public class CompareDouble : VxContentNode, IIconIndex, ITooltip
14 | {
15 | public int IconIndex { get; set; }
16 | public string Tooltip { get; set; }
17 |
18 | [VxFlagGroupName(0x0F, "Operator")]
19 | public enum Operator
20 | {
21 | [VxFlagGroupItem(0x0f, true, DisplayName = "==")]
22 | Equal,
23 | [VxFlagGroupItem(0x0f, true, DisplayName = "!=")]
24 | NonEqual,
25 | [VxFlagGroupItem(0x0f, true, DisplayName = "<=")]
26 | SmallerEqual,
27 | [VxFlagGroupItem(0x0f, true, DisplayName = "<")]
28 | Smaller,
29 | [VxFlagGroupItem(0x0f, true, DisplayName = ">=")]
30 | BiggerEqual,
31 | [VxFlagGroupItem(0x0f, true, DisplayName = ">")]
32 | Bigger
33 | }
34 |
35 | public bool Compare(Operator op, T left, T right) where T : IComparable
36 | {
37 | int cmp = left.CompareTo(right);
38 | Tooltip = $"Compare: {left} {op} {right}";
39 |
40 | switch (op)
41 | {
42 | case Operator.Equal:
43 | IconIndex = 0;
44 | return cmp == 0;
45 | case Operator.NonEqual:
46 | IconIndex = 1;
47 | return cmp != 0;
48 | case Operator.Smaller:
49 | IconIndex = 2;
50 | return cmp < 0;
51 | case Operator.Bigger:
52 | IconIndex = 3;
53 | return cmp > 0;
54 | case Operator.SmallerEqual:
55 | IconIndex = 4;
56 | return cmp <= 0;
57 | case Operator.BiggerEqual:
58 | IconIndex = 5;
59 | return cmp >= 0;
60 | default:
61 | IconIndex = 6;
62 | VX.Log.Error(this, $"Invalid comparison operator: {op}");
63 | return false;
64 | }
65 | }
66 |
67 | public bool ValidateResult(double ValueLeft, double ValueRight, Operator Operator)
68 | => Compare(Operator, ValueLeft, ValueRight);
69 |
70 | }
71 |
--------------------------------------------------------------------------------
/snippets/MeshStar.cs:
--------------------------------------------------------------------------------
1 | [VxDefaultValue(5, "JagCount")]
2 | [VxDefaultValue(1.0f, "Size")]
3 | [VxDefaultValue(0.6f, "Inner")]
4 | [VxNumeric(0.0f, float.MaxValue, 0.1f, "Size")]
5 | [VxNumeric(0.0f, 1.0f, 0.01f, "Inner")]
6 | [VxNumeric(2, 200, 1, "JagCount")]
7 | [VxDynamicIcon("Geo")]
8 | public class MeshStarVx : VxContentNode
9 | {
10 | public struct PS : IMeshResourceParameter
11 | {
12 | public int JagCount;
13 | public float Size;
14 | public float Inner;
15 |
16 | public IMesh GenerateMesh(IMeshFactory meshFactory)
17 | {
18 | // capture
19 | var _JagCount = JagCount;
20 | var _Size = Size;
21 | var _Inner = Inner;
22 |
23 | // coerse
24 | if ( _JagCount < 2 ) _JagCount = 2;
25 | if ( _Size < 0.0f ) _Size = 0.0f;
26 | if ( _Inner < 0.0f ) _Inner = 0.0f;
27 |
28 | var nVertices = 1 + _JagCount * 2; // centerpoint plus jags (inner and outer point)
29 | var nIndicies = _JagCount * 2 * 3;
30 |
31 | return meshFactory.CreateTriangleList(nVertices, nIndicies, (_v, _i) =>
32 | {
33 | unsafe
34 | {
35 | VertexPN* v = (VertexPN*)_v.ToPointer();
36 | ushort* i = (ushort*)_i.ToPointer();
37 |
38 |
39 | // last vertex is the center
40 | var center = (ushort)(nVertices - 1);
41 | v[center].nz = -1.0f;
42 |
43 | var jags = (ushort)(_JagCount * 2);
44 | var lastJag = (ushort)(jags - 1);
45 | var a = 360.0 / jags; // with 4 jags a is an 8th of a circle
46 | int f = 0;
47 | for ( ushort j = 0; j < jags; j++ )
48 | {
49 | var s = _Size;
50 |
51 | // odd items are inner
52 | if ( (j & 1) != 0 )
53 | s *= _Inner;
54 |
55 | var aa = a * j;
56 | v[j].px = (float)Math.Sin(aa / 180.0 * Math.PI) * s;
57 | v[j].py = (float)Math.Cos(aa / 180.0 * Math.PI) * s;
58 | v[j].nz = -1.0f;
59 |
60 | i[f++] = center;
61 | i[f++] = j;
62 | i[f++] = j == lastJag ? (ushort)0 : (ushort)(j + 1);
63 | }
64 | }
65 | });
66 | }
67 | }
68 |
69 | public IMesh ValidateGeo(int JagCount, float Size, float Inner)
70 | => VX.Resources.CreateMesh("Geo", new PS() { JagCount = JagCount, Size = Size, Inner = Inner });
71 | }
72 |
--------------------------------------------------------------------------------
/snippets/FloatArrayClip.cs:
--------------------------------------------------------------------------------
1 | public enum FilterModes
2 | {
3 | [VxFlagGroupItem(0, DisplayName = "Clip values to MinMax boundaries")]
4 | Clip = 0,
5 | [VxFlagGroupItem(0, DisplayName = "Only keep values in range [MinValue, Maxvalue]")]
6 | Filter = 1,
7 | [VxFlagGroupItem(0, DisplayName = "Only keep values in range ]MinValue, Maxvalue[")]
8 | FilterExclusive = 2,
9 | }
10 |
11 | [VxToolBox("ArrayClip", "Logic", "ArrayClip", null, false)]
12 | [VxCategory(0, "IN", false, "InputArray")]
13 | [VxCategory(1, "Range", false, "MinValue", "MaxValue")]
14 | [VxCategory(2, "Mode", false, "Filter")]
15 | [VxCategory(3, "OUT", false, "Clipped")]
16 | [VxDefaultValue(new float[] { 0.0f, 0.0f, 0.0f}, "InputArray")]
17 | [VxDefaultValue(0.0f, "MinValue")]
18 | [VxDefaultValue(10.0f, "MaxValue")]
19 | [VxDefaultValue(FilterModes.Clip, "Filter")]
20 | public class FloatArrayClip : VxContentNode
21 | {
22 | public float[] ValidateClipped(float[] InputArray, float MinValue, float MaxValue, FilterModes Filter)
23 | {
24 | if (InputArray == null)
25 | return null;
26 | if (InputArray.Length == 0)
27 | return new float[0];
28 |
29 | int len = InputArray.Length;
30 |
31 | if (Filter == FilterModes.Clip )
32 | {
33 | float[] outputArray = new float[len];
34 |
35 | if (Filter == FilterModes.Clip)
36 | {
37 | for (int i = 0; i < len; i++)
38 | {
39 | float v = InputArray[i];
40 | if (v >= MinValue && v <= MaxValue)
41 | outputArray[i] = v;
42 | else if (v < MinValue)
43 | outputArray[i] = MinValue;
44 | else if (v > MaxValue)
45 | outputArray[i] = MaxValue;
46 | }
47 | }
48 |
49 | return outputArray;
50 | }
51 | else
52 | {
53 | List outputList = new List(len);
54 |
55 | if (Filter == FilterModes.Filter)
56 | {
57 | for (int i = 0; i < len; i++)
58 | {
59 | float v = InputArray[i];
60 | if (v >= MinValue && v <= MaxValue)
61 | outputList.Add(v);
62 | }
63 | }
64 | else // FilterExclusive
65 | {
66 | for (int i = 0; i < len; i++)
67 | {
68 | float v = InputArray[i];
69 | if (v > MinValue && v < MaxValue)
70 | outputList.Add(v);
71 | }
72 | }
73 |
74 | return outputList.ToArray();
75 | }
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/examples/JsonQuery/JQuery.cs:
--------------------------------------------------------------------------------
1 | using Newtonsoft.Json.Linq;
2 | using Newtonsoft.Json;
3 | using System;
4 | using System.Collections.Generic;
5 | using System.ComponentModel;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 | using Ventuz.Extension;
10 |
11 | namespace RDVX
12 | {
13 | [VxToolBox("Json Query", "Data", "JQuery", "Selects Tokens from Json Strings and outputs them as array")]
14 | [VxHelpUrl("https://www.realtime-department.de", "Realtime Department Home Page")]
15 | [VxHelpUrl("https://www.newtonsoft.com/json/help/html/SelectToken.htm", "This Node uses \"Select Tokens\" as described here")]
16 | [VxIcon("NodeIcons.Data.Json")]
17 | [VxDescriptionAttribute("One or more queries as string or string array","Queries")]
18 | [VxDescriptionAttribute("The Json String to be parsed", "JsonString")]
19 | [VxDescriptionAttribute("Content of the parsed Tokens. Use Json Parser node to select the values", "JsonTokens")]
20 | [VxCategory("Json", "JsonString", "Queries","JsonTokens")]
21 | public class JsonQuery : VxContentNode
22 | {
23 | public JContainer Validate_JsonContainer(string JsonString)
24 | {
25 | JContainer parsedcontainer = null;
26 | if (JsonString.Trim()[0] == '[')
27 | {
28 | try
29 | {
30 | parsedcontainer = JArray.Parse(JsonString);
31 | }
32 | catch (Exception ex)
33 | {
34 | VX.Log.Error("JsonQuery", $"Could not parse Array", ex);
35 | }
36 | }
37 | if (JsonString.Trim()[0] == '{')
38 | {
39 | try
40 | {
41 | parsedcontainer = JObject.Parse(JsonString);
42 | }
43 | catch (Exception ex)
44 | {
45 | VX.Log.Error("JsonQuery", $"Could not parse Object", ex);
46 | }
47 | }
48 | return parsedcontainer;
49 | }
50 | public string ValidateJsonTokens(JContainer _JsonContainer, string[] Queries)
51 | {
52 | string outputJson = null;
53 | if (_JsonContainer != null && Queries != null && Queries.Any())
54 | {
55 | var outputlist = new Dictionary>();
56 |
57 | foreach (var propertyname in Queries)
58 | {
59 | var tokens = _JsonContainer.SelectTokens(propertyname, false);
60 | if (tokens != null && tokens.Any())
61 | {
62 | outputlist[propertyname] = _JsonContainer.SelectTokens(propertyname, false);
63 | }
64 | }
65 | if (outputlist.Any())
66 | {
67 | outputJson = JsonConvert.SerializeObject(outputlist);
68 | }
69 | }
70 | return outputJson;
71 | }
72 | }
73 | }
--------------------------------------------------------------------------------
/examples/StringCompress/StringCompress.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {8E9A2616-9D8D-4A81-8236-7DA69DA758F8}
8 | Library
9 | Properties
10 | Glare.VX
11 | StringCompress.vx
12 | v4.8
13 | 512
14 | true
15 |
16 |
17 | true
18 | full
19 | false
20 | C:\Users\rou\Documents\Ventuz6\Vx\StringCompress\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 | x64
25 |
26 |
27 | pdbonly
28 | true
29 | bin\Release\
30 | TRACE
31 | prompt
32 | 4
33 |
34 |
35 | true
36 | C:\Users\rou\Documents\Ventuz6\Vx\StringCompress\
37 | DEBUG;TRACE
38 | full
39 | x64
40 | 7.3
41 | prompt
42 |
43 |
44 | bin\x64\Release\
45 | TRACE
46 | true
47 | pdbonly
48 | x64
49 | 7.3
50 | prompt
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 | C:\Program Files\Ventuz Technology Group\Ventuz 6\Ventuz.Extension.dll
63 |
64 |
65 | C:\Program Files\Ventuz Technology Group\Ventuz 6\Ventuz.Kernel.dll
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 | "C:\Program Files\Ventuz Technology Group\Ventuz 6\Vx.exe" $(TargetPath)
79 |
80 |
--------------------------------------------------------------------------------
/examples/JsonQuery/JsonQuery.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {192747F5-70B4-4C73-AABB-A9028E4B432E}
8 | Library
9 | Properties
10 | RDVX
11 | JsonQuery.vx
12 | v4.8
13 | 512
14 | true
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | pdbonly
27 | true
28 | bin\Release\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 | true
35 | C:\Users\gielians\Documents\Ventuz6\Vx\JsonQuery\
36 | DEBUG;TRACE
37 | full
38 | x64
39 | 7.3
40 | prompt
41 |
42 |
43 | C:\Users\gielians\Documents\Ventuz6\Vx\JsonQuery\
44 | TRACE
45 | true
46 | none
47 | x64
48 | 7.3
49 | prompt
50 |
51 |
52 |
53 | False
54 | C:\Program Files\Ventuz Technology Group\Ventuz 6\Newtonsoft.Json.dll
55 | False
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 | C:\Program Files\Ventuz Technology Group\Ventuz 6\Ventuz.Extension.dll
67 | False
68 |
69 |
70 | C:\Program Files\Ventuz Technology Group\Ventuz 6\Ventuz.Kernel.dll
71 | False
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/examples/StringCompress/StringCompress.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using Ventuz.Extension;
7 | using System.IO;
8 | using System.IO.Compression;
9 |
10 | namespace Glare.VX
11 | {
12 | ///
13 | /// Compression Method
14 | ///
15 | public enum CompressionMethodEnum
16 | {
17 | ///
18 | /// No compression, used to disable compression.
19 | ///
20 | None,
21 |
22 | ///
23 | /// GZip compression
24 | ///
25 | GZip,
26 |
27 | ///
28 | /// Deflate algorithm
29 | ///
30 | Deflate
31 | }
32 |
33 | [VxCategories("Control", "Input", "Output")]
34 |
35 | [VxToolBox("String Compress VX", "Text", "Compress", "Compress a given string. The result is then base64-encoded.")]
36 | [VxIcon("NodeIcons.Logic.Expressions")]
37 |
38 | [VxDescriptionAttribute("The compression method to be used", "Method")]
39 | [VxCategory("Control", "Method")]
40 | [VxDefaultValue(Glare.VX.CompressionMethodEnum.GZip, "Method")]
41 |
42 | [VxDescriptionAttribute("The text that will be compressed", "Text")]
43 | [VxCategory("Input", "Text")]
44 |
45 | [VxCategory("Output", "Compressed")]
46 | [VxDescriptionAttribute("The compressed and then base64-encoded text", "Compressed")]
47 | public class StringCompress : VxContentNode
48 | {
49 | ///
50 | /// Compress a given string and then base64 encode it.
51 | ///
52 | /// The text to be compressed.
53 | /// The compression type to be used.
54 | /// A base64-encoded compressed version of
55 | protected string CompressString(string text, CompressionMethodEnum type)
56 | {
57 | // avoid compressing thin air
58 | if (string.IsNullOrEmpty(text)) return string.Empty;
59 |
60 | // not enabled
61 | if(type == CompressionMethodEnum.None) return text;
62 |
63 | try
64 | {
65 | byte[] buffer = Encoding.UTF8.GetBytes(text);
66 | var memoryStream = new MemoryStream();
67 |
68 | switch (type)
69 | {
70 | case CompressionMethodEnum.GZip:
71 | using (var gZipStream = new GZipStream(memoryStream, CompressionMode.Compress, true))
72 | {
73 | gZipStream.Write(buffer, 0, buffer.Length);
74 | }
75 | break;
76 | case CompressionMethodEnum.Deflate:
77 | using (var deflateStream = new DeflateStream(memoryStream, CompressionMode.Compress, true))
78 | {
79 | deflateStream.Write(buffer, 0, buffer.Length);
80 | }
81 | break;
82 | }
83 |
84 |
85 | memoryStream.Position = 0;
86 |
87 | var compressedData = new byte[memoryStream.Length];
88 | memoryStream.Read(compressedData, 0, compressedData.Length);
89 |
90 | var compressedBuffer = new byte[compressedData.Length + 4];
91 | Buffer.BlockCopy(compressedData, 0, compressedBuffer, 4, compressedData.Length);
92 | Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, compressedBuffer, 0, 4);
93 |
94 | return Convert.ToBase64String(compressedBuffer);
95 | }
96 | catch (Exception ex)
97 | {
98 | Ventuz.Extension.VX.Log.Error("Glare.VX.StringCompress", $"Could not compress string: {ex.Message}");
99 | return string.Empty;
100 | }
101 | }
102 |
103 | protected string ValidateCompressed(string Text, CompressionMethodEnum Method) => CompressString(Text, Method);
104 | }
105 |
106 | [VxCategories("Control", "Input", "Output")]
107 |
108 | [VxToolBox("String Decompress VX", "Text", "Decompress", "Base64-decode a given string and then decompress it.")]
109 | [VxIcon("NodeIcons.Logic.Expressions")]
110 |
111 | [VxDescriptionAttribute("The decompression method to be used", "Method")]
112 | [VxCategory("Control", "Method")]
113 | [VxDefaultValue(CompressionMethodEnum.GZip, "Method")]
114 |
115 | [VxDescriptionAttribute("The base64-encoded data that will be decompressed", "Compressed")]
116 | [VxCategory("Input", "Compressed")]
117 |
118 | [VxCategory("Output", "Text")]
119 | [VxDescriptionAttribute("The compressed and then base64-encoded text", "Text")]
120 | public class StringDecompress : VxContentNode
121 | {
122 | ///
123 | /// Base64-decode a gfiven string and then gzip-decompress it.
124 | ///
125 | /// The compressed and base64-encoded data.
126 | /// The decompressed text
127 | protected string DecompressString(string compressed, CompressionMethodEnum type)
128 | {
129 | // avoid compressing thin air
130 | if (string.IsNullOrEmpty(compressed)) return string.Empty;
131 |
132 | // not enabled
133 | if (type == CompressionMethodEnum.None) return compressed;
134 |
135 | try
136 | {
137 | byte[] rawBuffer = Convert.FromBase64String(compressed);
138 | using (var memoryStream = new MemoryStream())
139 | {
140 | int dataLength = BitConverter.ToInt32(rawBuffer, 0);
141 | memoryStream.Write(rawBuffer, 4, rawBuffer.Length - 4);
142 |
143 | var buffer = new byte[dataLength];
144 |
145 | memoryStream.Position = 0;
146 | switch (type)
147 | {
148 |
149 | case CompressionMethodEnum.GZip:
150 | using (var gZipStream = new GZipStream(memoryStream, CompressionMode.Decompress))
151 | {
152 | gZipStream.Read(buffer, 0, buffer.Length);
153 | }
154 | break;
155 |
156 | case CompressionMethodEnum.Deflate:
157 | using (var deflateStream = new DeflateStream(memoryStream, CompressionMode.Decompress))
158 | {
159 | deflateStream.Read(buffer, 0, buffer.Length);
160 | }
161 | break;
162 |
163 | }
164 |
165 |
166 | return Encoding.UTF8.GetString(buffer);
167 | }
168 | }
169 | catch (Exception ex)
170 | {
171 | Ventuz.Extension.VX.Log.Error("Glare.VX.StringDecompress", $"Could not decompress string: {ex.Message}");
172 | return string.Empty;
173 | }
174 | }
175 |
176 | protected string ValidateText(string Compressed, CompressionMethodEnum Method) => DecompressString(Compressed, Method);
177 | }
178 | }
179 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Mono auto generated files
17 | mono_crash.*
18 |
19 | # Build results
20 | [Dd]ebug/
21 | [Dd]ebugPublic/
22 | [Rr]elease/
23 | [Rr]eleases/
24 | x64/
25 | x86/
26 | [Aa][Rr][Mm]/
27 | [Aa][Rr][Mm]64/
28 | bld/
29 | [Bb]in/
30 | [Oo]bj/
31 | [Ll]og/
32 | [Ll]ogs/
33 |
34 | # Visual Studio 2015/2017 cache/options directory
35 | .vs/
36 | # Uncomment if you have tasks that create the project's static files in wwwroot
37 | #wwwroot/
38 |
39 | # Visual Studio 2017 auto generated files
40 | Generated\ Files/
41 |
42 | # MSTest test Results
43 | [Tt]est[Rr]esult*/
44 | [Bb]uild[Ll]og.*
45 |
46 | # NUnit
47 | *.VisualState.xml
48 | TestResult.xml
49 | nunit-*.xml
50 |
51 | # Build Results of an ATL Project
52 | [Dd]ebugPS/
53 | [Rr]eleasePS/
54 | dlldata.c
55 |
56 | # Benchmark Results
57 | BenchmarkDotNet.Artifacts/
58 |
59 | # .NET Core
60 | project.lock.json
61 | project.fragment.lock.json
62 | artifacts/
63 |
64 | # StyleCop
65 | StyleCopReport.xml
66 |
67 | # Files built by Visual Studio
68 | *_i.c
69 | *_p.c
70 | *_h.h
71 | *.ilk
72 | *.meta
73 | *.obj
74 | *.iobj
75 | *.pch
76 | *.pdb
77 | *.ipdb
78 | *.pgc
79 | *.pgd
80 | *.rsp
81 | *.sbr
82 | *.tlb
83 | *.tli
84 | *.tlh
85 | *.tmp
86 | *.tmp_proj
87 | *_wpftmp.csproj
88 | *.log
89 | *.vspscc
90 | *.vssscc
91 | .builds
92 | *.pidb
93 | *.svclog
94 | *.scc
95 |
96 | # Chutzpah Test files
97 | _Chutzpah*
98 |
99 | # Visual C++ cache files
100 | ipch/
101 | *.aps
102 | *.ncb
103 | *.opendb
104 | *.opensdf
105 | *.sdf
106 | *.cachefile
107 | *.VC.db
108 | *.VC.VC.opendb
109 |
110 | # Visual Studio profiler
111 | *.psess
112 | *.vsp
113 | *.vspx
114 | *.sap
115 |
116 | # Visual Studio Trace Files
117 | *.e2e
118 |
119 | # TFS 2012 Local Workspace
120 | $tf/
121 |
122 | # Guidance Automation Toolkit
123 | *.gpState
124 |
125 | # ReSharper is a .NET coding add-in
126 | _ReSharper*/
127 | *.[Rr]e[Ss]harper
128 | *.DotSettings.user
129 |
130 | # TeamCity is a build add-in
131 | _TeamCity*
132 |
133 | # DotCover is a Code Coverage Tool
134 | *.dotCover
135 |
136 | # AxoCover is a Code Coverage Tool
137 | .axoCover/*
138 | !.axoCover/settings.json
139 |
140 | # Visual Studio code coverage results
141 | *.coverage
142 | *.coveragexml
143 |
144 | # NCrunch
145 | _NCrunch_*
146 | .*crunch*.local.xml
147 | nCrunchTemp_*
148 |
149 | # MightyMoose
150 | *.mm.*
151 | AutoTest.Net/
152 |
153 | # Web workbench (sass)
154 | .sass-cache/
155 |
156 | # Installshield output folder
157 | [Ee]xpress/
158 |
159 | # DocProject is a documentation generator add-in
160 | DocProject/buildhelp/
161 | DocProject/Help/*.HxT
162 | DocProject/Help/*.HxC
163 | DocProject/Help/*.hhc
164 | DocProject/Help/*.hhk
165 | DocProject/Help/*.hhp
166 | DocProject/Help/Html2
167 | DocProject/Help/html
168 |
169 | # Click-Once directory
170 | publish/
171 |
172 | # Publish Web Output
173 | *.[Pp]ublish.xml
174 | *.azurePubxml
175 | # Note: Comment the next line if you want to checkin your web deploy settings,
176 | # but database connection strings (with potential passwords) will be unencrypted
177 | *.pubxml
178 | *.publishproj
179 |
180 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
181 | # checkin your Azure Web App publish settings, but sensitive information contained
182 | # in these scripts will be unencrypted
183 | PublishScripts/
184 |
185 | # NuGet Packages
186 | *.nupkg
187 | # NuGet Symbol Packages
188 | *.snupkg
189 | # The packages folder can be ignored because of Package Restore
190 | **/[Pp]ackages/*
191 | # except build/, which is used as an MSBuild target.
192 | !**/[Pp]ackages/build/
193 | # Uncomment if necessary however generally it will be regenerated when needed
194 | #!**/[Pp]ackages/repositories.config
195 | # NuGet v3's project.json files produces more ignorable files
196 | *.nuget.props
197 | *.nuget.targets
198 |
199 | # Microsoft Azure Build Output
200 | csx/
201 | *.build.csdef
202 |
203 | # Microsoft Azure Emulator
204 | ecf/
205 | rcf/
206 |
207 | # Windows Store app package directories and files
208 | AppPackages/
209 | BundleArtifacts/
210 | Package.StoreAssociation.xml
211 | _pkginfo.txt
212 | *.appx
213 | *.appxbundle
214 | *.appxupload
215 |
216 | # Visual Studio cache files
217 | # files ending in .cache can be ignored
218 | *.[Cc]ache
219 | # but keep track of directories ending in .cache
220 | !?*.[Cc]ache/
221 |
222 | # Others
223 | ClientBin/
224 | ~$*
225 | *~
226 | *.dbmdl
227 | *.dbproj.schemaview
228 | *.jfm
229 | *.pfx
230 | *.publishsettings
231 | orleans.codegen.cs
232 |
233 | # Including strong name files can present a security risk
234 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
235 | #*.snk
236 |
237 | # Since there are multiple workflows, uncomment next line to ignore bower_components
238 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
239 | #bower_components/
240 |
241 | # RIA/Silverlight projects
242 | Generated_Code/
243 |
244 | # Backup & report files from converting an old project file
245 | # to a newer Visual Studio version. Backup files are not needed,
246 | # because we have git ;-)
247 | _UpgradeReport_Files/
248 | Backup*/
249 | UpgradeLog*.XML
250 | UpgradeLog*.htm
251 | ServiceFabricBackup/
252 | *.rptproj.bak
253 |
254 | # SQL Server files
255 | *.mdf
256 | *.ldf
257 | *.ndf
258 |
259 | # Business Intelligence projects
260 | *.rdl.data
261 | *.bim.layout
262 | *.bim_*.settings
263 | *.rptproj.rsuser
264 | *- [Bb]ackup.rdl
265 | *- [Bb]ackup ([0-9]).rdl
266 | *- [Bb]ackup ([0-9][0-9]).rdl
267 |
268 | # Microsoft Fakes
269 | FakesAssemblies/
270 |
271 | # GhostDoc plugin setting file
272 | *.GhostDoc.xml
273 |
274 | # Node.js Tools for Visual Studio
275 | .ntvs_analysis.dat
276 | node_modules/
277 |
278 | # Visual Studio 6 build log
279 | *.plg
280 |
281 | # Visual Studio 6 workspace options file
282 | *.opt
283 |
284 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
285 | *.vbw
286 |
287 | # Visual Studio LightSwitch build output
288 | **/*.HTMLClient/GeneratedArtifacts
289 | **/*.DesktopClient/GeneratedArtifacts
290 | **/*.DesktopClient/ModelManifest.xml
291 | **/*.Server/GeneratedArtifacts
292 | **/*.Server/ModelManifest.xml
293 | _Pvt_Extensions
294 |
295 | # Paket dependency manager
296 | .paket/paket.exe
297 | paket-files/
298 |
299 | # FAKE - F# Make
300 | .fake/
301 |
302 | # CodeRush personal settings
303 | .cr/personal
304 |
305 | # Python Tools for Visual Studio (PTVS)
306 | __pycache__/
307 | *.pyc
308 |
309 | # Cake - Uncomment if you are using it
310 | # tools/**
311 | # !tools/packages.config
312 |
313 | # Tabs Studio
314 | *.tss
315 |
316 | # Telerik's JustMock configuration file
317 | *.jmconfig
318 |
319 | # BizTalk build output
320 | *.btp.cs
321 | *.btm.cs
322 | *.odx.cs
323 | *.xsd.cs
324 |
325 | # OpenCover UI analysis results
326 | OpenCover/
327 |
328 | # Azure Stream Analytics local run output
329 | ASALocalRun/
330 |
331 | # MSBuild Binary and Structured Log
332 | *.binlog
333 |
334 | # NVidia Nsight GPU debugger configuration file
335 | *.nvuser
336 |
337 | # MFractors (Xamarin productivity tool) working folder
338 | .mfractor/
339 |
340 | # Local History for Visual Studio
341 | .localhistory/
342 |
343 | # BeatPulse healthcheck temp database
344 | healthchecksdb
345 |
346 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
347 | MigrationBackup/
348 |
349 | # Ionide (cross platform F# VS Code tools) working folder
350 | .ionide/
351 |
--------------------------------------------------------------------------------
/examples/JsonQuery/.gitignore:
--------------------------------------------------------------------------------
1 | /[Ss]cenes.revisions/
2 | **/__HELP__/
3 |
4 |
5 |
6 | # File created using '.gitignore Generator' for Visual Studio Code: https://bit.ly/vscode-gig
7 |
8 | # Created by https://www.toptal.com/developers/gitignore/api/windows,visualstudiocode,aspnetcore,visualstudio
9 | # Edit at https://www.toptal.com/developers/gitignore?templates=windows,visualstudiocode,aspnetcore,visualstudio
10 |
11 | ### ASPNETCore ###
12 | ## Ignore Visual Studio temporary files, build results, and
13 | ## files generated by popular Visual Studio add-ons.
14 |
15 | # Other
16 | TODO.txt
17 | [Dd]ocumentation/[Ii]mages/*.mp4
18 |
19 | # User-specific files
20 | *.suo
21 | *.user
22 | *.userosscache
23 | *.sln.docstates
24 |
25 | # User-specific files (MonoDevelop/Xamarin Studio)
26 | *.userprefs
27 |
28 | # Build results
29 | [Dd]ebug/
30 | [Dd]ebugPublic/
31 | [Rr]elease/
32 | [Rr]eleases/
33 | x64/
34 | x86/
35 | bld/
36 | [Bb]in/
37 | [Oo]bj/
38 | [Ll]og/
39 |
40 | # Visual Studio 2015 cache/options directory
41 | .vs/
42 | # Uncomment if you have tasks that create the project's static files in wwwroot
43 | #wwwroot/
44 |
45 | # MSTest test Results
46 | [Tt]est[Rr]esult*/
47 | [Bb]uild[Ll]og.*
48 |
49 | # NUNIT
50 | *.VisualState.xml
51 | TestResult.xml
52 |
53 | # Build Results of an ATL Project
54 | [Dd]ebugPS/
55 | [Rr]eleasePS/
56 | dlldata.c
57 |
58 | # DNX
59 | project.lock.json
60 | project.fragment.lock.json
61 | artifacts/
62 |
63 | *_i.c
64 | *_p.c
65 | *_i.h
66 | *.ilk
67 | *.meta
68 | *.obj
69 | *.pch
70 | *.pdb
71 | *.pgc
72 | *.pgd
73 | *.rsp
74 | *.sbr
75 | *.tlb
76 | *.tli
77 | *.tlh
78 | *.tmp
79 | *.tmp_proj
80 | *.log
81 | *.vspscc
82 | *.vssscc
83 | .builds
84 | *.pidb
85 | *.svclog
86 | *.scc
87 |
88 | # Chutzpah Test files
89 | _Chutzpah*
90 |
91 | # Visual C++ cache files
92 | ipch/
93 | *.aps
94 | *.ncb
95 | *.opendb
96 | *.opensdf
97 | *.sdf
98 | *.cachefile
99 | *.VC.db
100 | *.VC.VC.opendb
101 |
102 | # Visual Studio profiler
103 | *.psess
104 | *.vsp
105 | *.vspx
106 | *.sap
107 |
108 | # TFS 2012 Local Workspace
109 | $tf/
110 |
111 | # Guidance Automation Toolkit
112 | *.gpState
113 |
114 | # ReSharper is a .NET coding add-in
115 | _ReSharper*/
116 | *.[Rr]e[Ss]harper
117 | *.DotSettings.user
118 |
119 | # JustCode is a .NET coding add-in
120 | .JustCode
121 |
122 | # TeamCity is a build add-in
123 | _TeamCity*
124 |
125 | # DotCover is a Code Coverage Tool
126 | *.dotCover
127 |
128 | # Visual Studio code coverage results
129 | *.coverage
130 | *.coveragexml
131 |
132 | # NCrunch
133 | _NCrunch_*
134 | .*crunch*.local.xml
135 | nCrunchTemp_*
136 |
137 | # MightyMoose
138 | *.mm.*
139 | AutoTest.Net/
140 |
141 | # Web workbench (sass)
142 | .sass-cache/
143 |
144 | # Installshield output folder
145 | [Ee]xpress/
146 |
147 | # DocProject is a documentation generator add-in
148 | DocProject/buildhelp/
149 | DocProject/Help/*.HxT
150 | DocProject/Help/*.HxC
151 | DocProject/Help/*.hhc
152 | DocProject/Help/*.hhk
153 | DocProject/Help/*.hhp
154 | DocProject/Help/Html2
155 | DocProject/Help/html
156 |
157 | # Click-Once directory
158 | publish/
159 |
160 | # Publish Web Output
161 | *.[Pp]ublish.xml
162 | *.azurePubxml
163 | # TODO: Comment the next line if you want to checkin your web deploy settings
164 | # but database connection strings (with potential passwords) will be unencrypted
165 | *.pubxml
166 | *.publishproj
167 |
168 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
169 | # checkin your Azure Web App publish settings, but sensitive information contained
170 | # in these scripts will be unencrypted
171 | PublishScripts/
172 |
173 | # NuGet Packages
174 | *.nupkg
175 | # The packages folder can be ignored because of Package Restore
176 | **/packages/*
177 | # except build/, which is used as an MSBuild target.
178 | !**/packages/build/
179 | # Uncomment if necessary however generally it will be regenerated when needed
180 | #!**/packages/repositories.config
181 | # NuGet v3's project.json files produces more ignoreable files
182 | *.nuget.props
183 | *.nuget.targets
184 |
185 | # Microsoft Azure Build Output
186 | csx/
187 | *.build.csdef
188 |
189 | # Microsoft Azure Emulator
190 | ecf/
191 | rcf/
192 |
193 | # Windows Store app package directories and files
194 | AppPackages/
195 | BundleArtifacts/
196 | Package.StoreAssociation.xml
197 | _pkginfo.txt
198 |
199 | # Visual Studio cache files
200 | # files ending in .cache can be ignored
201 | *.[Cc]ache
202 | # but keep track of directories ending in .cache
203 | !*.[Cc]ache/
204 |
205 | # Others
206 | ClientBin/
207 | ~$*
208 | *~
209 | *.dbmdl
210 | *.dbproj.schemaview
211 | *.jfm
212 | #*.pfx
213 | *.publishsettings
214 | node_modules/
215 | orleans.codegen.cs
216 |
217 | # Since there are multiple workflows, uncomment next line to ignore bower_components
218 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
219 | #bower_components/
220 |
221 | # RIA/Silverlight projects
222 | Generated_Code/
223 |
224 | # Backup & report files from converting an old project file
225 | # to a newer Visual Studio version. Backup files are not needed,
226 | # because we have git ;-)
227 | _UpgradeReport_Files/
228 | Backup*/
229 | UpgradeLog*.XML
230 | UpgradeLog*.htm
231 |
232 | # SQL Server files
233 | *.mdf
234 | *.ldf
235 |
236 | # Business Intelligence projects
237 | *.rdl.data
238 | *.bim.layout
239 | *.bim_*.settings
240 |
241 | # Microsoft Fakes
242 | FakesAssemblies/
243 |
244 | # GhostDoc plugin setting file
245 | *.GhostDoc.xml
246 |
247 | # Node.js Tools for Visual Studio
248 | .ntvs_analysis.dat
249 |
250 | # Visual Studio 6 build log
251 | *.plg
252 |
253 | # Visual Studio 6 workspace options file
254 | *.opt
255 |
256 | # Visual Studio LightSwitch build output
257 | **/*.HTMLClient/GeneratedArtifacts
258 | **/*.DesktopClient/GeneratedArtifacts
259 | **/*.DesktopClient/ModelManifest.xml
260 | **/*.Server/GeneratedArtifacts
261 | **/*.Server/ModelManifest.xml
262 | _Pvt_Extensions
263 |
264 | # Paket dependency manager
265 | .paket/paket.exe
266 | paket-files/
267 |
268 | # FAKE - F# Make
269 | .fake/
270 |
271 | # JetBrains Rider
272 | .idea/
273 | *.sln.iml
274 |
275 | # CodeRush
276 | .cr/
277 |
278 | # Python Tools for Visual Studio (PTVS)
279 | __pycache__/
280 | *.pyc
281 |
282 | # Cake - Uncomment if you are using it
283 | # tools/
284 |
285 | ### VisualStudioCode ###
286 | .vscode/*
287 | !.vscode/settings.json
288 | !.vscode/tasks.json
289 | !.vscode/launch.json
290 | !.vscode/extensions.json
291 | *.code-workspace
292 |
293 | ### VisualStudioCode Patch ###
294 | # Ignore all local history of files
295 | .history
296 |
297 | ### Windows ###
298 | # Windows thumbnail cache files
299 | Thumbs.db
300 | Thumbs.db:encryptable
301 | ehthumbs.db
302 | ehthumbs_vista.db
303 |
304 | # Dump file
305 | *.stackdump
306 |
307 | # Folder config file
308 | [Dd]esktop.ini
309 |
310 | # Recycle Bin used on file shares
311 | $RECYCLE.BIN/
312 |
313 | # Windows Installer files
314 | *.cab
315 | *.msi
316 | *.msix
317 | *.msm
318 | *.msp
319 |
320 | # Windows shortcuts
321 | *.lnk
322 |
323 | ### VisualStudio ###
324 | ##
325 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
326 |
327 | # User-specific files
328 | *.rsuser
329 |
330 | # User-specific files (MonoDevelop/Xamarin Studio)
331 |
332 | # Mono auto generated files
333 | mono_crash.*
334 |
335 | # Build results
336 | [Aa][Rr][Mm]/
337 | [Aa][Rr][Mm]64/
338 | [Ll]ogs/
339 |
340 | # Visual Studio 2015/2017 cache/options directory
341 | # Uncomment if you have tasks that create the project's static files in wwwroot
342 |
343 | # Visual Studio 2017 auto generated files
344 | Generated\ Files/
345 |
346 | # MSTest test Results
347 |
348 | # NUnit
349 | nunit-*.xml
350 |
351 | # Build Results of an ATL Project
352 |
353 | # Benchmark Results
354 | BenchmarkDotNet.Artifacts/
355 |
356 | # .NET Core
357 |
358 | # StyleCop
359 | StyleCopReport.xml
360 |
361 | # Files built by Visual Studio
362 | *_h.h
363 | *.iobj
364 | *.ipdb
365 | *_wpftmp.csproj
366 |
367 | # Chutzpah Test files
368 |
369 | # Visual C++ cache files
370 |
371 | # Visual Studio profiler
372 |
373 | # Visual Studio Trace Files
374 | *.e2e
375 |
376 | # TFS 2012 Local Workspace
377 |
378 | # Guidance Automation Toolkit
379 |
380 | # ReSharper is a .NET coding add-in
381 |
382 | # TeamCity is a build add-in
383 |
384 | # DotCover is a Code Coverage Tool
385 |
386 | # AxoCover is a Code Coverage Tool
387 | .axoCover/*
388 | !.axoCover/settings.json
389 |
390 | # Coverlet is a free, cross platform Code Coverage Tool
391 | coverage*[.json, .xml, .info]
392 |
393 | # Visual Studio code coverage results
394 |
395 | # NCrunch
396 |
397 | # MightyMoose
398 |
399 | # Web workbench (sass)
400 |
401 | # Installshield output folder
402 |
403 | # DocProject is a documentation generator add-in
404 |
405 | # Click-Once directory
406 |
407 | # Publish Web Output
408 | # Note: Comment the next line if you want to checkin your web deploy settings,
409 | # but database connection strings (with potential passwords) will be unencrypted
410 |
411 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
412 | # checkin your Azure Web App publish settings, but sensitive information contained
413 | # in these scripts will be unencrypted
414 |
415 | # NuGet Packages
416 | # NuGet Symbol Packages
417 | *.snupkg
418 | # The packages folder can be ignored because of Package Restore
419 | **/[Pp]ackages/*
420 | # except build/, which is used as an MSBuild target.
421 | !**/[Pp]ackages/build/
422 | # Uncomment if necessary however generally it will be regenerated when needed
423 | #!**/[Pp]ackages/repositories.config
424 | # NuGet v3's project.json files produces more ignorable files
425 |
426 | # Microsoft Azure Build Output
427 |
428 | # Microsoft Azure Emulator
429 |
430 | # Windows Store app package directories and files
431 | *.appx
432 | *.appxbundle
433 | *.appxupload
434 |
435 | # Visual Studio cache files
436 | # files ending in .cache can be ignored
437 | # but keep track of directories ending in .cache
438 | !?*.[Cc]ache/
439 |
440 | # Others
441 |
442 | # Including strong name files can present a security risk
443 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
444 | #*.snk
445 |
446 | # Since there are multiple workflows, uncomment next line to ignore bower_components
447 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
448 |
449 | # RIA/Silverlight projects
450 |
451 | # Backup & report files from converting an old project file
452 | # to a newer Visual Studio version. Backup files are not needed,
453 | # because we have git ;-)
454 | ServiceFabricBackup/
455 | *.rptproj.bak
456 |
457 | # SQL Server files
458 | *.ndf
459 |
460 | # Business Intelligence projects
461 | *.rptproj.rsuser
462 | *- [Bb]ackup.rdl
463 | *- [Bb]ackup ([0-9]).rdl
464 | *- [Bb]ackup ([0-9][0-9]).rdl
465 |
466 | # Microsoft Fakes
467 |
468 | # GhostDoc plugin setting file
469 |
470 | # Node.js Tools for Visual Studio
471 |
472 | # Visual Studio 6 build log
473 |
474 | # Visual Studio 6 workspace options file
475 |
476 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
477 | *.vbw
478 |
479 | # Visual Studio LightSwitch build output
480 |
481 | # Paket dependency manager
482 |
483 | # FAKE - F# Make
484 |
485 | # CodeRush personal settings
486 | .cr/personal
487 |
488 | # Python Tools for Visual Studio (PTVS)
489 |
490 | # Cake - Uncomment if you are using it
491 | # tools/**
492 | # !tools/packages.config
493 |
494 | # Tabs Studio
495 | *.tss
496 |
497 | # Telerik's JustMock configuration file
498 | *.jmconfig
499 |
500 | # BizTalk build output
501 | *.btp.cs
502 | *.btm.cs
503 | *.odx.cs
504 | *.xsd.cs
505 |
506 | # OpenCover UI analysis results
507 | OpenCover/
508 |
509 | # Azure Stream Analytics local run output
510 | ASALocalRun/
511 |
512 | # MSBuild Binary and Structured Log
513 | *.binlog
514 |
515 | # NVidia Nsight GPU debugger configuration file
516 | *.nvuser
517 |
518 | # MFractors (Xamarin productivity tool) working folder
519 | .mfractor/
520 |
521 | # Local History for Visual Studio
522 | .localhistory/
523 |
524 | # BeatPulse healthcheck temp database
525 | healthchecksdb
526 |
527 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
528 | MigrationBackup/
529 |
530 | # Ionide (cross platform F# VS Code tools) working folder
531 | .ionide/
532 |
533 | # End of https://www.toptal.com/developers/gitignore/api/windows,visualstudiocode,aspnetcore,visualstudio
534 | *.DS_Store
535 |
--------------------------------------------------------------------------------