Internal Test: Verifies precedence and traversal of rules with different patterns but the same starting anchor ('Testing').
ID: 956
See: NextOverload
using uCalcSoftware;
var uc = new uCalc();
var t = uc.NewTransformer();
t.Text = "Testing (a b c) Testing x y z! Testing 1 2 3.";
var Pattern1 = t.Pattern("Testing {etc}.").SetTag(111);
var Pattern2 = t.Pattern("Testing {etc}!").SetTag(222);
var Pattern3 = t.Pattern("Testing ({etc})").SetTag(333);
t.Find();
Console.WriteLine("--- Matches ---");
Console.WriteLine(t.Matches.Text);
Console.WriteLine("--- Patterns ---");
Console.WriteLine(Pattern1.Pattern);
Console.WriteLine(Pattern2.Pattern);
Console.WriteLine(Pattern3.Pattern);
Console.WriteLine("---- Tags ----");
Console.WriteLine(Pattern1.Tag);
Console.WriteLine(Pattern2.Tag);
Console.WriteLine(Pattern3.Tag);
Console.WriteLine("-- Overload Tags --");
// Note that most recently defined patterns come first
Console.WriteLine(Pattern3.NextOverload().Tag);
Console.WriteLine(Pattern2.NextOverload().Tag);
Console.WriteLine(Pattern1.NextOverload().Tag);
--- Matches ---
Testing (a b c)
Testing x y z!
Testing 1 2 3.
--- Patterns ---
Testing {etc}.
Testing {etc}!
Testing ({etc})
---- Tags ----
111
222
333
-- Overload Tags --
222
111
0 using uCalcSoftware; var uc = new uCalc(); var t = uc.NewTransformer(); t.Text = "Testing (a b c) Testing x y z! Testing 1 2 3."; var Pattern1 = t.Pattern("Testing {etc}.").SetTag(111); var Pattern2 = t.Pattern("Testing {etc}!").SetTag(222); var Pattern3 = t.Pattern("Testing ({etc})").SetTag(333); t.Find(); Console.WriteLine("--- Matches ---"); Console.WriteLine(t.Matches.Text); Console.WriteLine("--- Patterns ---"); Console.WriteLine(Pattern1.Pattern); Console.WriteLine(Pattern2.Pattern); Console.WriteLine(Pattern3.Pattern); Console.WriteLine("---- Tags ----"); Console.WriteLine(Pattern1.Tag); Console.WriteLine(Pattern2.Tag); Console.WriteLine(Pattern3.Tag); Console.WriteLine("-- Overload Tags --"); // Note that most recently defined patterns come first Console.WriteLine(Pattern3.NextOverload().Tag); Console.WriteLine(Pattern2.NextOverload().Tag); Console.WriteLine(Pattern1.NextOverload().Tag);
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
int main() {
uCalc uc;
auto t = uc.NewTransformer();
t.Text("Testing (a b c) Testing x y z! Testing 1 2 3.");
auto Pattern1 = t.Pattern("Testing {etc}.").SetTag(111);
auto Pattern2 = t.Pattern("Testing {etc}!").SetTag(222);
auto Pattern3 = t.Pattern("Testing ({etc})").SetTag(333);
t.Find();
cout << "--- Matches ---" << endl;
cout << t.Matches().Text() << endl;
cout << "--- Patterns ---" << endl;
cout << Pattern1.Pattern() << endl;
cout << Pattern2.Pattern() << endl;
cout << Pattern3.Pattern() << endl;
cout << "---- Tags ----" << endl;
cout << Pattern1.Tag() << endl;
cout << Pattern2.Tag() << endl;
cout << Pattern3.Tag() << endl;
cout << "-- Overload Tags --" << endl;
// Note that most recently defined patterns come first
cout << Pattern3.NextOverload().Tag() << endl;
cout << Pattern2.NextOverload().Tag() << endl;
cout << Pattern1.NextOverload().Tag() << endl;
}
--- Matches ---
Testing (a b c)
Testing x y z!
Testing 1 2 3.
--- Patterns ---
Testing {etc}.
Testing {etc}!
Testing ({etc})
---- Tags ----
111
222
333
-- Overload Tags --
222
111
0 #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; int main() { uCalc uc; auto t = uc.NewTransformer(); t.Text("Testing (a b c) Testing x y z! Testing 1 2 3."); auto Pattern1 = t.Pattern("Testing {etc}.").SetTag(111); auto Pattern2 = t.Pattern("Testing {etc}!").SetTag(222); auto Pattern3 = t.Pattern("Testing ({etc})").SetTag(333); t.Find(); cout << "--- Matches ---" << endl; cout << t.Matches().Text() << endl; cout << "--- Patterns ---" << endl; cout << Pattern1.Pattern() << endl; cout << Pattern2.Pattern() << endl; cout << Pattern3.Pattern() << endl; cout << "---- Tags ----" << endl; cout << Pattern1.Tag() << endl; cout << Pattern2.Tag() << endl; cout << Pattern3.Tag() << endl; cout << "-- Overload Tags --" << endl; // Note that most recently defined patterns come first cout << Pattern3.NextOverload().Tag() << endl; cout << Pattern2.NextOverload().Tag() << endl; cout << Pattern1.NextOverload().Tag() << endl; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
Dim t = uc.NewTransformer()
t.Text = "Testing (a b c) Testing x y z! Testing 1 2 3."
Dim Pattern1 = t.Pattern("Testing {etc}.").SetTag(111)
Dim Pattern2 = t.Pattern("Testing {etc}!").SetTag(222)
Dim Pattern3 = t.Pattern("Testing ({etc})").SetTag(333)
t.Find()
Console.WriteLine("--- Matches ---")
Console.WriteLine(t.Matches.Text)
Console.WriteLine("--- Patterns ---")
Console.WriteLine(Pattern1.Pattern)
Console.WriteLine(Pattern2.Pattern)
Console.WriteLine(Pattern3.Pattern)
Console.WriteLine("---- Tags ----")
Console.WriteLine(Pattern1.Tag)
Console.WriteLine(Pattern2.Tag)
Console.WriteLine(Pattern3.Tag)
Console.WriteLine("-- Overload Tags --")
'// Note that most recently defined patterns come first
Console.WriteLine(Pattern3.NextOverload().Tag)
Console.WriteLine(Pattern2.NextOverload().Tag)
Console.WriteLine(Pattern1.NextOverload().Tag)
End Sub
End Module
--- Matches ---
Testing (a b c)
Testing x y z!
Testing 1 2 3.
--- Patterns ---
Testing {etc}.
Testing {etc}!
Testing ({etc})
---- Tags ----
111
222
333
-- Overload Tags --
222
111
0 Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() Dim t = uc.NewTransformer() t.Text = "Testing (a b c) Testing x y z! Testing 1 2 3." Dim Pattern1 = t.Pattern("Testing {etc}.").SetTag(111) Dim Pattern2 = t.Pattern("Testing {etc}!").SetTag(222) Dim Pattern3 = t.Pattern("Testing ({etc})").SetTag(333) t.Find() Console.WriteLine("--- Matches ---") Console.WriteLine(t.Matches.Text) Console.WriteLine("--- Patterns ---") Console.WriteLine(Pattern1.Pattern) Console.WriteLine(Pattern2.Pattern) Console.WriteLine(Pattern3.Pattern) Console.WriteLine("---- Tags ----") Console.WriteLine(Pattern1.Tag) Console.WriteLine(Pattern2.Tag) Console.WriteLine(Pattern3.Tag) Console.WriteLine("-- Overload Tags --") '// Note that most recently defined patterns come first Console.WriteLine(Pattern3.NextOverload().Tag) Console.WriteLine(Pattern2.NextOverload().Tag) Console.WriteLine(Pattern1.NextOverload().Tag) End Sub End Module