uCalc API Version: 5.7.0-preview.1 Released: 7/30/2026
Warning
uCalc API Preview Release Notice:This preview documentation describes the intended behavior of the API. It is not fully accurate or complete.The current preview build contains incomplete features, unoptimized performance, and is subject to breaking changes.Use of the preview version in your production code is not recommended.
Product:
Class:
Creates or retrieves a sequential transformation stage (a pass), enabling multi-step text processing pipelines.
A Transformer object representing the specified pass, which can be configured with its own independent set of rules.
The Pass method is the entry point for creating multi-stage transformation pipelines. It allows you to break down a complex transformation into a sequence of simpler, independent steps. Each pass is its own Transformer object with its own set of rules.
When Transform() is called on the main Transformer, the input text is processed sequentially through each defined pass:
This architecture is ideal for separating distinct logical stages, such as an initial data cleanup pass, followed by a data extraction pass, and finally a formatting pass.
Passes are identified by a zero-based index.
Pass() with no arguments or -1. This appends a new pass to the end of the sequence.Pass(n) to retrieve the Transformer object for the nth pass.share Parameter: Rule InheritanceThe share parameter controls whether a new pass inherits rules from the main (root) transformer.
share = false (Default): The pass is created with a clean slate. It has its own isolated set of rules and does not inherit any from the parent.share = true: The pass is created with a copy of all rules currently defined on the main transformer. You can then add more rules to the pass. Changes to the pass's rules will not affect the main transformer.Without the Pass system, you would need to manually create and manage a pipeline of separate Transformer objects, which is verbose and error-prone:
Manual Approach:csharp
var t1 = new uCalc.Transformer();
var t2 = new uCalc.Transformer();
// ... define rules for t1 and t2 ...
string result1 = t1.Transform("input");
string finalResult = t2.Transform(result1);
uCalc Pass Approach:csharp
var t = new uCalc.Transformer();
var pass1 = t.Pass();
var pass2 = t.Pass();
// ... define rules for pass1 and pass2 ...
string finalResult = t.Transform("input");
uCalc's Pass method encapsulates the entire pipeline into a single object, simplifying the logic and making the transformation sequence easier to manage and understand.
ID: 1105
using uCalcSoftware;
var uc = new uCalc();
var t = new uCalc.Transformer();
t.Text = "A";
// Pass 0 will change 'A' to 'B'
var pass0 = t.Pass(0);
pass0.FromTo("A", "B");
// Pass 1 will receive 'B' and change it to 'C'
var pass1 = t.Pass(1);
pass1.FromTo("B", "C");
t.Transform();
Console.WriteLine(t); // The final output is 'C'
C using uCalcSoftware; var uc = new uCalc(); var t = new uCalc.Transformer(); t.Text = "A"; // Pass 0 will change 'A' to 'B' var pass0 = t.Pass(0); pass0.FromTo("A", "B"); // Pass 1 will receive 'B' and change it to 'C' var pass1 = t.Pass(1); pass1.FromTo("B", "C"); t.Transform(); Console.WriteLine(t); // The final output is 'C'
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
int main() {
uCalc uc;
uCalc::Transformer t;
t.Text("A");
// Pass 0 will change 'A' to 'B'
auto pass0 = t.Pass(0);
pass0.FromTo("A", "B");
// Pass 1 will receive 'B' and change it to 'C'
auto pass1 = t.Pass(1);
pass1.FromTo("B", "C");
t.Transform();
cout << t << endl; // The final output is 'C'
}
C #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; int main() { uCalc uc; uCalc::Transformer t; t.Text("A"); // Pass 0 will change 'A' to 'B' auto pass0 = t.Pass(0); pass0.FromTo("A", "B"); // Pass 1 will receive 'B' and change it to 'C' auto pass1 = t.Pass(1); pass1.FromTo("B", "C"); t.Transform(); cout << t << endl; // The final output is 'C' }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
Dim t As New uCalc.Transformer()
t.Text = "A"
'// Pass 0 will change 'A' to 'B'
Dim pass0 = t.Pass(0)
pass0.FromTo("A", "B")
'// Pass 1 will receive 'B' and change it to 'C'
Dim pass1 = t.Pass(1)
pass1.FromTo("B", "C")
t.Transform()
Console.WriteLine(t) '// The final output is 'C'
End Sub
End Module
C Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() Dim t As New uCalc.Transformer() t.Text = "A" '// Pass 0 will change 'A' to 'B' Dim pass0 = t.Pass(0) pass0.FromTo("A", "B") '// Pass 1 will receive 'B' and change it to 'C' Dim pass1 = t.Pass(1) pass1.FromTo("B", "C") t.Transform() Console.WriteLine(t) '// The final output is 'C' End Sub End Module
ID: 149
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