uCalc API Version: 2.1.3-preview.2 Released: 6/16/2026
Warning
uCalc API Preview Release Notice:The documentation describes the intended behavior of the API. The current preview build contains incomplete features, unoptimized performance, and is subject to breaking changes.
Description = [string]
Property
Product:
Class:
Gets or sets a user-defined text description for the Transformer instance, useful for identifying or documenting different transformation configurations.
Remarks
🏷️ Attaching Metadata to Transformers
The Description property provides a way to attach an arbitrary string of metadata to a Transformer instance. This is invaluable for debugging complex transformation pipelines, creating self-documenting configurations, and identifying specific transformers at runtime.
⚙️ Getter and Setter Behavior
This property functions as both a getter and a setter:
Getter: When called with no arguments,
myTransformer.Descriptionreturns the current description of the transformer. If no description has been set, it returns an empty string.Setter:
myTransformer.Description = "your text"sets the transformer's description.SetDescription("your text")as a method supports a fluent interface, meaning it returns theTransformerobject itself, allowing you to chain method calls.
🎯 Core Use Cases
Attaching a description is a best practice for managing multiple or complex transformer instances.
Debugging: When an application uses multiple transformers for different purposes (e.g., one for sanitizing input, another for formatting output), you can print the
Descriptionof the active transformer to immediately understand which set of lexical rules is being applied.Self-Documentation: Store a human-readable note directly on the transformer to explain its role, such as "Markdown to HTML Converter" or "SQL Injection Sanitizer". This keeps the documentation tightly coupled with the object it describes.
Runtime Identification: Use descriptions to programmatically identify specific transformer configurations. For example, you could iterate through a collection of transformers and select one based on its description.
💡 Why uCalc? (Comparative Analysis)
Without an integrated Description property, developers often resort to less ideal solutions for tracking metadata:
vs. Code Comments: Standard code comments are static and cannot be accessed by the program at runtime. A
Transformer's description is dynamic data that can be queried, displayed, or used in application logic.vs. External Dictionaries: Managing an external dictionary (e.g.,
Dictionary<Transformer, string>) to map transformers to their descriptions is cumbersome. It requires manual synchronization, and if aTransformerobject is released, the dictionary entry can become a memory leak. uCalc's integrated approach is safer, cleaner, and more efficient.
The Description property is a consistent feature across many uCalc objects, including Rule, Item, and the main uCalc instance, providing a unified system for metadata management.
Examples
A basic example demonstrating how to set and get a description for a Transformer.
using uCalcSoftware;
var uc = new uCalc();
var t = new uCalc.Transformer();
t.Description = "My First Transformer";
Console.WriteLine($"Transformer Description: {t.Description}");
Transformer Description: My First Transformer using uCalcSoftware; var uc = new uCalc(); var t = new uCalc.Transformer(); t.Description = "My First Transformer"; Console.WriteLine($"Transformer Description: {t.Description}");
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
int main() {
uCalc uc;
uCalc::Transformer t;
t.Description("My First Transformer");
cout << "Transformer Description: " << t.Description() << endl;
}
Transformer Description: My First Transformer #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; int main() { uCalc uc; uCalc::Transformer t; t.Description("My First Transformer"); cout << "Transformer Description: " << t.Description() << endl; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
Dim t As New uCalc.Transformer()
t.Description = "My First Transformer"
Console.WriteLine($"Transformer Description: {t.Description}")
End Sub
End Module
Transformer Description: My First Transformer Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() Dim t As New uCalc.Transformer() t.Description = "My First Transformer" Console.WriteLine($"Transformer Description: {t.Description}") End Sub End Module
Uses descriptions to differentiate between two transformers used for different environments, such as a verbose 'debug' transformer and a silent 'production' one.
using uCalcSoftware;
var uc = new uCalc();
var text = "The value is x";
// 1. Setup Debug Transformer
var t_debug = new uCalc.Transformer();
t_debug.Description = "Debug Transformer (Verbose)";
t_debug.FromTo("x", "100 // debug value");
// 2. Setup Production Transformer
var t_prod = new uCalc.Transformer();
t_prod.Description = "Production Transformer (Clean)";
t_prod.FromTo("x", "100");
Console.WriteLine($"{t_debug.Description}: {t_debug.Transform(text)}");
Console.WriteLine($"{t_prod.Description}: {t_prod.Transform(text)}");
Debug Transformer (Verbose): The value is 100 // debug value
Production Transformer (Clean): The value is 100 using uCalcSoftware; var uc = new uCalc(); var text = "The value is x"; // 1. Setup Debug Transformer var t_debug = new uCalc.Transformer(); t_debug.Description = "Debug Transformer (Verbose)"; t_debug.FromTo("x", "100 // debug value"); // 2. Setup Production Transformer var t_prod = new uCalc.Transformer(); t_prod.Description = "Production Transformer (Clean)"; t_prod.FromTo("x", "100"); Console.WriteLine($"{t_debug.Description}: {t_debug.Transform(text)}"); Console.WriteLine($"{t_prod.Description}: {t_prod.Transform(text)}");
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
int main() {
uCalc uc;
auto text = "The value is x";
// 1. Setup Debug Transformer
uCalc::Transformer t_debug;
t_debug.Description("Debug Transformer (Verbose)");
t_debug.FromTo("x", "100 // debug value");
// 2. Setup Production Transformer
uCalc::Transformer t_prod;
t_prod.Description("Production Transformer (Clean)");
t_prod.FromTo("x", "100");
cout << t_debug.Description() << ": " << t_debug.Transform(text) << endl;
cout << t_prod.Description() << ": " << t_prod.Transform(text) << endl;
}
Debug Transformer (Verbose): The value is 100 // debug value
Production Transformer (Clean): The value is 100 #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; int main() { uCalc uc; auto text = "The value is x"; // 1. Setup Debug Transformer uCalc::Transformer t_debug; t_debug.Description("Debug Transformer (Verbose)"); t_debug.FromTo("x", "100 // debug value"); // 2. Setup Production Transformer uCalc::Transformer t_prod; t_prod.Description("Production Transformer (Clean)"); t_prod.FromTo("x", "100"); cout << t_debug.Description() << ": " << t_debug.Transform(text) << endl; cout << t_prod.Description() << ": " << t_prod.Transform(text) << endl; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
Dim text = "The value is x"
'// 1. Setup Debug Transformer
Dim t_debug As New uCalc.Transformer()
t_debug.Description = "Debug Transformer (Verbose)"
t_debug.FromTo("x", "100 // debug value")
'// 2. Setup Production Transformer
Dim t_prod As New uCalc.Transformer()
t_prod.Description = "Production Transformer (Clean)"
t_prod.FromTo("x", "100")
Console.WriteLine($"{t_debug.Description}: {t_debug.Transform(text)}")
Console.WriteLine($"{t_prod.Description}: {t_prod.Transform(text)}")
End Sub
End Module
Debug Transformer (Verbose): The value is 100 // debug value
Production Transformer (Clean): The value is 100 Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() Dim text = "The value is x" '// 1. Setup Debug Transformer Dim t_debug As New uCalc.Transformer() t_debug.Description = "Debug Transformer (Verbose)" t_debug.FromTo("x", "100 // debug value") '// 2. Setup Production Transformer Dim t_prod As New uCalc.Transformer() t_prod.Description = "Production Transformer (Clean)" t_prod.FromTo("x", "100") Console.WriteLine($"{t_debug.Description}: {t_debug.Transform(text)}") Console.WriteLine($"{t_prod.Description}: {t_prod.Transform(text)}") End Sub End Module
Internal Test: Verifies that the description property is correctly copied when a Transformer is cloned.
using uCalcSoftware;
var uc = new uCalc();
var t_original = new uCalc.Transformer();
t_original.Description = "Original Transformer";
// Clone the transformer
var t_cloned = t_original.Clone();
Console.WriteLine($"Original Description: {t_original.Description}");
Console.WriteLine($"Cloned Description: {t_cloned.Description}");
// Modify the clone's description to ensure they are independent
t_cloned.Description = "Cloned and Modified";
Console.WriteLine($"Original after mod: {t_original.Description}");
Console.WriteLine($"Cloned after mod: {t_cloned.Description}");
Original Description: Original Transformer
Cloned Description: Original Transformer
Original after mod: Original Transformer
Cloned after mod: Cloned and Modified using uCalcSoftware; var uc = new uCalc(); var t_original = new uCalc.Transformer(); t_original.Description = "Original Transformer"; // Clone the transformer var t_cloned = t_original.Clone(); Console.WriteLine($"Original Description: {t_original.Description}"); Console.WriteLine($"Cloned Description: {t_cloned.Description}"); // Modify the clone's description to ensure they are independent t_cloned.Description = "Cloned and Modified"; Console.WriteLine($"Original after mod: {t_original.Description}"); Console.WriteLine($"Cloned after mod: {t_cloned.Description}");
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
int main() {
uCalc uc;
uCalc::Transformer t_original;
t_original.Description("Original Transformer");
// Clone the transformer
auto t_cloned = t_original.Clone();
cout << "Original Description: " << t_original.Description() << endl;
cout << "Cloned Description: " << t_cloned.Description() << endl;
// Modify the clone's description to ensure they are independent
t_cloned.Description("Cloned and Modified");
cout << "Original after mod: " << t_original.Description() << endl;
cout << "Cloned after mod: " << t_cloned.Description() << endl;
}
Original Description: Original Transformer
Cloned Description: Original Transformer
Original after mod: Original Transformer
Cloned after mod: Cloned and Modified #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; int main() { uCalc uc; uCalc::Transformer t_original; t_original.Description("Original Transformer"); // Clone the transformer auto t_cloned = t_original.Clone(); cout << "Original Description: " << t_original.Description() << endl; cout << "Cloned Description: " << t_cloned.Description() << endl; // Modify the clone's description to ensure they are independent t_cloned.Description("Cloned and Modified"); cout << "Original after mod: " << t_original.Description() << endl; cout << "Cloned after mod: " << t_cloned.Description() << endl; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
Dim t_original As New uCalc.Transformer()
t_original.Description = "Original Transformer"
'// Clone the transformer
Dim t_cloned = t_original.Clone()
Console.WriteLine($"Original Description: {t_original.Description}")
Console.WriteLine($"Cloned Description: {t_cloned.Description}")
'// Modify the clone's description to ensure they are independent
t_cloned.Description = "Cloned and Modified"
Console.WriteLine($"Original after mod: {t_original.Description}")
Console.WriteLine($"Cloned after mod: {t_cloned.Description}")
End Sub
End Module
Original Description: Original Transformer
Cloned Description: Original Transformer
Original after mod: Original Transformer
Cloned after mod: Cloned and Modified Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() Dim t_original As New uCalc.Transformer() t_original.Description = "Original Transformer" '// Clone the transformer Dim t_cloned = t_original.Clone() Console.WriteLine($"Original Description: {t_original.Description}") Console.WriteLine($"Cloned Description: {t_cloned.Description}") '// Modify the clone's description to ensure they are independent t_cloned.Description = "Cloned and Modified" Console.WriteLine($"Original after mod: {t_original.Description}") Console.WriteLine($"Cloned after mod: {t_cloned.Description}") End Sub End Module
ParentTransformer
using uCalcSoftware;
var uc = new uCalc();
var Txt = "Test a b c. x y z";
var FirstTransform = uc.NewTransformer().SetText(Txt).SetDescription("First Transformer");
var aaa = FirstTransform.FromTo("Test {etc}.", "[{etc}]");
var SecondTransform = uc.NewTransformer().SetDescription("Second Transformer");
var bbb = SecondTransform.FromTo("Test {etc}.", "({etc})");
Console.WriteLine(aaa.ParentTransformer.Description);
Console.WriteLine(FirstTransform.Transform().Text);
Console.WriteLine("");
Console.WriteLine(SecondTransform.Description);
Console.WriteLine(bbb.ParentTransformer.Transform(Txt).Text);
First Transformer
[a b c] x y z
Second Transformer
(a b c) x y z using uCalcSoftware; var uc = new uCalc(); var Txt = "Test a b c. x y z"; var FirstTransform = uc.NewTransformer().SetText(Txt).SetDescription("First Transformer"); var aaa = FirstTransform.FromTo("Test {etc}.", "[{etc}]"); var SecondTransform = uc.NewTransformer().SetDescription("Second Transformer"); var bbb = SecondTransform.FromTo("Test {etc}.", "({etc})"); Console.WriteLine(aaa.ParentTransformer.Description); Console.WriteLine(FirstTransform.Transform().Text); Console.WriteLine(""); Console.WriteLine(SecondTransform.Description); Console.WriteLine(bbb.ParentTransformer.Transform(Txt).Text);
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
int main() {
uCalc uc;
auto Txt = "Test a b c. x y z";
auto FirstTransform = uc.NewTransformer().SetText(Txt).SetDescription("First Transformer");
auto aaa = FirstTransform.FromTo("Test {etc}.", "[{etc}]");
auto SecondTransform = uc.NewTransformer().SetDescription("Second Transformer");
auto bbb = SecondTransform.FromTo("Test {etc}.", "({etc})");
cout << aaa.ParentTransformer().Description() << endl;
cout << FirstTransform.Transform().Text() << endl;
cout << "" << endl;
cout << SecondTransform.Description() << endl;
cout << bbb.ParentTransformer().Transform(Txt).Text() << endl;
}
First Transformer
[a b c] x y z
Second Transformer
(a b c) x y z #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; int main() { uCalc uc; auto Txt = "Test a b c. x y z"; auto FirstTransform = uc.NewTransformer().SetText(Txt).SetDescription("First Transformer"); auto aaa = FirstTransform.FromTo("Test {etc}.", "[{etc}]"); auto SecondTransform = uc.NewTransformer().SetDescription("Second Transformer"); auto bbb = SecondTransform.FromTo("Test {etc}.", "({etc})"); cout << aaa.ParentTransformer().Description() << endl; cout << FirstTransform.Transform().Text() << endl; cout << "" << endl; cout << SecondTransform.Description() << endl; cout << bbb.ParentTransformer().Transform(Txt).Text() << endl; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
Dim Txt = "Test a b c. x y z"
Dim FirstTransform = uc.NewTransformer().SetText(Txt).SetDescription("First Transformer")
Dim aaa = FirstTransform.FromTo("Test {etc}.", "[{etc}]")
Dim SecondTransform = uc.NewTransformer().SetDescription("Second Transformer")
Dim bbb = SecondTransform.FromTo("Test {etc}.", "({etc})")
Console.WriteLine(aaa.ParentTransformer.Description)
Console.WriteLine(FirstTransform.Transform().Text)
Console.WriteLine("")
Console.WriteLine(SecondTransform.Description)
Console.WriteLine(bbb.ParentTransformer.Transform(Txt).Text)
End Sub
End Module
First Transformer
[a b c] x y z
Second Transformer
(a b c) x y z Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() Dim Txt = "Test a b c. x y z" Dim FirstTransform = uc.NewTransformer().SetText(Txt).SetDescription("First Transformer") Dim aaa = FirstTransform.FromTo("Test {etc}.", "[{etc}]") Dim SecondTransform = uc.NewTransformer().SetDescription("Second Transformer") Dim bbb = SecondTransform.FromTo("Test {etc}.", "({etc})") Console.WriteLine(aaa.ParentTransformer.Description) Console.WriteLine(FirstTransform.Transform().Text) Console.WriteLine("") Console.WriteLine(SecondTransform.Description) Console.WriteLine(bbb.ParentTransformer.Transform(Txt).Text) End Sub End Module
Pass()
using uCalcSoftware;
var uc = new uCalc();
var FruitsXML =
"""
""";
var t = uc.NewTransformer();
t.Text = FruitsXML;
var Pass1 = t.Pass();
var Pass2 = t.Pass();
Pass1.Description = "Pass A";
Pass1.FromTo("Fruits", "ListOfFruits");
Pass1.FromTo(" ", "{name} ");
Pass2.Description = "Pass B";
Pass2.FromTo("{Fruit: Apple | Orange | Mango }", "{Fruit} *");
Pass2.FromTo("{Fruit: Banana | Grapes | Watermelon }", "{Fruit} **");
t.Transform();
Console.WriteLine("All passes");
Console.WriteLine("----------");
Console.WriteLine(t.Text);
Console.WriteLine(t.Pass(0).Description);
Console.WriteLine(t.Pass(1).Description);
Console.WriteLine($"Pass count: {t.PassCount()}");
Console.WriteLine("");
t.Str(FruitsXML);
Pass2.Release();
t.Transform();
Console.WriteLine("Pass1 only (Pass2 released)");
Console.WriteLine("---------------------------");
Console.WriteLine(t.Text);
All passes
----------
<ListOfFruits>
<Fruit>Apple *</Fruit>
<Fruit>Banana **</Fruit>
<Fruit>Orange *</Fruit>
<Fruit>Grapes **</Fruit>
<Fruit>Strawberry</Fruit>
<Fruit>Pineapple</Fruit>
<Fruit>Mango *</Fruit>
<Fruit>Blueberry</Fruit>
<Fruit>Rambutan</Fruit>
<Fruit>Salak (Snake Fruit)</Fruit>
<Fruit>Jabuticaba</Fruit>
<Fruit>Watermelon **</Fruit>
</ListOfFruits>
Pass A
Pass B
Pass count: 2
Pass1 only (Pass2 released)
---------------------------
<ListOfFruits>
<Fruit>Apple</Fruit>
<Fruit>Banana</Fruit>
<Fruit>Orange</Fruit>
<Fruit>Grapes</Fruit>
<Fruit>Strawberry</Fruit>
<Fruit>Pineapple</Fruit>
<Fruit>Mango</Fruit>
<Fruit>Blueberry</Fruit>
<Fruit>Rambutan</Fruit>
<Fruit>Salak (Snake Fruit)</Fruit>
<Fruit>Jabuticaba</Fruit>
<Fruit>Watermelon</Fruit>
</ListOfFruits> using uCalcSoftware; var uc = new uCalc(); var FruitsXML = """ <Fruits> <Fruit CommonName='Apple' ScientificName='Malus domestica' /> <Fruit CommonName='Banana' ScientificName='Musa acuminata' /> <Fruit CommonName='Orange' ScientificName='Citrus × sinensis' /> <Fruit CommonName='Grapes' ScientificName='Vitis vinifera' /> <Fruit CommonName='Strawberry' ScientificName='Fragaria × ananassa' /> <Fruit CommonName='Pineapple' ScientificName='Ananas comosus' /> <Fruit CommonName='Mango' ScientificName='Mangifera indica' /> <Fruit CommonName='Blueberry' ScientificName='Vaccinium corymbosum' /> <Fruit CommonName='Rambutan' ScientificName='Nephelium lappaceum' /> <Fruit CommonName='Salak (Snake Fruit)' ScientificName='Salacca zalacca' /> <Fruit CommonName='Jabuticaba' ScientificName='Plinia cauliflora' /> <Fruit CommonName='Watermelon' ScientificName='Citrullus lanatus' /> </Fruits> """; var t = uc.NewTransformer(); t.Text = FruitsXML; var Pass1 = t.Pass(); var Pass2 = t.Pass(); Pass1.Description = "Pass A"; Pass1.FromTo("Fruits", "ListOfFruits"); Pass1.FromTo("<Fruit CommonName={@str:name} ScientificName={@str:sci_name} />", "<Fruit>{name}</Fruit>"); Pass2.Description = "Pass B"; Pass2.FromTo("{Fruit: Apple | Orange | Mango }", "{Fruit} *"); Pass2.FromTo("{Fruit: Banana | Grapes | Watermelon }", "{Fruit} **"); t.Transform(); Console.WriteLine("All passes"); Console.WriteLine("----------"); Console.WriteLine(t.Text); Console.WriteLine(t.Pass(0).Description); Console.WriteLine(t.Pass(1).Description); Console.WriteLine($"Pass count: {t.PassCount()}"); Console.WriteLine(""); t.Str(FruitsXML); Pass2.Release(); t.Transform(); Console.WriteLine("Pass1 only (Pass2 released)"); Console.WriteLine("---------------------------"); Console.WriteLine(t.Text);
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
int main() {
uCalc uc;
auto FruitsXML =
R"(
)";
auto t = uc.NewTransformer();
t.Text(FruitsXML);
auto Pass1 = t.Pass();
auto Pass2 = t.Pass();
Pass1.Description("Pass A");
Pass1.FromTo("Fruits", "ListOfFruits");
Pass1.FromTo(" ", "{name} ");
Pass2.Description("Pass B");
Pass2.FromTo("{Fruit: Apple | Orange | Mango }", "{Fruit} *");
Pass2.FromTo("{Fruit: Banana | Grapes | Watermelon }", "{Fruit} **");
t.Transform();
cout << "All passes" << endl;
cout << "----------" << endl;
cout << t.Text() << endl;
cout << t.Pass(0).Description() << endl;
cout << t.Pass(1).Description() << endl;
cout << "Pass count: " << t.PassCount() << endl;
cout << "" << endl;
t.Str(FruitsXML);
Pass2.Release();
t.Transform();
cout << "Pass1 only (Pass2 released)" << endl;
cout << "---------------------------" << endl;
cout << t.Text() << endl;
}
All passes
----------
<ListOfFruits>
<Fruit>Apple *</Fruit>
<Fruit>Banana **</Fruit>
<Fruit>Orange *</Fruit>
<Fruit>Grapes **</Fruit>
<Fruit>Strawberry</Fruit>
<Fruit>Pineapple</Fruit>
<Fruit>Mango *</Fruit>
<Fruit>Blueberry</Fruit>
<Fruit>Rambutan</Fruit>
<Fruit>Salak (Snake Fruit)</Fruit>
<Fruit>Jabuticaba</Fruit>
<Fruit>Watermelon **</Fruit>
</ListOfFruits>
Pass A
Pass B
Pass count: 2
Pass1 only (Pass2 released)
---------------------------
<ListOfFruits>
<Fruit>Apple</Fruit>
<Fruit>Banana</Fruit>
<Fruit>Orange</Fruit>
<Fruit>Grapes</Fruit>
<Fruit>Strawberry</Fruit>
<Fruit>Pineapple</Fruit>
<Fruit>Mango</Fruit>
<Fruit>Blueberry</Fruit>
<Fruit>Rambutan</Fruit>
<Fruit>Salak (Snake Fruit)</Fruit>
<Fruit>Jabuticaba</Fruit>
<Fruit>Watermelon</Fruit>
</ListOfFruits> #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; int main() { uCalc uc; auto FruitsXML = R"( <Fruits> <Fruit CommonName='Apple' ScientificName='Malus domestica' /> <Fruit CommonName='Banana' ScientificName='Musa acuminata' /> <Fruit CommonName='Orange' ScientificName='Citrus × sinensis' /> <Fruit CommonName='Grapes' ScientificName='Vitis vinifera' /> <Fruit CommonName='Strawberry' ScientificName='Fragaria × ananassa' /> <Fruit CommonName='Pineapple' ScientificName='Ananas comosus' /> <Fruit CommonName='Mango' ScientificName='Mangifera indica' /> <Fruit CommonName='Blueberry' ScientificName='Vaccinium corymbosum' /> <Fruit CommonName='Rambutan' ScientificName='Nephelium lappaceum' /> <Fruit CommonName='Salak (Snake Fruit)' ScientificName='Salacca zalacca' /> <Fruit CommonName='Jabuticaba' ScientificName='Plinia cauliflora' /> <Fruit CommonName='Watermelon' ScientificName='Citrullus lanatus' /> </Fruits> )"; auto t = uc.NewTransformer(); t.Text(FruitsXML); auto Pass1 = t.Pass(); auto Pass2 = t.Pass(); Pass1.Description("Pass A"); Pass1.FromTo("Fruits", "ListOfFruits"); Pass1.FromTo("<Fruit CommonName={@str:name} ScientificName={@str:sci_name} />", "<Fruit>{name}</Fruit>"); Pass2.Description("Pass B"); Pass2.FromTo("{Fruit: Apple | Orange | Mango }", "{Fruit} *"); Pass2.FromTo("{Fruit: Banana | Grapes | Watermelon }", "{Fruit} **"); t.Transform(); cout << "All passes" << endl; cout << "----------" << endl; cout << t.Text() << endl; cout << t.Pass(0).Description() << endl; cout << t.Pass(1).Description() << endl; cout << "Pass count: " << t.PassCount() << endl; cout << "" << endl; t.Str(FruitsXML); Pass2.Release(); t.Transform(); cout << "Pass1 only (Pass2 released)" << endl; cout << "---------------------------" << endl; cout << t.Text() << endl; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
Dim FruitsXML =
"
"
Dim t = uc.NewTransformer()
t.Text = FruitsXML
Dim Pass1 = t.Pass()
Dim Pass2 = t.Pass()
Pass1.Description = "Pass A"
Pass1.FromTo("Fruits", "ListOfFruits")
Pass1.FromTo(" ", "{name} ")
Pass2.Description = "Pass B"
Pass2.FromTo("{Fruit: Apple | Orange | Mango }", "{Fruit} *")
Pass2.FromTo("{Fruit: Banana | Grapes | Watermelon }", "{Fruit} **")
t.Transform()
Console.WriteLine("All passes")
Console.WriteLine("----------")
Console.WriteLine(t.Text)
Console.WriteLine(t.Pass(0).Description)
Console.WriteLine(t.Pass(1).Description)
Console.WriteLine($"Pass count: {t.PassCount()}")
Console.WriteLine("")
t.Str(FruitsXML)
Pass2.Release()
t.Transform()
Console.WriteLine("Pass1 only (Pass2 released)")
Console.WriteLine("---------------------------")
Console.WriteLine(t.Text)
End Sub
End Module
All passes
----------
<ListOfFruits>
<Fruit>Apple *</Fruit>
<Fruit>Banana **</Fruit>
<Fruit>Orange *</Fruit>
<Fruit>Grapes **</Fruit>
<Fruit>Strawberry</Fruit>
<Fruit>Pineapple</Fruit>
<Fruit>Mango *</Fruit>
<Fruit>Blueberry</Fruit>
<Fruit>Rambutan</Fruit>
<Fruit>Salak (Snake Fruit)</Fruit>
<Fruit>Jabuticaba</Fruit>
<Fruit>Watermelon **</Fruit>
</ListOfFruits>
Pass A
Pass B
Pass count: 2
Pass1 only (Pass2 released)
---------------------------
<ListOfFruits>
<Fruit>Apple</Fruit>
<Fruit>Banana</Fruit>
<Fruit>Orange</Fruit>
<Fruit>Grapes</Fruit>
<Fruit>Strawberry</Fruit>
<Fruit>Pineapple</Fruit>
<Fruit>Mango</Fruit>
<Fruit>Blueberry</Fruit>
<Fruit>Rambutan</Fruit>
<Fruit>Salak (Snake Fruit)</Fruit>
<Fruit>Jabuticaba</Fruit>
<Fruit>Watermelon</Fruit>
</ListOfFruits> Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() Dim FruitsXML = " <Fruits> <Fruit CommonName='Apple' ScientificName='Malus domestica' /> <Fruit CommonName='Banana' ScientificName='Musa acuminata' /> <Fruit CommonName='Orange' ScientificName='Citrus × sinensis' /> <Fruit CommonName='Grapes' ScientificName='Vitis vinifera' /> <Fruit CommonName='Strawberry' ScientificName='Fragaria × ananassa' /> <Fruit CommonName='Pineapple' ScientificName='Ananas comosus' /> <Fruit CommonName='Mango' ScientificName='Mangifera indica' /> <Fruit CommonName='Blueberry' ScientificName='Vaccinium corymbosum' /> <Fruit CommonName='Rambutan' ScientificName='Nephelium lappaceum' /> <Fruit CommonName='Salak (Snake Fruit)' ScientificName='Salacca zalacca' /> <Fruit CommonName='Jabuticaba' ScientificName='Plinia cauliflora' /> <Fruit CommonName='Watermelon' ScientificName='Citrullus lanatus' /> </Fruits> " Dim t = uc.NewTransformer() t.Text = FruitsXML Dim Pass1 = t.Pass() Dim Pass2 = t.Pass() Pass1.Description = "Pass A" Pass1.FromTo("Fruits", "ListOfFruits") Pass1.FromTo("<Fruit CommonName={@str:name} ScientificName={@str:sci_name} />", "<Fruit>{name}</Fruit>") Pass2.Description = "Pass B" Pass2.FromTo("{Fruit: Apple | Orange | Mango }", "{Fruit} *") Pass2.FromTo("{Fruit: Banana | Grapes | Watermelon }", "{Fruit} **") t.Transform() Console.WriteLine("All passes") Console.WriteLine("----------") Console.WriteLine(t.Text) Console.WriteLine(t.Pass(0).Description) Console.WriteLine(t.Pass(1).Description) Console.WriteLine($"Pass count: {t.PassCount()}") Console.WriteLine("") t.Str(FruitsXML) Pass2.Release() t.Transform() Console.WriteLine("Pass1 only (Pass2 released)") Console.WriteLine("---------------------------") Console.WriteLine(t.Text) End Sub End Module