Using SkipOver() to ignore XML-style comments
ID: 125
using uCalcSoftware;
var uc = new uCalc();
// StatementSensitive() is set to false so that ";" and newline are not treated as special
var t = uc.NewTransformer();
Console.WriteLine($"StatementSensitive: {t.DefaultRuleSet.StatementSensitive}");
Console.WriteLine("Setting StatementSensitive to False");
t.DefaultRuleSet.StatementSensitive = false; // so that newline does not behave as a statement separator
Console.WriteLine($"StatementSensitive: {t.DefaultRuleSet.StatementSensitive}");
Console.WriteLine("");
var Content =
"""
""";
t.Str(Content);
var Pattern = t.Pattern(" {item} ");
t.Find();
Console.WriteLine(t.Matches.Text);
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine("----------------------------------");
t.SkipOver("");
t.Find();
Console.WriteLine(t.Matches.Text);
Console.WriteLine("");
StatementSensitive: True
Setting StatementSensitive to False
StatementSensitive: False
<li><a href="#intro">Intro</a></li>
<li><a href="#examples">Examples</a></li>
<li><a href="#contact">Contact</a></li>
<li>3 cups flour</li>
<li>1.5 cups water</li>
<li>1 tsp salt</li>
<li><a href="#one">One</a></li>
<li><a href="#two">Two</a></li>
<li><a href="#three">Three</a></li>
<!-- Skip over commented lines -->
----------------------------------
<li><a href="#intro">Intro</a></li>
<li><a href="#examples">Examples</a></li>
<li><a href="#one">One</a></li>
<li><a href="#two">Two</a></li>
<li><a href="#three">Three</a></li> using uCalcSoftware; var uc = new uCalc(); // StatementSensitive() is set to false so that ";" and newline are not treated as special var t = uc.NewTransformer(); Console.WriteLine($"StatementSensitive: {t.DefaultRuleSet.StatementSensitive}"); Console.WriteLine("Setting StatementSensitive to False"); t.DefaultRuleSet.StatementSensitive = false; // so that newline does not behave as a statement separator Console.WriteLine($"StatementSensitive: {t.DefaultRuleSet.StatementSensitive}"); Console.WriteLine(""); var Content = """ <nav aria-label="Main navigation"> <ul> <li><a href="#intro">Intro</a></li> <li><a href="#examples">Examples</a></li> <!-- <li><a href="#contact">Contact</a></li> --> </ul> </nav> <!-- <h2>Ingredients</h2> <ul> <li>3 cups flour</li> <li>1.5 cups water</li> <li>1 tsp salt</li> </ul> --> <nav aria-label="Chapter navigation"> <ul> <li><a href="#one">One</a></li> <li><a href="#two">Two</a></li> <li><a href="#three">Three</a></li> </ul> </nav> """; t.Str(Content); var Pattern = t.Pattern("<li>{item}</li>"); t.Find(); Console.WriteLine(t.Matches.Text); Console.WriteLine(""); Console.WriteLine("<!-- Skip over commented lines -->"); Console.WriteLine("----------------------------------"); t.SkipOver("<!-- {comment} -->"); t.Find(); Console.WriteLine(t.Matches.Text); Console.WriteLine("");
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
#define tf(IsTrue) ((IsTrue) ? "True" : "False")
int main() {
uCalc uc;
// StatementSensitive() is set to false so that ";" and newline are not treated as special
auto t = uc.NewTransformer();
cout << "StatementSensitive: " << tf(t.DefaultRuleSet().StatementSensitive()) << endl;
cout << "Setting StatementSensitive to False" << endl;
t.DefaultRuleSet().StatementSensitive(false); // so that newline does not behave as a statement separator
cout << "StatementSensitive: " << tf(t.DefaultRuleSet().StatementSensitive()) << endl;
cout << "" << endl;
auto Content =
R"(
)";
t.Str(Content);
auto Pattern = t.Pattern("{item} ");
t.Find();
cout << t.Matches().Text() << endl;
cout << "" << endl;
cout << "" << endl;
cout << "----------------------------------" << endl;
t.SkipOver("");
t.Find();
cout << t.Matches().Text() << endl;
cout << "" << endl;
}
StatementSensitive: True
Setting StatementSensitive to False
StatementSensitive: False
<li><a href="#intro">Intro</a></li>
<li><a href="#examples">Examples</a></li>
<li><a href="#contact">Contact</a></li>
<li>3 cups flour</li>
<li>1.5 cups water</li>
<li>1 tsp salt</li>
<li><a href="#one">One</a></li>
<li><a href="#two">Two</a></li>
<li><a href="#three">Three</a></li>
<!-- Skip over commented lines -->
----------------------------------
<li><a href="#intro">Intro</a></li>
<li><a href="#examples">Examples</a></li>
<li><a href="#one">One</a></li>
<li><a href="#two">Two</a></li>
<li><a href="#three">Three</a></li> #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; #define tf(IsTrue) ((IsTrue) ? "True" : "False") int main() { uCalc uc; // StatementSensitive() is set to false so that ";" and newline are not treated as special auto t = uc.NewTransformer(); cout << "StatementSensitive: " << tf(t.DefaultRuleSet().StatementSensitive()) << endl; cout << "Setting StatementSensitive to False" << endl; t.DefaultRuleSet().StatementSensitive(false); // so that newline does not behave as a statement separator cout << "StatementSensitive: " << tf(t.DefaultRuleSet().StatementSensitive()) << endl; cout << "" << endl; auto Content = R"( <nav aria-label="Main navigation"> <ul> <li><a href="#intro">Intro</a></li> <li><a href="#examples">Examples</a></li> <!-- <li><a href="#contact">Contact</a></li> --> </ul> </nav> <!-- <h2>Ingredients</h2> <ul> <li>3 cups flour</li> <li>1.5 cups water</li> <li>1 tsp salt</li> </ul> --> <nav aria-label="Chapter navigation"> <ul> <li><a href="#one">One</a></li> <li><a href="#two">Two</a></li> <li><a href="#three">Three</a></li> </ul> </nav> )"; t.Str(Content); auto Pattern = t.Pattern("<li>{item}</li>"); t.Find(); cout << t.Matches().Text() << endl; cout << "" << endl; cout << "<!-- Skip over commented lines -->" << endl; cout << "----------------------------------" << endl; t.SkipOver("<!-- {comment} -->"); t.Find(); cout << t.Matches().Text() << endl; cout << "" << endl; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
'// StatementSensitive() is set to false so that ";" and newline are not treated as special
Dim t = uc.NewTransformer()
Console.WriteLine($"StatementSensitive: {t.DefaultRuleSet.StatementSensitive}")
Console.WriteLine("Setting StatementSensitive to False")
t.DefaultRuleSet.StatementSensitive = false '// so that newline does not behave as a statement separator
Console.WriteLine($"StatementSensitive: {t.DefaultRuleSet.StatementSensitive}")
Console.WriteLine("")
Dim Content =
"
"
t.Str(Content)
Dim Pattern = t.Pattern(" {item} ")
t.Find()
Console.WriteLine(t.Matches.Text)
Console.WriteLine("")
Console.WriteLine("")
Console.WriteLine("----------------------------------")
t.SkipOver("")
t.Find()
Console.WriteLine(t.Matches.Text)
Console.WriteLine("")
End Sub
End Module
StatementSensitive: True
Setting StatementSensitive to False
StatementSensitive: False
<li><a href="#intro">Intro</a></li>
<li><a href="#examples">Examples</a></li>
<li><a href="#contact">Contact</a></li>
<li>3 cups flour</li>
<li>1.5 cups water</li>
<li>1 tsp salt</li>
<li><a href="#one">One</a></li>
<li><a href="#two">Two</a></li>
<li><a href="#three">Three</a></li>
<!-- Skip over commented lines -->
----------------------------------
<li><a href="#intro">Intro</a></li>
<li><a href="#examples">Examples</a></li>
<li><a href="#one">One</a></li>
<li><a href="#two">Two</a></li>
<li><a href="#three">Three</a></li> Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() '// StatementSensitive() is set to false so that ";" and newline are not treated as special Dim t = uc.NewTransformer() Console.WriteLine($"StatementSensitive: {t.DefaultRuleSet.StatementSensitive}") Console.WriteLine("Setting StatementSensitive to False") t.DefaultRuleSet.StatementSensitive = false '// so that newline does not behave as a statement separator Console.WriteLine($"StatementSensitive: {t.DefaultRuleSet.StatementSensitive}") Console.WriteLine("") Dim Content = " <nav aria-label=""Main navigation""> <ul> <li><a href=""#intro"">Intro</a></li> <li><a href=""#examples"">Examples</a></li> <!-- <li><a href=""#contact"">Contact</a></li> --> </ul> </nav> <!-- <h2>Ingredients</h2> <ul> <li>3 cups flour</li> <li>1.5 cups water</li> <li>1 tsp salt</li> </ul> --> <nav aria-label=""Chapter navigation""> <ul> <li><a href=""#one"">One</a></li> <li><a href=""#two"">Two</a></li> <li><a href=""#three"">Three</a></li> </ul> </nav> " t.Str(Content) Dim Pattern = t.Pattern("<li>{item}</li>") t.Find() Console.WriteLine(t.Matches.Text) Console.WriteLine("") Console.WriteLine("<!-- Skip over commented lines -->") Console.WriteLine("----------------------------------") t.SkipOver("<!-- {comment} -->") t.Find() Console.WriteLine(t.Matches.Text) Console.WriteLine("") End Sub End Module