mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-07-11 22:03:01 -06:00
reference: RegExp2 reference example
git-svn-id: svn://ultimatepp.org/upp/trunk@5837 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
8610a0edb0
commit
d6a3e7067a
4 changed files with 195 additions and 0 deletions
13
reference/RegExp2/RegExp2.upp
Normal file
13
reference/RegExp2/RegExp2.upp
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
description "PCRE regular expressions - more complex example\377";
|
||||
|
||||
uses
|
||||
CtrlLib,
|
||||
plugin/pcre;
|
||||
|
||||
file
|
||||
main.cpp,
|
||||
RegExpExtDemoLayout.lay;
|
||||
|
||||
mainconfig
|
||||
"" = "GUI";
|
||||
|
||||
18
reference/RegExp2/RegExpExtDemoLayout.lay
Normal file
18
reference/RegExp2/RegExpExtDemoLayout.lay
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
LAYOUT(mainwindow, 500, 452)
|
||||
ITEM(EditString, t1, HSizePosZ(104, 5).TopPosZ(64, 24))
|
||||
ITEM(EditString, t2, HSizePosZ(104, 5).TopPosZ(92, 24))
|
||||
ITEM(EditString, t3, HSizePosZ(104, 5).TopPosZ(120, 24))
|
||||
ITEM(LineEdit, t4, HSizePosZ(4, 6).VSizePosZ(234, 6))
|
||||
ITEM(Label, l1, SetLabel(t_("Source Text:")).SetAlign(ALIGN_RIGHT).LeftPosZ(0, 100).TopPosZ(64, 19))
|
||||
ITEM(Label, l2, SetLabel(t_("Regular Expression:")).SetAlign(ALIGN_RIGHT).LeftPosZ(0, 100).TopPosZ(92, 19))
|
||||
ITEM(Label, l3, SetLabel(t_("Replace Text:")).SetAlign(ALIGN_RIGHT).LeftPosZ(0, 100).TopPosZ(120, 20))
|
||||
ITEM(Label, l4, SetLabel(t_("Load Preset Tests:")).SetAlign(ALIGN_RIGHT).LeftPosZ(8, 100).TopPosZ(20, 19))
|
||||
ITEM(Label, l5, SetLabel(t_("Options:")).SetAlign(ALIGN_RIGHT).LeftPosZ(0, 100).TopPosZ(148, 19))
|
||||
ITEM(Button, b1, SetLabel(t_("Run")).RightPosZ(8, 100).TopPosZ(188, 32))
|
||||
ITEM(Button, b2, SetLabel(t_("Clear")).RightPosZ(116, 108).TopPosZ(188, 32))
|
||||
ITEM(DropList, d1, LeftPosZ(112, 128).TopPosZ(20, 22))
|
||||
ITEM(LabelBox, dv___12, LeftPosZ(4, 260).TopPosZ(4, 52))
|
||||
ITEM(DropList, d2, LeftPosZ(104, 232).TopPosZ(148, 23))
|
||||
ITEM(Option, o1, NotNull(true).SetLabel(t_("Global")).LeftPosZ(396, 88).TopPosZ(148, 16))
|
||||
END_LAYOUT
|
||||
|
||||
5
reference/RegExp2/init
Normal file
5
reference/RegExp2/init
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
#ifndef _RegExp2_icpp_init_stub
|
||||
#define _RegExp2_icpp_init_stub
|
||||
#include "CtrlLib/init"
|
||||
#include "plugin/pcre/init"
|
||||
#endif
|
||||
159
reference/RegExp2/main.cpp
Normal file
159
reference/RegExp2/main.cpp
Normal file
|
|
@ -0,0 +1,159 @@
|
|||
#include <CtrlLib/CtrlLib.h>
|
||||
#include <plugin/pcre/Pcre.h>
|
||||
|
||||
using namespace Upp;
|
||||
|
||||
#define LAYOUTFILE <RegExp2/RegExpExtDemoLayout.lay>
|
||||
#include <CtrlCore/lay.h>
|
||||
|
||||
class mainwindowDlg : public Withmainwindow<TopWindow> {
|
||||
typedef mainwindowDlg CLASSNAME;
|
||||
|
||||
public:
|
||||
mainwindowDlg();
|
||||
void RunRegExp();
|
||||
void clear_output(){t4.Clear();}
|
||||
void d1_callback(){ Set_Examples((int)d1.GetData()); }
|
||||
void Set_Examples(int i);
|
||||
|
||||
void match_callback_fun(Vector<String>& v){
|
||||
for(int i=0, i1=v.GetCount(); i<i1; i++)
|
||||
v[i]=Format("Match%d",i+1);
|
||||
}
|
||||
};
|
||||
|
||||
mainwindowDlg::mainwindowDlg()
|
||||
{
|
||||
CtrlLayout(*this, "RegExp Extension Demo");
|
||||
Sizeable().Zoomable();
|
||||
HCenterPos(800).VCenterPosZ(400);
|
||||
|
||||
|
||||
for(int i=1; i<6; i++)
|
||||
d1.Add(i, Format("TEST-%d",i));
|
||||
|
||||
d2.Add(1, "Disable Resolving Back-Reference")
|
||||
.Add(2, "Enable Resolving Back-Reference")
|
||||
.Add(3, "Use Callback Function");
|
||||
|
||||
|
||||
d1<<=THISBACK(d1_callback);
|
||||
b1<<=THISBACK(RunRegExp);
|
||||
b2<<=THISBACK(clear_output);
|
||||
|
||||
d1.SetData(4);
|
||||
d1_callback();
|
||||
|
||||
}
|
||||
|
||||
void mainwindowDlg::RunRegExp()
|
||||
{
|
||||
RegExp regx;
|
||||
RegExp reg("\\((.*?)\\)");
|
||||
|
||||
String t(t1.GetData());
|
||||
|
||||
int n=-101;
|
||||
|
||||
|
||||
switch((int)d2.GetData()){
|
||||
|
||||
case 1: // no backref resolved
|
||||
|
||||
regx.SetPattern(t2.GetData());
|
||||
|
||||
if((int)o1.GetData() == 0)
|
||||
n=regx.Replace(t, (String)t3.GetData());
|
||||
else n=regx.ReplaceGlobal(t, (String)t3.GetData());
|
||||
|
||||
break;
|
||||
|
||||
case 2: // backref resolved
|
||||
|
||||
regx.SetPattern(t2.GetData());
|
||||
|
||||
if((int)o1.GetData() == 0)
|
||||
n=regx.Replace(t, (String)t3.GetData(), true);
|
||||
else n=regx.ReplaceGlobal(t, (String)t3.GetData(), true);
|
||||
|
||||
break;
|
||||
|
||||
case 3: // using callback funtion
|
||||
|
||||
regx.SetPattern(t2.GetData());
|
||||
|
||||
if((int)o1.GetData() == 0)
|
||||
n=regx.Replace(t, THISBACK(match_callback_fun));
|
||||
else n=regx.ReplaceGlobal(t, THISBACK(match_callback_fun));
|
||||
|
||||
break;
|
||||
};
|
||||
|
||||
|
||||
|
||||
String output(t4.Get());
|
||||
|
||||
output
|
||||
<<"Regular Expression:["<<t2.GetData()
|
||||
<<"]\nReplacement Count="<<n
|
||||
<<"\nInput: "<<t1.GetData()
|
||||
<<"\nOutput: "<<t<<"\n\n\n";
|
||||
|
||||
t4.Set(output);
|
||||
t4.ScrollEnd();
|
||||
}
|
||||
|
||||
|
||||
void mainwindowDlg::Set_Examples(int i)
|
||||
{
|
||||
switch(i){
|
||||
|
||||
case 1:
|
||||
t1.SetData("A QUICK BROWN FOX JUMPS OVER THE LAZY DOG") ;
|
||||
t2.SetData("(\\w)");
|
||||
t3.SetData("(#)");
|
||||
d2.SetData(1);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
t1.SetData("31-1-2000 13-2-2010 1-12-2012");
|
||||
t2.SetData("(\\d+)-(\\d+)-(\\d+)");
|
||||
t3.SetData("(\\2)(\\1)(\\3)");
|
||||
d2.SetData(2);
|
||||
o1.SetData(true);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
t1.SetData("A QUICK BROWN FOX JUMPS OVER THE LAZY DOG");
|
||||
t2.SetData("(QUICK)");
|
||||
t3.SetData("(SLOW)");
|
||||
d2.SetData(1);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
t1.SetData("A QUICK BROWN FOX JUMPS OVER THE LAZY DOG");
|
||||
t2.SetData("(QUICK)\\s+(BROWN)");
|
||||
t3.SetData("(\\2ISH)(\\1)");
|
||||
d2.SetData(2);
|
||||
break;
|
||||
|
||||
|
||||
case 5:
|
||||
t1.SetData("A QUICK BROWN FOX JUMPS OVER THE LAZY DOG");
|
||||
t2.SetData("(\\w+)");
|
||||
t3.SetData("THIS IS EXAMPLE OF THE USE OF CALLBACK FUNCTION");
|
||||
d2.SetData(3);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
GUI_APP_MAIN
|
||||
{
|
||||
mainwindowDlg w;
|
||||
|
||||
w.Run();
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue