mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-11 21:03:05 +08:00
Merge pull request #1342 from RaiKoHoff/Dev_ONIGURUMA
TOML Lexer Enhancements
This commit is contained in:
commit
6ea2f94ffe
@ -1 +1 @@
|
||||
2250
|
||||
2252
|
||||
|
||||
@ -1031,6 +1031,7 @@
|
||||
#define IDS_LEX_STR_63353 63353
|
||||
#define IDS_LEX_STR_63354 63354
|
||||
#define IDS_LEX_STR_63355 63355
|
||||
#define IDS_LEX_STR_63356 63356
|
||||
|
||||
#define RICHEDIT_CONTROL_VER "RichEdit50W" // RICHEDIT_CONTROL_VER
|
||||
|
||||
|
||||
@ -446,6 +446,7 @@ BEGIN
|
||||
IDS_LEX_STR_63353 "2de In lyn-IME Kleur"
|
||||
IDS_LEX_STR_63354 "Multi Edit Indicator"
|
||||
IDS_LEX_STR_63355 "2nd Multi Edit Indicator"
|
||||
IDS_LEX_STR_63356 "Date-Time"
|
||||
END
|
||||
|
||||
#endif // Afrikaans (South Africa) resources
|
||||
|
||||
@ -446,6 +446,7 @@ BEGIN
|
||||
IDS_LEX_STR_63353 "2nd Inline-IME Color"
|
||||
IDS_LEX_STR_63354 "Multi Edit Indicator"
|
||||
IDS_LEX_STR_63355 "2nd Multi Edit Indicator"
|
||||
IDS_LEX_STR_63356 "Date-Time"
|
||||
END
|
||||
|
||||
#endif // Belarusian (Belarus) resources
|
||||
|
||||
@ -446,6 +446,7 @@ BEGIN
|
||||
IDS_LEX_STR_63353 "2te Inline-IME Farbe"
|
||||
IDS_LEX_STR_63354 "Multi Edit Indicator"
|
||||
IDS_LEX_STR_63355 "2nd Multi Edit Indicator"
|
||||
IDS_LEX_STR_63356 "Date-Time"
|
||||
END
|
||||
|
||||
#endif // German (Germany) resources
|
||||
|
||||
@ -446,6 +446,7 @@ BEGIN
|
||||
IDS_LEX_STR_63353 "2nd Inline-IME Color"
|
||||
IDS_LEX_STR_63354 "Multi Edit Indicator"
|
||||
IDS_LEX_STR_63355 "2nd Multi Edit Indicator"
|
||||
IDS_LEX_STR_63356 "Date-Time"
|
||||
END
|
||||
|
||||
#endif // English (United Kingdom) resources
|
||||
|
||||
@ -446,6 +446,7 @@ BEGIN
|
||||
IDS_LEX_STR_63353 "2nd Inline-IME Color"
|
||||
IDS_LEX_STR_63354 "Multi Edit Indicator"
|
||||
IDS_LEX_STR_63355 "2nd Multi Edit Indicator"
|
||||
IDS_LEX_STR_63356 "Date-Time"
|
||||
END
|
||||
|
||||
#endif // English (United States) resources
|
||||
|
||||
@ -446,6 +446,7 @@ BEGIN
|
||||
IDS_LEX_STR_63353 "2nd Inline-IME Color"
|
||||
IDS_LEX_STR_63354 "Multi Edit Indicator"
|
||||
IDS_LEX_STR_63355 "2nd Multi Edit Indicator"
|
||||
IDS_LEX_STR_63356 "Date-Time"
|
||||
END
|
||||
|
||||
#endif // Spanish (Spain, International Sort) resources
|
||||
|
||||
@ -446,6 +446,7 @@ BEGIN
|
||||
IDS_LEX_STR_63353 "2nd Inline-IME Color"
|
||||
IDS_LEX_STR_63354 "Multi Edit Indicator"
|
||||
IDS_LEX_STR_63355 "2nd Multi Edit Indicator"
|
||||
IDS_LEX_STR_63356 "Date-Time"
|
||||
END
|
||||
|
||||
#endif // French (France) resources
|
||||
|
||||
@ -86,17 +86,17 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
BEGIN
|
||||
LTEXT "Szöve&g keresése:",IDC_STATIC,7,7,66,8
|
||||
COMBOBOX IDC_FINDTEXT,7,17,192,116,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
|
||||
CONTROL "&Kisbetû/nagybetû számít",IDC_FINDCASE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,37,89,10
|
||||
CONTROL "&Kis-/nagybetû számít",IDC_FINDCASE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,37,53,10
|
||||
CONTROL "E&gész szavakra egyezés",IDC_FINDWORD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,49,89,10
|
||||
CONTROL "Szókez&detre egyezés",IDC_FINDSTART,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,61,110,10
|
||||
CONTROL "&Visszaperjel átalakítása",IDC_FINDTRANSFORMBS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,73,89,10
|
||||
CONTROL "R&eguláris kifejezés keresése",IDC_FINDREGEXP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,85,97,10
|
||||
CONTROL "Pont &mindenre egyezik",IDC_DOT_MATCH_ALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,96,85,10
|
||||
CONTROL "Szó ele&jére egyezés",IDC_FINDSTART,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,61,110,10
|
||||
CONTROL "&Backslash átalakítások",IDC_FINDTRANSFORMBS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,73,85,10
|
||||
CONTROL "R&eguláris kifejezéssel",IDC_FINDREGEXP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,85,96,10
|
||||
CONTROL "Pont &mindenre egyezik",IDC_DOT_MATCH_ALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,96,65,10
|
||||
CONTROL "&Ne menjen körbe",IDC_NOWRAP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,37,75,10
|
||||
CONTROL "Cseré&lés után bezár",IDC_FINDCLOSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,49,80,10
|
||||
CONTROL "Elõ&fordulások jelölése",IDC_ALL_OCCURRENCES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,61,75,10
|
||||
CONTROL "&Joker kar. keresés",IDC_WILDCARDSEARCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,85,63,10
|
||||
CONTROL "Átlátszó mód, ha nincs fókuszban",IDC_TRANSPARENT,
|
||||
CONTROL "Ta&lálat után bezárás",IDC_FINDCLOSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,49,65,10
|
||||
CONTROL "Találat&ok jelölése",IDC_ALL_OCCURRENCES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,61,73,10
|
||||
CONTROL "&Joker keresés",IDC_WILDCARDSEARCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,85,63,10
|
||||
CONTROL "Átlátszó mód, ha nincs fókuszban ",IDC_TRANSPARENT,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,118,124,10
|
||||
DEFPUSHBUTTON "&Köv. keresése",IDOK,211,7,55,14
|
||||
PUSHBUTTON "&Elõzõ keresése",IDC_FINDPREV,211,24,55,14
|
||||
@ -120,16 +120,16 @@ BEGIN
|
||||
COMBOBOX IDC_FINDTEXT,7,17,192,116,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT "Cserélés &erre:",IDC_STATIC,7,36,44,8
|
||||
COMBOBOX IDC_REPLACETEXT,7,47,192,116,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
|
||||
CONTROL "Kisbetû/nagybetû számít",IDC_FINDCASE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,66,89,10
|
||||
CONTROL "Kis-/nag&ybetû számít",IDC_FINDCASE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,66,89,10
|
||||
CONTROL "Egés&z szavakra egyezés",IDC_FINDWORD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,78,89,10
|
||||
CONTROL "Szókez&detre egyezés",IDC_FINDSTART,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,90,110,10
|
||||
CONTROL "&Visszaperjel átalakítása",IDC_FINDTRANSFORMBS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,102,89,10
|
||||
CONTROL "Back&slash átalakítás",IDC_FINDTRANSFORMBS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,102,89,10
|
||||
CONTROL "R&eguláris kifejezés keresése",IDC_FINDREGEXP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,114,97,10
|
||||
CONTROL "Pont &mindenre egyezik",IDC_DOT_MATCH_ALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,125,85,10
|
||||
CONTROL "&Ne menjen körbe",IDC_NOWRAP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,66,75,10
|
||||
CONTROL "Cseré&lés után bezár",IDC_FINDCLOSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,78,80,10
|
||||
CONTROL "Csere után bezár",IDC_FINDCLOSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,78,80,10
|
||||
CONTROL "Elõ&fordulások jelölése",IDC_ALL_OCCURRENCES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,90,75,10
|
||||
CONTROL "&Joker kar. keresés",IDC_WILDCARDSEARCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,114,63,10
|
||||
CONTROL "&Joker keresés",IDC_WILDCARDSEARCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,114,63,10
|
||||
CONTROL "Átlátszó mód, ha nincs fókuszban",IDC_TRANSPARENT,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,144,124,10
|
||||
DEFPUSHBUTTON "K&öv. keresése",IDOK,211,7,55,14
|
||||
@ -256,8 +256,8 @@ CAPTION "F
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
CONTROL "",IDC_FILEMRU,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS | LVS_AUTOARRANGE | LVS_NOCOLUMNHEADER | WS_BORDER | WS_TABSTOP,7,7,255,97
|
||||
CONTROL "K&urzor helye megmarad.",IDC_PRESERVECARET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,119,96,10
|
||||
CONTROL "&Fájl elõzménylista mentése kilépéskor.",IDC_SAVEMRU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,107,125,10
|
||||
CONTROL "K&urzor helyét megjegyzi",IDC_PRESERVECARET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,119,96,10
|
||||
CONTROL "&Fájl elõzmények mentése kilépéskor.",IDC_SAVEMRU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,107,96,10
|
||||
CONTROL "&Keresési minta megjegyzése.",IDC_REMEMBERSEARCHPATTERN,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,130,96,10
|
||||
PUSHBUTTON "Kihagyás",IDC_REMOVE,212,107,50,14,WS_DISABLED
|
||||
@ -471,14 +471,14 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "OK",IDOK,245,98,50,14
|
||||
PUSHBUTTON "Mégsem",IDCANCEL,184,98,50,14
|
||||
CONTROL "Új mester kulcs megadása",IDC_PWD_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,107,60,95,10
|
||||
CONTROL "Új mesterkulcs megadása",IDC_PWD_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,107,60,84,10
|
||||
EDITTEXT IDC_PWD_EDIT1,17,35,276,12,ES_PASSWORD | ES_AUTOHSCROLL | WS_GROUP
|
||||
EDITTEXT IDC_PWD_EDIT2,17,74,277,12,ES_PASSWORD | ES_AUTOHSCROLL
|
||||
LTEXT "Nem kötelezõ mester kulcs:",IDC_STATIC,17,61,88,10,NOT WS_GROUP
|
||||
CONTROL "Kódolás jelmondat segítségével",IDC_PWD_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,21,128,10
|
||||
CONTROL "Mester kulcs újrafelhasználása",IDC_PWD_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,218,60,76,10
|
||||
LTEXT "Nem kötelezõ mesterkulcs:",IDC_STATIC,17,61,72,10,NOT WS_GROUP
|
||||
CONTROL "Kódolás jelmondat segítségével",IDC_PWD_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,21,98,10
|
||||
CONTROL "Mesterkulcs újrafelhasználása",IDC_PWD_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,218,60,76,10
|
||||
GROUPBOX "Jelmondat",IDC_STATIC,7,7,297,108
|
||||
CONTROL "Jelmondatok megjelenítése",IDC_PWD_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,97,98,10
|
||||
CONTROL "Jelmondat megjelenítése",IDC_PWD_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,97,75,10
|
||||
END
|
||||
|
||||
IDD_MUI_READPW DIALOGEX 0, 0, 299, 81
|
||||
@ -511,9 +511,9 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM
|
||||
CAPTION "Sorok módosítása"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
BEGIN
|
||||
LTEXT "Szöveg a sor &elejére:",IDC_STATIC,7,7,62,8
|
||||
LTEXT "Sor &elejére:",IDC_STATIC,7,7,62,8
|
||||
EDITTEXT 100,7,18,98,14,ES_AUTOHSCROLL
|
||||
LTEXT "Szöveg a sor &végére:",IDC_STATIC,7,37,68,8
|
||||
LTEXT "Sor &végére:",IDC_STATIC,7,37,68,8
|
||||
EDITTEXT 101,7,48,98,14,ES_AUTOHSCROLL
|
||||
DEFPUSHBUTTON "OK",IDOK,125,7,50,14
|
||||
PUSHBUTTON "Mégsem",IDCANCEL,125,24,50,14
|
||||
|
||||
@ -446,6 +446,7 @@ BEGIN
|
||||
IDS_LEX_STR_63353 "2nd Inline-IME Color"
|
||||
IDS_LEX_STR_63354 "Multi Edit Indicator"
|
||||
IDS_LEX_STR_63355 "2nd Multi Edit Indicator"
|
||||
IDS_LEX_STR_63356 "Date-Time"
|
||||
END
|
||||
|
||||
#endif // Hungarian (Hungary) resources
|
||||
|
||||
@ -196,7 +196,7 @@ BEGIN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Backtick\tCtrl+6", CMD_EMBRACE4
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Ezzel...\tAlt+Q", IDM_EDIT_ENCLOSESELECTION
|
||||
MENUITEM "&Egyéni...\tAlt+Q", IDM_EDIT_ENCLOSESELECTION
|
||||
END
|
||||
MENUITEM "Sor/Kijelölés &duplikálása\tCtrl+D", IDM_EDIT_DUPLINEORSELECTION
|
||||
MENUITEM SEPARATOR
|
||||
@ -310,7 +310,7 @@ BEGIN
|
||||
MENUITEM "Háttérs&zín", IDM_VIEW_HILITCURLN_BACK
|
||||
MENUITEM "K&eret", IDM_VIEW_HILITCURLN_FRAME
|
||||
END
|
||||
POPUP "Elõ&fordulások jelölése"
|
||||
POPUP "Elõ&fordulások kiemelése"
|
||||
BEGIN
|
||||
MENUITEM "&Aktív\tAlt+A", IDM_VIEW_MARKOCCUR_ONOFF
|
||||
MENUITEM SEPARATOR
|
||||
|
||||
@ -117,7 +117,7 @@ BEGIN
|
||||
IDS_MUI_OPENWITH "Válassza ki a mappát, ahol a kedvenc alkamazásaira mutató parancsikonok vannak."
|
||||
IDS_MUI_FAVORITES "Válassza ki a mappát, ahol a kedvenc fájljaira mutató parancsikonok vannak."
|
||||
IDS_MUI_BACKSLASHHELP "Backslash átalakítások\n\n\\a\tFigyelmeztetés (BEL, Ascii 7)\n\\b\tBackspace (BS, Ascii 8)\n\\f\tLapdobás (FF, Ascii 12)\n\\n\tÚj sor (LF, Ascii 10)\n\\r\tKocsi vissza (CR, Ascii 13)\n\\t\tVízszintes Tab (HT, Ascii 9)\n\\v\tFüggőleges Tab (VT, Ascii 11)\n\\0oo\tOktális érték\n\\u####\tHexadecimális érték\n\\xhh\tHexadecimal Value\n\\\\\tBackslash"
|
||||
IDS_MUI_REGEXPHELP "RegExp illeszkedés szintaktika (többsoros)\n\n.\tBármilyen karakterre illeszkedik\n^\tÜres szöveg rögtön új sor után\n$\tÜres szöveg közvetlenül a sorvége előtt\n\\<\tSzó kezdete\n\\>\tSzó vége\n\\b\tSzó határa\n[...]\tKarakterek halmaza ([abc]) vagy intervalluma ([a-z])\n[^...]\tKarakterek, amik NINCSENEK a készletben vagy\n\taz intervallumban\n\\d\t10-es számrendszeri szám\n\\D\tNem szám kar.\n\\s\tÜres hely karakterek\n\\S\tNEM üres hely karakter\n\\w\t""szó"" karakterek\n\\W\t""nem-szó"" karakter\n\\x\tEscape karakter egyébként speciális jelentéssel\n\\xHH\tKarakter HH Hexa kóddal\n?\tElőzőre illeszkedik 0-szor vagy 1-szer\n*\tElőzőre illeszkedik 0-szor vagy többször\n+\tElőzőre illeszkedik egyszer vagy többször\n*? or +?\tIsmétlések illeszkedése lomhán ""?"" and ""+""\n(\tRégió kezdete\n)\tRégió vége\n\\n\tCserénél egy régióra hivatkozik (n = 1-9)\n"
|
||||
IDS_MUI_REGEXPHELP "RegExp illeszkedés szintaktika (többsoros)\n\n.\tBármilyen karakterre illeszkedik\n^\tÜres szöveg rögtön új sor után\n$\tÜres szöveg közvetlenül a sorvége előtt\n\\<\tSzó kezdete\n\\>\tSzó vége\n\\b\tSzó határa\n[...]\tKarakterek halmaza ([abc]) vagy intervalluma ([a-z])\n[^...]\tKarakterek, amik NINCSENEK a készletben vagy az intervallumban\n\\d\t10-es számrendszeri szám\n\\D\tNem szám karakter\n\\s\tÜres hely karakterek\n\\S\tNEM üres hely karakter\n\\w\t""szó"" karakterek\n\\W\t""nem-szó"" karakter\n\\x\tEscape karakter egyébként speciális jelentéssel\n\\xHH\tKarakter HH Hexa kóddal\n?\tElőzőre illeszkedik 0-szor vagy 1-szer\n*\tElőzőre illeszkedik 0-szor vagy többször\n+\tElőzőre illeszkedik egyszer vagy többször\n*? or +?\tIsmétlések illeszkedése lomhán ""?"" and ""+""\n(\tRégió kezdete\n)\tRégió vége\n\\n\tCserénél egy régióra hivatkozik (n = 1-9)\n"
|
||||
IDS_MUI_WILDCARDHELP "Joker keresés\n\n*\tNulla vagy több karakterre illeszkedik.\n?\tPontosan egy karakterre illeszkedik. "
|
||||
END
|
||||
|
||||
@ -246,7 +246,7 @@ Haszn
|
||||
Notepad3 \t[/?] [...[kódolás]] [...[sorvég mód]] [/e] [/g] [/m] [/l]\r\n\
|
||||
\t[/q] [/s] [/d] [/h] [/x] [/c] [/b] [/n] [/r| [/p] [/t] [/i] [/o]\r\n\
|
||||
\t[/f] [/u] [/v] [/vd] [/y] [/z] [[meghajtó:][útvonal]fájlnév[...]]\r\n\r\n\
|
||||
fájl\tAz utolsó paraméter kell legyen, alapból nincsenekidézőjelezett szóközök.\r\n\
|
||||
fájl\tAz utolsó paraméter kell legyen, alapból nincsenek idézőjelezett szóközök.\r\n\
|
||||
+\tTöbb fájlt is elfogad (idézőjelezett szóközökkel).\r\n\
|
||||
-\tEgy fájlt fogad el paraméterként (idézőjelezett szóközök nélkül).\r\n\r\n\
|
||||
Opciók:\r\n\
|
||||
|
||||
@ -446,6 +446,7 @@ BEGIN
|
||||
IDS_LEX_STR_63353 "2nd Inline-IME Color"
|
||||
IDS_LEX_STR_63354 "Multi Edit Indicator"
|
||||
IDS_LEX_STR_63355 "2nd Multi Edit Indicator"
|
||||
IDS_LEX_STR_63356 "Date-Time"
|
||||
END
|
||||
|
||||
#endif // Italian (Italy) resources
|
||||
|
||||
@ -446,6 +446,7 @@ BEGIN
|
||||
IDS_LEX_STR_63353 "第2 インライン入力時のIME変換"
|
||||
IDS_LEX_STR_63354 "Multi Edit Indicator"
|
||||
IDS_LEX_STR_63355 "2nd Multi Edit Indicator"
|
||||
IDS_LEX_STR_63356 "Date-Time"
|
||||
END
|
||||
|
||||
#endif // Japanese (Japan) resources
|
||||
|
||||
@ -446,6 +446,7 @@ BEGIN
|
||||
IDS_LEX_STR_63353 "2nd Inline-IME »ö»ó"
|
||||
IDS_LEX_STR_63354 "Multi Edit Indicator"
|
||||
IDS_LEX_STR_63355 "2nd Multi Edit Indicator"
|
||||
IDS_LEX_STR_63356 "Date-Time"
|
||||
END
|
||||
|
||||
#endif // Korean (Korea) resources
|
||||
|
||||
@ -446,6 +446,7 @@ BEGIN
|
||||
IDS_LEX_STR_63353 "2nd Inline-IME Color"
|
||||
IDS_LEX_STR_63354 "Multi Edit Indicator"
|
||||
IDS_LEX_STR_63355 "2nd Multi Edit Indicator"
|
||||
IDS_LEX_STR_63356 "Date-Time"
|
||||
END
|
||||
|
||||
#endif // Dutch (Netherlands) resources
|
||||
|
||||
@ -446,6 +446,7 @@ BEGIN
|
||||
IDS_LEX_STR_63353 "2nd Inline-IME Color"
|
||||
IDS_LEX_STR_63354 "Multi Edit Indicator"
|
||||
IDS_LEX_STR_63355 "2nd Multi Edit Indicator"
|
||||
IDS_LEX_STR_63356 "Date-Time"
|
||||
END
|
||||
|
||||
#endif // Polish (Poland) resources
|
||||
|
||||
@ -446,6 +446,7 @@ BEGIN
|
||||
IDS_LEX_STR_63353 "2nd Inline-IME Color"
|
||||
IDS_LEX_STR_63354 "Multi Edit Indicator"
|
||||
IDS_LEX_STR_63355 "2nd Multi Edit Indicator"
|
||||
IDS_LEX_STR_63356 "Date-Time"
|
||||
END
|
||||
|
||||
#endif // Portuguese (Brazil) resources
|
||||
|
||||
@ -446,6 +446,7 @@ BEGIN
|
||||
IDS_LEX_STR_63353 "2nd Inline-IME Color"
|
||||
IDS_LEX_STR_63354 "Multi Edit Indicator"
|
||||
IDS_LEX_STR_63355 "2nd Multi Edit Indicator"
|
||||
IDS_LEX_STR_63356 "Date-Time"
|
||||
END
|
||||
|
||||
#endif // Russian (Russia) resources
|
||||
|
||||
@ -446,6 +446,7 @@ BEGIN
|
||||
IDS_LEX_STR_63353 "备选:输入法候选文本颜色"
|
||||
IDS_LEX_STR_63354 "Multi Edit Indicator"
|
||||
IDS_LEX_STR_63355 "2nd Multi Edit Indicator"
|
||||
IDS_LEX_STR_63356 "Date-Time"
|
||||
END
|
||||
|
||||
#endif // Chinese (Simplified, PRC) resources
|
||||
|
||||
@ -1 +1 @@
|
||||
"RC"
|
||||
"Oniguruma"
|
||||
|
||||
@ -3,8 +3,8 @@
|
||||
<assemblyIdentity
|
||||
name="Notepad3"
|
||||
processorArchitecture="*"
|
||||
version="5.19.611.2250"
|
||||
version="5.19.613.2252"
|
||||
type="win32"
|
||||
/>
|
||||
<description>Notepad3 RC</description>
|
||||
<description>Notepad3 Oniguruma</description>
|
||||
</assembly>
|
||||
|
||||
@ -27,17 +27,24 @@ constexpr bool IsLineBreak(const int ch) noexcept {
|
||||
return ((ch == '\n') || (ch == '\r'));
|
||||
}
|
||||
|
||||
inline int IsNumber(const Scintilla::StyleContext& sc) {
|
||||
return Scintilla::IsADigit(sc.ch) || (((sc.ch == '+') || (sc.ch == '-')) && Scintilla::IsADigit(sc.chNext));
|
||||
}
|
||||
|
||||
constexpr int IsNumHex(const Scintilla::StyleContext& sc) noexcept {
|
||||
return (sc.chNext == 'x') || (sc.chNext == 'X');
|
||||
return (sc.ch == '0') && (sc.chNext == 'x') || (sc.chNext == 'X');
|
||||
}
|
||||
|
||||
constexpr int IsNumBinary(const Scintilla::StyleContext& sc) noexcept {
|
||||
return (sc.chNext == 'b') || (sc.chNext == 'B');
|
||||
return (sc.ch == '0') && (sc.chNext == 'b') || (sc.chNext == 'B');
|
||||
}
|
||||
|
||||
|
||||
inline int IsNumOctal(const Scintilla::StyleContext& sc) {
|
||||
return Scintilla::IsADigit(sc.chNext) || (sc.chNext == 'o');
|
||||
return (sc.ch == '0') && (sc.chNext == 'o') || (sc.chNext == 'O');
|
||||
}
|
||||
|
||||
inline int IsNumExponent(const Scintilla::StyleContext& sc) {
|
||||
return Scintilla::IsADigit(sc.ch) && ((sc.chNext == 'e') || (sc.chNext == 'E'));
|
||||
}
|
||||
|
||||
inline bool IsAIdentifierChar(const int ch) {
|
||||
|
||||
@ -54,24 +54,6 @@ namespace {
|
||||
return SCE_TOML_VALUE;
|
||||
}
|
||||
|
||||
inline bool IsFuncName(const char* str) {
|
||||
const char* identifiers[] = {
|
||||
"proc",
|
||||
"func",
|
||||
"macro",
|
||||
"method",
|
||||
"template",
|
||||
"iterator",
|
||||
"converter"
|
||||
};
|
||||
for (const char* id : identifiers) {
|
||||
if (strcmp(str, id) == 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
struct OptionsTOML {
|
||||
bool fold;
|
||||
bool foldCompact;
|
||||
@ -82,8 +64,8 @@ namespace {
|
||||
}
|
||||
};
|
||||
|
||||
static const char* const tomlWordListDesc[] = {
|
||||
"TOML",
|
||||
static const char* const tomlWordListsDesc[] = {
|
||||
"Keyword",
|
||||
nullptr
|
||||
};
|
||||
|
||||
@ -93,34 +75,46 @@ namespace {
|
||||
DefineProperty("fold", &OptionsTOML::fold, "FOLD COMMENT");
|
||||
DefineProperty("fold.compact", &OptionsTOML::foldCompact, "FOLDCOMPACT COMMENT");
|
||||
|
||||
DefineWordListSets(tomlWordListDesc);
|
||||
DefineWordListSets(tomlWordListsDesc);
|
||||
}
|
||||
};
|
||||
|
||||
LexicalClass lexicalClasses[] = {
|
||||
// Lexer TOML SCLEX_TOML SCE_TOML_:
|
||||
0, "SCE_TOML_DEFAULT", "default", "Default",
|
||||
1, "SCE_TOML_COMMENT", "comment", "Comment",
|
||||
2, "SCE_TOML_KEY", "key", "Key",
|
||||
1, "SCE_TOML_KEYWORD", "keyword", "Keyword",
|
||||
2, "SCE_TOML_COMMENT", "comment", "Comment",
|
||||
3, "SCE_TOML_SECTION", "section", "Section",
|
||||
4, "SCE_TOML_ASSIGNMENT", "assignment", "Assignment",
|
||||
5, "SCE_TOML_DEFVAL", "default value", "Default Value",
|
||||
6, "SCE_TOML_VALUETYPE", "value type", "Value Type",
|
||||
7, "SCE_TOML_PARSINGERROR", "type error", "Type Error",
|
||||
4, "SCE_TOML_KEY", "key", "Key",
|
||||
5, "SCE_TOML_ASSIGNMENT", "assignment", "Assignment",
|
||||
6, "SCE_TOML_VALUE", "value", "Value",
|
||||
7, "SCE_TOML_NUMBER", "number", "Number",
|
||||
8, "SCE_TOML_STR_BASIC", "string_basic", "Basic String",
|
||||
9, "SCE_TOML_STR_LITERAL", "string_basic", "Literal String",
|
||||
10, "SCE_TOML_PARSINGERROR", "type_error", "Type Error",
|
||||
};
|
||||
|
||||
} // end of namespace
|
||||
|
||||
class LexerTOML : public DefaultLexer {
|
||||
CharacterSet setWord;
|
||||
|
||||
CharacterSet validKey;
|
||||
//CharacterSet validKeyWord;
|
||||
CharacterSet validNumberEnd;
|
||||
CharacterSet chDateTime;
|
||||
|
||||
WordList keywords;
|
||||
|
||||
OptionsTOML options;
|
||||
OptionSetTOML osTOML;
|
||||
|
||||
public:
|
||||
LexerTOML()
|
||||
: DefaultLexer(lexicalClasses, ELEMENTS(lexicalClasses))
|
||||
, setWord(CharacterSet::setAlphaNum, "_", 0x80, true)
|
||||
, validKey(CharacterSet::setAlphaNum, R"(-_.)", 0x80, false)
|
||||
//, validKeyWord(CharacterSet::setAlphaNum, "_", 0x80, false)
|
||||
, validNumberEnd(CharacterSet::setNone, " \t\n\v\f\r#,)}]", 0x80, false)
|
||||
, chDateTime(CharacterSet::setNone, "-:TZ", 0x80, false)
|
||||
{ }
|
||||
|
||||
virtual ~LexerTOML() { }
|
||||
@ -169,11 +163,8 @@ public:
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
Sci_Position SCI_METHOD PropertySet(const char* key, const char* val) override;
|
||||
|
||||
Sci_Position SCI_METHOD WordListSet(int n, const char* wl) override;
|
||||
|
||||
void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument* pAccess) override;
|
||||
|
||||
void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument* pAccess) override;
|
||||
|
||||
};
|
||||
@ -202,7 +193,6 @@ Sci_Position SCI_METHOD LexerTOML::WordListSet(int n, const char* wl)
|
||||
if (wordListN) {
|
||||
WordList wlNew;
|
||||
wlNew.Set(wl);
|
||||
|
||||
if (*wordListN != wlNew) {
|
||||
wordListN->Set(wl);
|
||||
firstModification = 0;
|
||||
@ -225,51 +215,117 @@ constexpr bool IsAssignChar(const int ch) noexcept {
|
||||
}
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
inline bool IsAKeyChar(const int ch) {
|
||||
return (IsAlphaNumeric(ch) || ch == '_');
|
||||
}
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
|
||||
static int GetBracketLevel(StyleContext& sc)
|
||||
static int GetBracketLevel(StyleContext& sc, const bool stopAtLnBreak = false)
|
||||
{
|
||||
Sci_Position const posCurrent = static_cast<Sci_Position>(sc.currentPos);
|
||||
|
||||
bool ignore = false;
|
||||
int iBracketLevel = -1;
|
||||
int inInlTbl = 0;
|
||||
|
||||
Sci_Position i = 0;
|
||||
while ((--i + posCurrent) >= 0)
|
||||
while (((--i + posCurrent) >= 0))
|
||||
{
|
||||
if (sc.GetRelative(i) == '"') {
|
||||
ignore = !ignore; // toggle string
|
||||
int const ch = sc.GetRelative(i);
|
||||
|
||||
if (stopAtLnBreak && IsLineBreak(ch)) {
|
||||
break;
|
||||
}
|
||||
else if (!ignore) {
|
||||
if (IsAssignChar(sc.GetRelative(i))) {
|
||||
break; // must be within assignment
|
||||
}
|
||||
else if (sc.GetRelative(i) == ']') {
|
||||
--iBracketLevel;
|
||||
}
|
||||
else if (sc.GetRelative(i) == '[') {
|
||||
++iBracketLevel;
|
||||
}
|
||||
|
||||
if (ch == '}') {
|
||||
++inInlTbl;
|
||||
}
|
||||
else if (ch == '{') {
|
||||
--inInlTbl;
|
||||
}
|
||||
|
||||
if (IsAssignChar(ch) && (inInlTbl == 0)) {
|
||||
break; // must be the assignment begin
|
||||
}
|
||||
else if (ch == ']') {
|
||||
--iBracketLevel;
|
||||
}
|
||||
else if (ch == '[') {
|
||||
++iBracketLevel;
|
||||
}
|
||||
}
|
||||
return iBracketLevel;
|
||||
}
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
static bool IsDateTimeStr(StyleContext& sc, const CharacterSet& validCh, const CharacterSet& valEnd)
|
||||
{
|
||||
Sci_Position const posCurrent = static_cast<Sci_Position>(sc.currentPos);
|
||||
Sci_Position const posEnd = static_cast<Sci_Position>(sc.lineStartNext);
|
||||
|
||||
Sci_Position i = 0;
|
||||
bool bDateTimeFlag = false;
|
||||
|
||||
while ((++i + posCurrent) < posEnd)
|
||||
{
|
||||
int const ch = sc.GetRelative(i);
|
||||
|
||||
if (!Scintilla::IsADigit(ch) && !validCh.Contains(ch) && (ch != '.')) {
|
||||
if (valEnd.Contains(ch)) {
|
||||
return bDateTimeFlag;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (validCh.Contains(ch)) {
|
||||
bDateTimeFlag = true;
|
||||
}
|
||||
}
|
||||
return bDateTimeFlag;
|
||||
}
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
|
||||
static bool IsLookAheadLineEmpty(StyleContext& sc)
|
||||
{
|
||||
Sci_Position const posCurrent = static_cast<Sci_Position>(sc.currentPos);
|
||||
Sci_Position const posEnd = static_cast<Sci_Position>(sc.lineStartNext);
|
||||
|
||||
Sci_Position i = 0;
|
||||
bool bLHLineEmpty = true;
|
||||
|
||||
while ((++i + posCurrent) < posEnd)
|
||||
{
|
||||
int const ch = sc.GetRelative(i);
|
||||
|
||||
if (!Scintilla::IsASpace(ch)) {
|
||||
if (IsCommentChar(ch)) {
|
||||
break; // ignore rest of line
|
||||
}
|
||||
bLHLineEmpty = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return bLHLineEmpty;
|
||||
}
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
void SCI_METHOD LexerTOML::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument* pAccess)
|
||||
{
|
||||
Accessor styler(pAccess, nullptr);
|
||||
StyleContext sc(startPos, length, initStyle, styler);
|
||||
|
||||
bool inSQuotedKey = false;
|
||||
bool inDQuotedKey = false;
|
||||
bool inInnerQKey = false;
|
||||
|
||||
bool inSectionDef = false;
|
||||
bool inMultiLnString = (sc.state == SCE_TOML_STRING);
|
||||
bool inMultiLnArrayDef = (sc.state == SCE_TOML_ARRAY);
|
||||
|
||||
bool inMultiLnString = (sc.state == SCE_TOML_STR_BASIC) || (sc.state == SCE_TOML_STR_LITERAL);
|
||||
bool inMultiLnArrayDef = false;
|
||||
|
||||
bool inHex = false;
|
||||
bool inBin = false;
|
||||
bool inOct = false;
|
||||
|
||||
for (; sc.More(); sc.Forward())
|
||||
{
|
||||
@ -278,23 +334,26 @@ void SCI_METHOD LexerTOML::Lex(Sci_PositionU startPos, Sci_Position length, int
|
||||
// check if in the middle of a line continuation ...
|
||||
// --------------------------------------------------
|
||||
if (sc.atLineStart) {
|
||||
inMultiLnArrayDef = (GetBracketLevel(sc) >= 0);
|
||||
inSQuotedKey = inDQuotedKey = inInnerQKey = false; // clear
|
||||
switch (sc.state)
|
||||
{
|
||||
case SCE_TOML_STRING:
|
||||
case SCE_TOML_STR_BASIC:
|
||||
case SCE_TOML_STR_LITERAL:
|
||||
if (!inMultiLnString) {
|
||||
sc.SetState(SCE_TOML_PARSINGERROR);
|
||||
}
|
||||
break;
|
||||
case SCE_TOML_ARRAY:
|
||||
if (!inMultiLnArrayDef) {
|
||||
sc.SetState(SCE_TOML_PARSINGERROR);
|
||||
}
|
||||
case SCE_TOML_ASSIGNMENT:
|
||||
sc.SetState(SCE_TOML_PARSINGERROR);
|
||||
break;
|
||||
case SCE_TOML_PARSINGERROR:
|
||||
// preserve error
|
||||
break;
|
||||
default:
|
||||
sc.SetState(SCE_TOML_DEFAULT); // reset
|
||||
if (!inMultiLnArrayDef) {
|
||||
sc.SetState(SCE_TOML_DEFAULT); // reset
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -339,21 +398,35 @@ void SCI_METHOD LexerTOML::Lex(Sci_PositionU startPos, Sci_Position length, int
|
||||
sc.SetState(SCE_TOML_SECTION);
|
||||
inSectionDef = true;
|
||||
}
|
||||
else if (IsAKeyChar(sc.ch)) {
|
||||
else if (validKey.Contains(sc.ch)) {
|
||||
sc.SetState(SCE_TOML_KEY);
|
||||
}
|
||||
else {
|
||||
sc.SetState(SCE_TOML_PARSINGERROR);
|
||||
else { // not valid - maybe quoted
|
||||
if (sc.ch == '"') {
|
||||
inDQuotedKey = true;
|
||||
sc.SetState(SCE_TOML_KEY);
|
||||
}
|
||||
else if (sc.ch == '\'') {
|
||||
inSQuotedKey = true;
|
||||
sc.SetState(SCE_TOML_KEY);
|
||||
}
|
||||
else {
|
||||
sc.SetState(SCE_TOML_PARSINGERROR);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case SCE_TOML_COMMENT:
|
||||
// eat - rest of line is comment
|
||||
break;
|
||||
|
||||
|
||||
case SCE_TOML_SECTION:
|
||||
if (sc.ch == ']') {
|
||||
inSectionDef = false;
|
||||
if (GetBracketLevel(sc, true) == 0) {
|
||||
inSectionDef = false;
|
||||
}
|
||||
}
|
||||
else if (IsCommentChar(sc.ch)) {
|
||||
if (!inSectionDef) {
|
||||
@ -365,24 +438,65 @@ void SCI_METHOD LexerTOML::Lex(Sci_PositionU startPos, Sci_Position length, int
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case SCE_TOML_KEY:
|
||||
if (IsASpaceOrTab(sc.ch)) {
|
||||
sc.SetState(SCE_TOML_ASSIGNMENT); // end of key
|
||||
if ((sc.ch == '"') && inDQuotedKey) {
|
||||
if (inInnerQKey) {
|
||||
sc.SetState(SCE_TOML_PARSINGERROR);
|
||||
}
|
||||
else {
|
||||
sc.ForwardSetState(SCE_TOML_ASSIGNMENT); // end of key
|
||||
}
|
||||
}
|
||||
else if ((sc.ch == '\'') && inSQuotedKey) {
|
||||
if (inInnerQKey) {
|
||||
sc.SetState(SCE_TOML_PARSINGERROR);
|
||||
}
|
||||
else {
|
||||
sc.ForwardSetState(SCE_TOML_ASSIGNMENT); // end of key
|
||||
}
|
||||
}
|
||||
else if (IsASpaceOrTab(sc.ch)) {
|
||||
if (!(inSQuotedKey || inDQuotedKey || inInnerQKey)) {
|
||||
sc.SetState(SCE_TOML_ASSIGNMENT); // end of key
|
||||
}
|
||||
// else eat
|
||||
}
|
||||
else if (IsAssignChar(sc.ch)) {
|
||||
sc.SetState(SCE_TOML_ASSIGNMENT);
|
||||
if (!(inSQuotedKey || inDQuotedKey || inInnerQKey)) {
|
||||
sc.SetState(SCE_TOML_ASSIGNMENT);
|
||||
}
|
||||
// else eat
|
||||
}
|
||||
else if (!IsAKeyChar(sc.ch)) {
|
||||
sc.SetState(SCE_TOML_PARSINGERROR);
|
||||
else if (validKey.Contains(sc.ch)) {
|
||||
// eat
|
||||
}
|
||||
else {
|
||||
if ((sc.ch == '"') && inSQuotedKey) {
|
||||
inInnerQKey = !inInnerQKey; //toggle
|
||||
}
|
||||
else if ((sc.ch == '\'') && inDQuotedKey) {
|
||||
inInnerQKey = !inInnerQKey; //toggle
|
||||
}
|
||||
else if (!(inSQuotedKey || inDQuotedKey || inInnerQKey)) {
|
||||
sc.SetState(SCE_TOML_PARSINGERROR);
|
||||
}
|
||||
// else eat
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case SCE_TOML_ASSIGNMENT:
|
||||
if (IsAssignChar(sc.ch)) {
|
||||
sc.ForwardSetState(SCE_TOML_VALUE);
|
||||
if (!IsLookAheadLineEmpty(sc)) {
|
||||
sc.ForwardSetState(SCE_TOML_VALUE);
|
||||
}
|
||||
else {
|
||||
sc.SetState(SCE_TOML_PARSINGERROR);
|
||||
}
|
||||
// fall through case SCE_TOML_VALUE:
|
||||
}
|
||||
else if (IsASpaceOrTab(sc.ch)) {
|
||||
else if (IsASpace(sc.ch)) {
|
||||
break; // OK
|
||||
}
|
||||
else {
|
||||
@ -393,48 +507,11 @@ void SCI_METHOD LexerTOML::Lex(Sci_PositionU startPos, Sci_Position length, int
|
||||
|
||||
case SCE_TOML_VALUE:
|
||||
if (sc.ch == '[') {
|
||||
sc.SetState(SCE_TOML_ARRAY);
|
||||
inMultiLnArrayDef = true;
|
||||
}
|
||||
else if (sc.ch == ']') {
|
||||
sc.SetState(SCE_TOML_PARSINGERROR);
|
||||
}
|
||||
else if (sc.ch == '"') {
|
||||
sc.SetState(SCE_TOML_STRING);
|
||||
if (sc.Match(R"(""")")) {
|
||||
inMultiLnString = true;
|
||||
sc.Forward(2);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case SCE_TOML_STRING:
|
||||
if (sc.ch == '\\') {
|
||||
sc.ForwardSetState(SCE_TOML_STRING);
|
||||
}
|
||||
else if (sc.ch == '"') {
|
||||
if (!inMultiLnString) {
|
||||
sc.ForwardSetState(SCE_TOML_VALUE);
|
||||
}
|
||||
else {
|
||||
// inMultiLnString
|
||||
if (sc.Match(R"(""")")) {
|
||||
sc.Forward(2);
|
||||
sc.ForwardSetState(SCE_TOML_VALUE);
|
||||
inMultiLnString = false;
|
||||
}
|
||||
else {
|
||||
sc.SetState(SCE_TOML_PARSINGERROR);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case SCE_TOML_ARRAY:
|
||||
if (sc.ch == ']') {
|
||||
int const level = GetBracketLevel(sc);
|
||||
if (level == 0) {
|
||||
sc.ForwardSetState(SCE_TOML_VALUE);
|
||||
inMultiLnArrayDef = false;
|
||||
}
|
||||
else if (level < 0) {
|
||||
@ -442,20 +519,158 @@ void SCI_METHOD LexerTOML::Lex(Sci_PositionU startPos, Sci_Position length, int
|
||||
inMultiLnArrayDef = false;
|
||||
}
|
||||
}
|
||||
else if (IsNumber(sc)) {
|
||||
if (IsDateTimeStr(sc, chDateTime, validNumberEnd)) {
|
||||
sc.SetState(SCE_TOML_DATETIME);
|
||||
}
|
||||
else {
|
||||
sc.SetState(SCE_TOML_NUMBER);
|
||||
if ((sc.ch == '+') || (sc.ch == '-')) {
|
||||
sc.Forward();
|
||||
}
|
||||
inHex = IsNumHex(sc);
|
||||
inBin = IsNumBinary(sc);
|
||||
inOct = IsNumOctal(sc);
|
||||
if (inHex || inBin || inOct) {
|
||||
sc.Forward(2);
|
||||
}
|
||||
if (IsNumExponent(sc)) {
|
||||
sc.Forward(2);
|
||||
if ((sc.ch == '+') || (sc.ch == '-')) {
|
||||
sc.Forward();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (sc.ch == '"') {
|
||||
sc.SetState(SCE_TOML_STR_BASIC);
|
||||
if (sc.Match(R"(""")")) {
|
||||
inMultiLnString = true;
|
||||
sc.Forward(2);
|
||||
}
|
||||
}
|
||||
else if (sc.ch == '\'') {
|
||||
sc.SetState(SCE_TOML_STR_LITERAL);
|
||||
if (sc.Match(R"(''')")) {
|
||||
inMultiLnString = true;
|
||||
sc.Forward(2);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case SCE_TOML_PARSINGERROR:
|
||||
// still parsing error until new line
|
||||
|
||||
case SCE_TOML_NUMBER:
|
||||
if (sc.ch == '_') {
|
||||
// eat // TODO: only once
|
||||
}
|
||||
else if (inHex || inBin || inOct) {
|
||||
if (validNumberEnd.Contains(sc.ch)) {
|
||||
sc.SetState(SCE_TOML_VALUE);
|
||||
inHex = false;
|
||||
inBin = false;
|
||||
inOct = false;
|
||||
}
|
||||
else {
|
||||
if ((inHex && !IsADigit(sc.ch, 16)) ||
|
||||
(inBin && !IsADigit(sc.ch, 2)) ||
|
||||
(inOct && !IsADigit(sc.ch, 8)))
|
||||
{
|
||||
sc.SetState(SCE_TOML_PARSINGERROR);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (IsNumExponent(sc)) {
|
||||
sc.Forward();
|
||||
if ((sc.chNext == '+') || (sc.chNext == '-')) {
|
||||
sc.Forward();
|
||||
}
|
||||
}
|
||||
else if (sc.ch == '.') {
|
||||
// eat // TODO: only once
|
||||
}
|
||||
else if (IsADigit(sc.ch)) {
|
||||
// eat
|
||||
}
|
||||
else {
|
||||
if (validNumberEnd.Contains(sc.ch)) {
|
||||
sc.SetState(SCE_TOML_VALUE);
|
||||
inHex = false;
|
||||
inBin = false;
|
||||
inOct = false;
|
||||
}
|
||||
else {
|
||||
sc.SetState(SCE_TOML_PARSINGERROR);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case SCE_TOML_DATETIME:
|
||||
if (!IsADigit(sc.ch) && !chDateTime.Contains(sc.ch) && (sc.ch != '.')) {
|
||||
if (validNumberEnd.Contains(sc.ch)) {
|
||||
sc.SetState(SCE_TOML_VALUE);
|
||||
}
|
||||
else {
|
||||
sc.SetState(SCE_TOML_PARSINGERROR);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case SCE_TOML_STR_BASIC:
|
||||
case SCE_TOML_STR_LITERAL:
|
||||
if (sc.ch == '"') {
|
||||
if (sc.state == SCE_TOML_STR_BASIC) {
|
||||
if (sc.chPrev != '\\') {
|
||||
if (!inMultiLnString) {
|
||||
sc.ForwardSetState(SCE_TOML_VALUE);
|
||||
}
|
||||
else {
|
||||
// inMultiLnString
|
||||
if (sc.Match(R"(""")")) {
|
||||
sc.Forward(2);
|
||||
sc.ForwardSetState(SCE_TOML_VALUE);
|
||||
inMultiLnString = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (sc.ch == '\'') {
|
||||
if (sc.state == SCE_TOML_STR_LITERAL) {
|
||||
if (!inMultiLnString) {
|
||||
sc.ForwardSetState(SCE_TOML_VALUE);
|
||||
}
|
||||
else {
|
||||
// inMultiLnString
|
||||
if (sc.Match(R"(''')")) {
|
||||
sc.Forward(2);
|
||||
sc.ForwardSetState(SCE_TOML_VALUE);
|
||||
inMultiLnString = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case SCE_TOML_PARSINGERROR:
|
||||
// keep parsing error until new line
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
sc.SetState(SCE_TOML_PARSINGERROR); // unknown
|
||||
break;
|
||||
}
|
||||
|
||||
//if (sc.atLineEnd) {
|
||||
// // ---
|
||||
//}
|
||||
//~if (sc.atLineEnd) {
|
||||
//~ if (!inMultiLnArrayDef && !inMultiLnString) {
|
||||
//~ if (sc.state == SCE_TOML_VALUE) {
|
||||
//~ sc.ForwardSetState(SCE_TOML_DEFAULT);
|
||||
//~ }
|
||||
//~ }
|
||||
//~}
|
||||
|
||||
}
|
||||
sc.Complete();
|
||||
@ -550,7 +765,7 @@ void SCI_METHOD LexerTOML::Fold(Sci_PositionU startPos, Sci_Position length, int
|
||||
}
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
LexerModule lmTOML(SCLEX_TOML, LexerTOML::LexerFactoryTOML, "toml", tomlWordListDesc);
|
||||
LexerModule lmTOML(SCLEX_TOML, LexerTOML::LexerFactoryTOML, "toml", tomlWordListsDesc);
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
|
||||
@ -43,14 +43,17 @@
|
||||
|
||||
|
||||
#define SCE_TOML_DEFAULT 0
|
||||
#define SCE_TOML_COMMENT 1
|
||||
#define SCE_TOML_SECTION 2
|
||||
#define SCE_TOML_KEY 3
|
||||
#define SCE_TOML_ASSIGNMENT 4
|
||||
#define SCE_TOML_VALUE 5
|
||||
#define SCE_TOML_STRING 6
|
||||
#define SCE_TOML_ARRAY 7
|
||||
#define SCE_TOML_PARSINGERROR 8
|
||||
#define SCE_TOML_KEYWORD 1
|
||||
#define SCE_TOML_COMMENT 2
|
||||
#define SCE_TOML_SECTION 3
|
||||
#define SCE_TOML_KEY 4
|
||||
#define SCE_TOML_ASSIGNMENT 5
|
||||
#define SCE_TOML_VALUE 6
|
||||
#define SCE_TOML_NUMBER 7
|
||||
#define SCE_TOML_DATETIME 8
|
||||
#define SCE_TOML_STR_BASIC 9
|
||||
#define SCE_TOML_STR_LITERAL 10
|
||||
#define SCE_TOML_PARSINGERROR 11
|
||||
|
||||
|
||||
#endif //_SCIXLEXER_H_
|
||||
|
||||
@ -8326,7 +8326,6 @@ void EditFoldPerformAction(DocLn ln, int mode, FOLD_ACTION action)
|
||||
else {
|
||||
fToggled = _FoldToggleNode(ln, action);
|
||||
}
|
||||
if (fToggled) { SciCall_ScrollCaret(); }
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -3163,7 +3163,7 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
i == SCLEX_SQL || i == SCLEX_PERL || i == SCLEX_PYTHON || i == SCLEX_PROPERTIES ||i == SCLEX_CONF ||
|
||||
i == SCLEX_POWERSHELL || i == SCLEX_BATCH || i == SCLEX_DIFF || i == SCLEX_BASH || i == SCLEX_TCL ||
|
||||
i == SCLEX_AU3 || i == SCLEX_LATEX || i == SCLEX_AHKL || i == SCLEX_RUBY || i == SCLEX_CMAKE || i == SCLEX_MARKDOWN ||
|
||||
i == SCLEX_YAML || i == SCLEX_REGISTRY || i == SCLEX_NIMROD) && !ro);
|
||||
i == SCLEX_YAML || i == SCLEX_REGISTRY || i == SCLEX_NIMROD || i == SCLEX_TOML) && !ro);
|
||||
|
||||
EnableCmd(hmenu, CMD_CTRLENTER, !ro);
|
||||
EnableCmd(hmenu, IDM_EDIT_INSERT_TAG, !ro);
|
||||
@ -4573,6 +4573,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
|
||||
case SCLEX_YAML:
|
||||
case SCLEX_COFFEESCRIPT:
|
||||
case SCLEX_NIMROD:
|
||||
case SCLEX_TOML:
|
||||
EditToggleLineComments(Globals.hwndEdit, L"#", true);
|
||||
break;
|
||||
case SCLEX_ASM:
|
||||
@ -4636,6 +4637,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
|
||||
case SCLEX_JSON:
|
||||
case SCLEX_REGISTRY:
|
||||
case SCLEX_NIMROD:
|
||||
case SCLEX_TOML:
|
||||
break;
|
||||
case SCLEX_HTML:
|
||||
case SCLEX_XML:
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
|
||||
//KEYWORDLIST KeyWords_TOML = EMPTY_KEYWORDLIST;
|
||||
KEYWORDLIST KeyWords_TOML = {
|
||||
"Keyword",
|
||||
"false inf nan table true", // Keyword
|
||||
"", "", "", "", "", "", "", "" };
|
||||
|
||||
|
||||
@ -13,11 +13,14 @@ SCLEX_TOML, IDS_LEX_TOML_CFG, L"TOML Config", L"toml", L"",
|
||||
&KeyWords_TOML,{
|
||||
{ {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" },
|
||||
//{ {SCE_TOML_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" },
|
||||
{ {SCE_TOML_KEYWORD}, IDS_LEX_STR_63128, L"Keyword", L"fore:#E00000", L"" },
|
||||
{ {SCE_TOML_COMMENT}, IDS_LEX_STR_63127, L"Comment", L"fore:#008000", L"" },
|
||||
{ {SCE_TOML_SECTION}, IDS_LEX_STR_63232, L"Section", L"bold; fore:#000000; back:#FFF1A8; eolfilled", L"" },
|
||||
{ {SCE_TOML_KEY}, IDS_LEX_STR_63348, L"Key", L"bold; fore:#5E608F", L"" },
|
||||
{ {SCE_TOML_ASSIGNMENT}, IDS_LEX_STR_63233, L"Assignment", L"bold; fore:#FF2020", L"" },
|
||||
{ {SCE_TOML_VALUE}, IDS_LEX_STR_63201, L"Value", L"fore:#202020", L"" },
|
||||
{ {SCE_TOML_STRING}, IDS_LEX_STR_63131, L"String", L"italic; fore:#800000", L"" },
|
||||
{ {SCE_TOML_NUMBER}, IDS_LEX_STR_63130, L"Number", L"fore:#0000E0", L"" },
|
||||
{ {SCE_TOML_DATETIME}, IDS_LEX_STR_63356, L"Date-Time", L"fore:#950095", L"" },
|
||||
{ {MULTI_STYLE(SCE_TOML_STR_BASIC, SCE_TOML_STR_LITERAL,0,0)}, IDS_LEX_STR_63131, L"String", L"italic; fore:#800000", L"" },
|
||||
{ {SCE_TOML_PARSINGERROR}, IDS_LEX_STR_63252, L"Parsing Error", L"fore:#FFFF00; back:#A00000", L"" },
|
||||
EDITLEXER_SENTINEL } };
|
||||
|
||||
@ -68,7 +68,7 @@
|
||||
#if defined(_MSC_VER)
|
||||
#if (_MSC_VER >= 1920)
|
||||
#if(_MSC_FULL_VER >= 192127702)
|
||||
#define VER_CPL MS Visual C++ 2019 v16.1.(0-2)
|
||||
#define VER_CPL MS Visual C++ 2019 v16.1.(0-3)
|
||||
#elif(_MSC_FULL_VER >= 192027508)
|
||||
#define VER_CPL MS Visual C++ 2019 v16.0.(0-4)
|
||||
#elif(_MSC_FULL_VER >= 192027027)
|
||||
|
||||
@ -7,8 +7,8 @@
|
||||
#define SAPPNAME "Notepad3"
|
||||
#define VERSION_MAJOR 5
|
||||
#define VERSION_MINOR 19
|
||||
#define VERSION_REV 611
|
||||
#define VERSION_BUILD 2250
|
||||
#define VERSION_REV 613
|
||||
#define VERSION_BUILD 2252
|
||||
#define SCINTILLA_VER 416
|
||||
#define ONIGMO_REGEX_VER 6.2.0
|
||||
#define VERSION_PATCH RC
|
||||
#define ONIGURUMA_REGEX_VER 6.9.2
|
||||
#define VERSION_PATCH Oniguruma
|
||||
|
||||
142
test/txtfiles/AHKL.ahk
Normal file
142
test/txtfiles/AHKL.ahk
Normal file
@ -0,0 +1,142 @@
|
||||
; =============================================================================
|
||||
; Regression Tests Notepad3 Gui
|
||||
; Needs files in a Test Directory:
|
||||
; Notepad3.exe and Notepad3.ini (from distrib)
|
||||
; Execute: AutoHotkeyU32.exe "TestAhkNotepad3.ahk"
|
||||
; =============================================================================
|
||||
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
|
||||
; #Warn ; Enable warnings to assist with detecting common errors.
|
||||
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
|
||||
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
|
||||
SetBatchLines, -1
|
||||
StringCaseSense, Off
|
||||
CoordMode, Pixel, Screen
|
||||
; =============================================================================
|
||||
|
||||
v_NP3Name = Notepad3
|
||||
v_NP3TestDir = %A_WorkingDir%\_TESTDIR
|
||||
v_NP3IniFile = %v_NP3Name%.ini
|
||||
|
||||
stdout := FileOpen("*", "w")
|
||||
v_ExitCode := 0
|
||||
|
||||
; =============================================================================
|
||||
|
||||
Run, %v_NP3TestDir%/%v_NP3Name%.exe %v_NP3TestDir%/%v_NP3IniFile%, , UseErrorLevel, v_Notepad3_PID
|
||||
v_ErrLevel = %ErrorLevel%
|
||||
if (v_ErrLevel != 0)
|
||||
{
|
||||
stdout.WriteLine("*** ERROR: " . v_NP3Name . "could not be launched.")
|
||||
v_ExitCode := 1
|
||||
Goto LABEL_END
|
||||
}
|
||||
; -----------------------------------------------------------------------------
|
||||
|
||||
GoSub CHECK_NP3_STARTS
|
||||
Sleep, 500
|
||||
GoSub CHECK_WIN_TITLE
|
||||
Sleep, 500
|
||||
GoSub CHECK_ABOUT_BOX
|
||||
|
||||
|
||||
Goto LABEL_END
|
||||
; =============================================================================
|
||||
|
||||
; =============================================================================
|
||||
CHECK_NP3_STARTS:
|
||||
; check that NP3 starts up
|
||||
WinWait ahk_pid %v_Notepad3_PID%, , 10
|
||||
v_ErrLevel = %ErrorLevel%
|
||||
if (v_ErrLevel != 0)
|
||||
{
|
||||
stdout.WriteLine("*** ERROR: " . v_NP3Name . "'s seems not to start in time ???")
|
||||
v_ExitCode := 2
|
||||
Goto LABEL_END
|
||||
}
|
||||
Return
|
||||
; =============================================================================
|
||||
|
||||
; =============================================================================
|
||||
CHECK_WIN_TITLE:
|
||||
; check Main Window Title
|
||||
WinGetTitle, v_NP3Title, ahk_pid %v_Notepad3_PID%
|
||||
|
||||
IfNotInString, v_NP3Title, %v_NP3Name%
|
||||
{
|
||||
v_ExitCode := 3
|
||||
stdout.WriteLine("*** ERROR: " . v_NP3Name . " missing in Title: " . v_NP3Title)
|
||||
}
|
||||
IfNotInString, v_NP3Title, %v_NP3IniFile%
|
||||
{
|
||||
v_ExitCode := 3
|
||||
stdout.WriteLine("*** ERROR: " . v_NP3IniFile . " missing in Title: " . v_NP3Title)
|
||||
}
|
||||
IfNotInString, v_NP3Title, %v_NP3TestDir%
|
||||
{
|
||||
v_ExitCode := 3
|
||||
stdout.WriteLine("*** ERROR: " . v_NP3TestDir . " missing in Title: " . v_NP3Title)
|
||||
}
|
||||
If (v_ExitCode != 0)
|
||||
{
|
||||
Goto LABEL_END
|
||||
}
|
||||
Return
|
||||
; =============================================================================
|
||||
|
||||
; =============================================================================
|
||||
CHECK_ABOUT_BOX:
|
||||
; check About DlgBox
|
||||
WinActivate, ahk_pid %v_Notepad3_PID%
|
||||
|
||||
; This will select File->Open in Notepad:
|
||||
WinMenuSelectItem, ahk_pid %v_Notepad3_PID%, , Help, About...
|
||||
|
||||
WinWait, About %v_NP3Name%, , 3
|
||||
v_ErrLevel = %ErrorLevel%
|
||||
if (v_ErrLevel != 0)
|
||||
{
|
||||
v_ExitCode := 4
|
||||
stdout.WriteLine("*** ERROR: " . v_NP3Name . "'s About Box is not displayed!")
|
||||
Goto LABEL_END
|
||||
}
|
||||
WinActivate ; About Box
|
||||
;ControlFocus, OK, About %v_NP3Name%
|
||||
ControlClick, OK, About %v_NP3Name%
|
||||
;Send {Enter}
|
||||
WinWaitClose, About %v_NP3Name%, , 2
|
||||
v_ErrLevel = %ErrorLevel%
|
||||
if (v_ErrLevel != 0)
|
||||
{
|
||||
v_ExitCode := 5
|
||||
stdout.WriteLine("*** ERROR: " . v_NP3Name . "'s About Box can not be closed!")
|
||||
Goto LABEL_END
|
||||
}
|
||||
Return
|
||||
; =============================================================================
|
||||
|
||||
; =============================================================================
|
||||
LABEL_END:
|
||||
WinClose ahk_pid %v_Notepad3_PID%, , 2
|
||||
v_ErrLevel = %ErrorLevel%
|
||||
if (v_ErrLevel != 0)
|
||||
{
|
||||
v_ExitCode := 99
|
||||
stdout.WriteLine("*** ERROR: " . v_NP3Name . "can not be closed!")
|
||||
}
|
||||
; -------------------------------------
|
||||
WinWaitClose ahk_pid %v_Notepad3_PID%
|
||||
v_ErrLevel = %ErrorLevel%
|
||||
if (v_ErrLevel != 0)
|
||||
{
|
||||
v_ExitCode := 111
|
||||
; FORCED Kill / HANGUP
|
||||
}
|
||||
; -------------------------------------
|
||||
if (v_ExitCode != 0)
|
||||
{
|
||||
stdout.WriteLine("*** ERROR: Testing " . v_NP3Name . " exit with: " . v_ExitCode)
|
||||
ExitApp, %v_ExitCode%
|
||||
}
|
||||
stdout.WriteLine("Testing " . v_NP3Name . ": All tests PASSED.")
|
||||
ExitApp, 0
|
||||
; =============================================================================
|
||||
12
test/txtfiles/Encoding/Cyril2Korean_mix.txt
Normal file
12
test/txtfiles/Encoding/Cyril2Korean_mix.txt
Normal file
@ -0,0 +1,12 @@
|
||||
п я р с т у Я ж в ь ы з ш э щ ч ъ Ю А Б Ц Д Е Ф Г Х И Й К Л М Н О
|
||||
п я р с т у Я ж в ь ы з ш э щ ч ъ Ю А Б Ц Д Е Ф Г Х И Й К Л М Н О
|
||||
п я р с т у Я ж в ь ы з ш э щ ч ъ Ю А Б Ц Д Е Ф Г Х И Й К Л М Н О
|
||||
|
||||
있을 것이다. 우선 인력 물적교류가 없이 기술교류가 Ю
|
||||
있을 것이다. 우선 인력 물적교류가 없이 기술교류가 Ю
|
||||
있을 것이다. 우선 인력 물적교류가 없이 기술교류가 Ю
|
||||
|
||||
п я р с т у Я ж в ь ы з ш э щ ч ъ Ю А Б Ц Д Е Ф Г Х И Й К Л М Н О
|
||||
п я р с т у Я ж в ь ы з ш э щ ч ъ Ю А Б Ц Д Е Ф Г Х И Й К Л М Н О
|
||||
п я р с т у Я ж в ь ы з ш э щ ч ъ Ю А Б Ц Д Е Ф Г Х И Й К Л М Н О
|
||||
п я р с т у Я ж в ь ы з ш э щ ч ъ Ю А Б Ц Д Е Ф Г Х И Й К Л М Н О
|
||||
12
test/txtfiles/Encoding/Cyrillic_ANSI_KOI8-R.txt
Normal file
12
test/txtfiles/Encoding/Cyrillic_ANSI_KOI8-R.txt
Normal file
@ -0,0 +1,12 @@
|
||||
привет
|
||||
и
|
||||
го
|
||||
ко
|
||||
ск
|
||||
ст
|
||||
привет
|
||||
привет
|
||||
привет
|
||||
привет
|
||||
привет
|
||||
привет
|
||||
0
test/txtfiles/Encoding/empty.txt
Normal file
0
test/txtfiles/Encoding/empty.txt
Normal file
41
test/txtfiles/NFO/DEADLINE.NFO
Normal file
41
test/txtfiles/NFO/DEADLINE.NFO
Normal file
@ -0,0 +1,41 @@
|
||||
|
||||
ワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワワ
|
||||
|
||||
ロロロロロロロ ロロロロロロ ロロロロロロロロロ ロロロロロロロワ ロロロロ ロロロ ロロロロ ロロロロ ロロロロロロ
|
||||
ロロロロロロロロワ ロロロロロロ ロロロロロロロロロ ロロロロロロロロワ ロロロロ ロイ ロロロロ ロロロロ ロロロロロロ
|
||||
ロロロロロロロロロ ロロロロロロ ゚゚゚゚゚ロロロロ ロロロロロロロロロ ロロロロ ロア ロ ロロロロロ ロロロロ ロロロロロロ
|
||||
ロロロロ ロロロロ ロロロロ ロロロロ ロロロロ ロロロロ ロロロロ ゚ ゚゚ ロロロロロロロロロロ ロロロロ
|
||||
ロロロロ ロロロロ ロロロロ ロロロロ ロイロロ ロロロロ ロロロロ ロロロロ ロロロロ ロロロロロロロロロロ ロロロロ
|
||||
ロロロロ ロロロロ ロロイロ ロロロロ ロアイロ ロロロロ ロロイロ ロロロロ ロロロロ ロロロロロロロロロロ ロロロロ
|
||||
ロロイロ ロロイロ ロロイロ ロロロロ ローイロ ロロイロ ロロイロ ロイイロ ロロロロ ロロイロロロイイイロ ロイイロ
|
||||
ロイイロ ロイイロ ロイイロロロ ロロイロワローイロ ロイイロ ロイアロ ロイイロ ロイロロ ロイイロ ロイアイロ ロイイロロロ
|
||||
ロイイロ ロイアロ ロイアアロロ ロロイイイイイイロ ロイイロ ロイアロ ロイイロ ロイロロ ロイイロ イアイロ ロイアアロロ
|
||||
ロイアロ ロイアロ ロアアロ゚゚ ロイイロ゚ロロイロ ロイアロ ロイアロ ロアアロ ロアイロ ロイアロ イーアロ ロアアロ゚゚
|
||||
ロアアロ ロアアロ ロアアロ ロイアロ ロロアロ ロアアロ ロアーロ ロアアロ ロアアロ ロアアロ ロイアロ ロアアロ
|
||||
ロアアロ ロアーロ ロアアロ ロアアロ ロイアロ ロアアロ ロアーロ ロアーロ ローアロ ロアーロ ロイーロ ロアアロ
|
||||
ロアーロ ロアーロ ローーロ ロアアロ ロアアロ ロアーロ ロアーロ ロアーロ ローーロ ロアーロ ロアーロ ローーロ
|
||||
ローーロ ローーロ ローーロ ロアーロ ローーロ ローーロ ローーロ ローーロ ロ ーロ ローーロ ロアーロ ローーロ
|
||||
ローーロ ローーロ ローーロ ローーロ ローーロ ローーロ ロー ロ ローーロ ゚゚゚゚ ローーロ ローーロ ローーロ
|
||||
ローーロワローーロ ローーロワワ ローーロ ロ ーロ ローーロワロー ロ ローー゚゚゚゚゚ロ ローーロ ローーロ ロ ーロワワ
|
||||
ロー ロ゚ ロ ーアロロ ロ ーロ ロ ーロ ロー ワ゚ ロ ロ ロー ロ ロー ロ ロ ーアロロ
|
||||
゚゚゚゚゚゚゚ ゚゚゚゚゚゚ ゚゚゚゚ ゚゚゚゚ ゚゚゚゚゚゚゚゚ ゚゚゚゚゚゚゚゚゚ ゚゚゚゚ ゚゚゚゚ ゚゚゚゚゚゚
|
||||
D E A D L i N E
|
||||
|
||||
NODE I : 416-xxx-xxxx (USR. 28.8k Dual Standard)
|
||||
NODE II : 416-xxx-xxxx (USR. 28.8k Dual Standard)
|
||||
NODE III : 416-xxx-xxxx (USR. 28.8k Dual Standard)
|
||||
|
||||
0-2 Days OnLy, 4.8 GIG ONLINE!
|
||||
PCB V15.1 CUSTOMIZED!
|
||||
|
||||
Sysop : Lover Boy
|
||||
Management Sysop : Violent Soldier
|
||||
File-Co-Sysop : Urlord; Maverick; John Lennon
|
||||
File-Support : Sidewinder
|
||||
PPe/Hacker Co. : The File Pullutor
|
||||
AnSi Artist : Wolffy Boy
|
||||
|
||||
Distribution Sites : (CAN.) TVB, CAE, CIA, TSC, DEATH
|
||||
(H.K.) SAMUEL WORKS!, NICE BBS!
|
||||
|
||||
゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚゚
|
||||
23
test/txtfiles/NFO/PENTIUM.NFO
Normal file
23
test/txtfiles/NFO/PENTIUM.NFO
Normal file
@ -0,0 +1,23 @@
|
||||
|
||||
トトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトト
|
||||
*RiNgDoWn* DOMINATORS WHQ +45 39-660-609! *RiNgDoWn*
|
||||
トトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトト
|
||||
ノヘヘヘヘヘヘヘサ ノヘヘヘヘヘヘヘサ ノヘヘヘヘヘヘヘヘサ ノヘヘヘヘヘヘヘヘサ ノヘヘサ ノヘヘサ ノヘヘサ ノヘヘヘヘヘヘヘヘヘヘヘヘサ
|
||||
ネヘヘヘヘサ コ ネヘヘヘヘヘヘヘシ ネヘヘヘヘヘサ コ ネヘヘヘヘヘヘヘヘシ ネヘヘシ コ コ コ コ コ ノヘヘヘヘヘヘサ コ
|
||||
ノヘヘサ コ コ ノヘヘヘヘヘヘサ ノヘヘサ コ コ ノヘヘサ ノヘヘサ コ コ コ コ コ コ ノヘヘサ コ コ
|
||||
コ ネヘシ コ コ ノヘヘヘシ コ コ コ コ コ コ コ コ コ コ コ コ コ コ コ コ コ コ
|
||||
コ ノヘヘヘヘシ コ コ コ コ コ コ コ コ コ コ コ コ コ コ コ コ コ コ コ コ
|
||||
コ コ コ ネヘヘヘヘサ コ コ コ コ コ コ コ コ コ ネヘヘシ コ コ コ コ コ コ コ
|
||||
ネヘヘシ ネヘヘヘヘヘヘヘシ ネヘヘシ ネヘヘシ ネヘヘシ ネヘヘシ ネヘヘヘヘヘヘヘヘシ ネヘヘシ ネヘヘシ ネヘヘシ
|
||||
The Next Generation of WareZ!
|
||||
トトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトト
|
||||
*RiNgDoWn* DOMINATORS WHQ +45 39-660-609! *RiNgDoWn*
|
||||
トトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトト
|
||||
Sysop: MAGIC
|
||||
|
||||
Node 1 - 16K8 Dual! --^^RINGDOWN^^-- Node 2 - 16K8 Dual!
|
||||
Node 3 - Dominators PRIVATE
|
||||
|
||||
DOMINATORS WORLD HQ!
|
||||
TRSI/FAITH DANISH HQ
|
||||
Nup: SHITFACE
|
||||
189
test/txtfiles/NFO/jerry.nfo
Normal file
189
test/txtfiles/NFO/jerry.nfo
Normal file
@ -0,0 +1,189 @@
|
||||
ÜÜÜÛÛÛÛÛÛÛÛÛÜÜÜÜÜÜÜ
|
||||
ÜÜßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜÜÜ
|
||||
ÜÜÛÛÛÛÛÜß ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜÜ
|
||||
ÜÛÛÛÛÛÛÛÛ ÜßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜ
|
||||
ÜÛÛÛÛÛÛÛÛÛÛÛÛÛÜÜßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜ
|
||||
ÜÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
ÜÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜ
|
||||
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜ
|
||||
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
ßßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛßßßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
ßÛÛÛÛÛÛÛÛÛÛÛÛß ßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
ÛÛÛßÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
ÜÛÛÛ Ý ÛÛÛÛÛÛÜ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛßÜÜÜßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
ÜÜÛÛÛÛ Þ ÛÛÛÛÛÛÛÛÜÜ ÜÛÛÛÛÛÛÛÛÛÛÛÛßßÛÜÛÛÛÛÛÞÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
ÛÛÛÛÛÝ Þ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛßÜÛÛÜßÛÛÛÛÝÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
ÛÛÛÛÛÜÛÜÛÜÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÞÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛß ßÛÛÛÛÛÛÛÛÛß ÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
ÞÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜÜ ßßÛÛÛß ÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
ÛÛÛÛÛÛÝÛÛÛßÛÛÛÛÛÛÞÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÜßÛÛÛÛÛÛÛÛÛÛ ÜÜÜÜ
|
||||
ÞÛß ßÛÝßÛÛÝÛÛÛÛÛß ÛÛÝÛÛÛÛÝ ÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛß ÜÛÛÛÛÛß ÜÜÛ
|
||||
ß ß ß ßß ßÛß ÜÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛß ÜÛÛÛÛß ÜÛÛÛÛ
|
||||
Üßß ÜÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛßßÜÜÛÛÛÛÛß ÜÛÛÛÛßß
|
||||
ß ÜÛÛÛÛÛÛÛÛÛÛÛÛÛ ßßßÜÜÛÛÛÛÛÛßß ÜÜÛÛÛÛß
|
||||
ÜÛÛÜÛÛÜ ÜÛÝÜÜ Ü ÜÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÜÜÜÛÛÛÛÛÛß ÜÜÛ
|
||||
ßÛÛÞÛÛÛÝÞÛÛÞÛÛÝ ÛÛÞÜ ÜÜÛÛÛÛÛÛÛÛÛÛÛÛÛÛß ßßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜÛÛÛÛÛ
|
||||
ßÛÛÛÛÛÛÜÛÛÛÛÛÜÞÛÜÛÛÛÜÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛßß ßß ßÛÛÛÛÛÛÛßÛÛÛÛÛÛÛÛÛÛÛ
|
||||
ÜÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛß ÜÜÜßßÜßÛÛÛÛÛÛßÛÛÛÛ
|
||||
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛß ÜÛÛÛÛÛÛß ßß ßÛÛßÜ
|
||||
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛßß ÜÛÛÛÛÛÛß ÜÛÜÜÛÜ
|
||||
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛßßß ÛÛÛÛÛÛÛ ÜÛÛÛÛÛÛß
|
||||
ßÛÛßßÛÛÛÛÛÛÛÛÛÛÛßß ÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛ
|
||||
ßßÛÛÛßß ÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛ
|
||||
ÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛ
|
||||
ÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛ
|
||||
ÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛ
|
||||
|
||||
-ZED NITRO/DEAD WEIGHT-
|
||||
|
||||
°°°°±±²²Ü °°°°±±²²Û °°°°±±²²Ü °°°°±±²²Ü
|
||||
°°±±²² ÛÛ °°±±²²ÜÜ °°±±²²ÜÛÛ °°±±²² ÛÛ
|
||||
±±²²ÛÛ ÛÛ ±±²²ÛÛ ±±²²ÛÛ ÛÛ ±±²²ÛÛ ÛÛ
|
||||
Ä ÄÄ ÄÄÄ Ä²²ÛÛÛÛÄÛÛIJ²ÛÛÛÛÄÄÄIJ²ÛÛÛÛÄÛÛIJ²ÛÛÛÛÄÛÛÄ ÄÄÄ ÄÄ Ä
|
||||
Ä ÄÍ ÍÍ ÛÛÛÛÛÛÍÛÛÍÛÛÛÛÛÛÍÍÍÍÛÛÛÛÛÛÍÛÛÍÛÛÛÛÛÛÍÛÛ ÍÍ ÍÄ Ä
|
||||
ÛÛÛÛÛÛÛÛß ÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛ ÛÛ ÛÛÛÛÛÛÛÛß
|
||||
|
||||
ÜÜÜÜ ÜÜÜÜ ÜÜÜÜÜÜÜÜÜÜ ÜÜÜÜ ÜÜÜÜÜÜÜÜÜÜ ÜÜÜÜ ÜÜÜÜ ÜÜÜÜÜÜÜÜÜÜ
|
||||
²ÛÛ² ²ÛÛ² ²ÛÛÛÛÛÛÛÛ² ²ÛÛ² ²ÛÛÛÛÛÛÛÛÛ ²ÛÛ² ²ÛÛ² ²ÛÛÛÛÛÛÛÛ²
|
||||
±²²± ±²²± ±²²±ßßßßßß ±²²± ±²²±ßßßßßß ±²²± ±²²± ßßß±²²±ßßß
|
||||
°±±° °±±° °±±° °±±° °±±° °±±° °±±° °±±°
|
||||
°°°° °°°° °°°°ÜÜÜÜ °°°° °°°° ÜÜÜÜÜ °°°°Üܰ°°° °°°°
|
||||
° ° ° ° ° Û ° ° ° ° Û Û ° ° ° ° ° °
|
||||
ÛÛ ÛÛ ÛÛ ßßßß ÛÛ ÛÛ ßßÛÛ ÛÛ ßß ÛÛ ÛÛ
|
||||
°²²°ÜÛܰ²²° °²²° °²²° °²²° °²²° °²²° °²²° °²²°
|
||||
±±±±±±±±±±± ±±±±ÜÜÜÜÜÜ ±±±± ±±±±Üܱ±±± ±±±± ±±±± ±±±±
|
||||
²°°°°ß°°°°² ²°°°°°°°°² ²°°² ²°°°°°°°°² ²°°² ²°°² ²°°²
|
||||
ßßßß ßßßß ßßßßßßßßßß ßßßß ßßßßßßßßßß ßßßß ßßßß ßßßß
|
||||
|
||||
|
||||
Ü ° Ü Ü ÜÜ ÜÜÜ ÜÜÜÜÜÜÜÜÜÜÛ DEAD WEIGHT Present ÛÜÜÜÜÜÜÜÜÜÜ ÜÜÜ ÜÜ Ü Ü ° Ü
|
||||
± ±
|
||||
² Product...< Tom and Jerry Arcade From Hi Tech Expression > ²
|
||||
Û Ä Ä ÄÄ ÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄ ÄÄ Ä Ä Û
|
||||
Û Released..< 6/29/93 > Rating....< 4/10 > Û
|
||||
Û Ä Ä ÄÄ ÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄ ÄÄ Ä Ä Û
|
||||
Û Supplier..< Parity Error > Packaged..< Parity Error > Û
|
||||
Û Ä Ä ÄÄ ÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄ ÄÄ Ä Ä Û
|
||||
Û Disk/Kb...< 1 Disk / 200 K > Cracker...< None Needed > Û
|
||||
Û Ä Ä ÄÄ ÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄ ÄÄ Ä Ä Û
|
||||
Û GrafX Support: [x] EGA [x] VGA [ ] SVGA [ ] Windows [ ] None Û
|
||||
Û Sound Support: [x] Beeper [x] Adlib [x] Sblaster [x] Roland [ ] None Û
|
||||
Û Û
|
||||
ß ßßß ß ß ßß ßßß ßßßßß ßßßßßßßßßßßßßßßßßßßßßßßßßß ßßßßß ßßßß ßßß ßß ß ß ßßß ß
|
||||
² ²
|
||||
± ±
|
||||
° °
|
||||
|
||||
|
||||
ÚİÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ[ Release Note ]ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
|
||||
³ ± ³
|
||||
³ ² From the makers of Rollerblade Racer. It is an arcade game based ³
|
||||
³ Û upon the Tom and Jerry cartoon series. It is a nintendo like ° ³
|
||||
³ Û horizontal movement game where you collect hearts and all that, ± ³
|
||||
³ Û just like all those nintendo games. Anyway, will put out docs for it ² ³
|
||||
³ Û shortly. ² ³
|
||||
³ Û ² ³
|
||||
ÀÄÛÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÛÄÙ
|
||||
ßßßÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛßßß
|
||||
Û Greetings goes to: FaCeLeSS, Dr. Detergent Û
|
||||
: ² Group Greets to: Razor 1911, THG, TDT, Skillion, Public Enemy ² :
|
||||
| ± Courier Groups: SWAT, United couriers, Exodus, Malice ± |
|
||||
ÀİÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄİÄÙ
|
||||
|
||||
Ü ° Ü Ü ÜÜ ÜÜÜ ÜÜÜÜÜÜÜÛ D.E.A.D W.E.I.G.H.T ÛÜÜÜÜÜÜÜÜÜ ÜÜÜ ÜÜ Ü Ü ° Ü
|
||||
± ±
|
||||
² Ä Ä ÄÄ ÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ[ SR.STAFF ]ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄ ÄÄ Ä Ä ²
|
||||
Û Û
|
||||
Û Capt Bligh , Parity Error Û
|
||||
Û Û
|
||||
Û Ä Ä ÄÄ ÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ[ MEMBERS ]ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄ ÄÄ Ä Ä Û
|
||||
Û Û
|
||||
Û Boba Fett , Dark Spectre , Fletch , Neuro Basher Û
|
||||
Û Sir Real , Stingray , Tank , Zed Nitro Û
|
||||
Û Û
|
||||
Û Ä Ä ÄÄ ÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄ[ Courier Coordinator ]ÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄ ÄÄ Ä Ä Û
|
||||
Û Û
|
||||
Û General Protocol, CyberChrist Û
|
||||
Û Û
|
||||
Û Ä Ä ÄÄ ÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ[ COURIERS ]ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄ ÄÄ Ä Ä Û
|
||||
Û Û
|
||||
Û Dark Spyre, Loki, Lord Cyric, The Invid, Blackie Û
|
||||
Û Dealer, Kinky o Nepal, Keef Steel, Black Widow Û
|
||||
Û NightShade, StormBlade, Weapon X, The Cardinal Û
|
||||
Û Der Schatten, MEGA, The Plague, Maniac, Sonic, Sox Û
|
||||
Û Û
|
||||
ß ßßß ß ß ßß ßßß ßßßßß ßßßßßßßßßßßßßßßßßßßßßßßßßß ßßßßß ßßßß ßßß ßß ß ß ßßß ß
|
||||
² ²
|
||||
± ±
|
||||
° °
|
||||
|
||||
|
||||
ÚİÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ[ DEAD WEIGHT BOARDS ]ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄİĿ
|
||||
³ ± Name Number w/Nodes Sysop(s) Position ± ³
|
||||
ÀIJÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄIJÄÙ
|
||||
ßßßÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛßßß
|
||||
Û [ All HQs ] Û
|
||||
Û Ä Ä ÄÄ ÄÄÄ ÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ ÄÄÄ ÄÄ Ä Ä Û
|
||||
Û THE BOUNTY ³ XXX-XXX-XXXX ³ 1 ³ Capt Bligh ³ WORLD HQ Û
|
||||
: ² METAL ADDICTION ³ 514-XXX-XXXX ³ 1 ³ Zed Nitro ³ CANADIAN HQ ² :
|
||||
| ± STREET SPYDRS ³ 713-XXX-XXXX ³ 4 ³ Maverick ³ COURIER HQ ± |
|
||||
| ± UNDERGROUND PUB ³ +358-X-XXXXXX ³ 1 ³ Kinky o Nepal ³ FINLAND HQ ± |
|
||||
ÃİÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄİĴ
|
||||
³ [ MEMBER BOARDS ] ³
|
||||
ÃÄ Ä ÄÄ ÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄ ÄÄÄ ÄÄ Ä Ä´
|
||||
³ Distant Lands ³ 613-XXX-XXXX ³ 1 ³ General Prot. ³ Member Board ³
|
||||
³ Ride The Ligntening ³ 713-852-2928 ³ 1 ³ Stingray ³ Member Board ³
|
||||
³ Bad Medicine ³ 604-XXX-XXXX ³ 2 ³ Boba Fett ³ Member Board ³
|
||||
ÃÄ Ä ÄÄ ÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄ ÄÄÄ ÄÄ Ä Ä´
|
||||
³ [ SITES ] ³
|
||||
ÃÄ Ä ÄÄ ÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄ ÄÄÄ ÄÄ Ä Ä´
|
||||
³ Alien Nation ³ 813-493-1871 ³ 1 ³ Evil Enforcer ³ Dist. Site ³
|
||||
³ Bedlam ³ 313-699-2718 ³ 3 ³ Mr.Bill ³ Dist. Site ³
|
||||
³ Enchanted Grove ³ 502-893-7414 ³ 1 ³ Draken ³ Dist. Site ³
|
||||
³ Jurassic Park ³ 619-756-5229 ³ 1 ³ Targa ³ Dist. Site ³
|
||||
³ Outland BBS ³ 509-468-9808 ³ 1 ³ Gadget ³ Dist. Site ³
|
||||
³ The Trash Heap ³ 405-751-1604 ³ 1 ³ Greaser ³ Dist. Site ³
|
||||
³ Underground Oasis ³ 201-818-4894 ³ 3 ³ Mister Twister ³ Dist. Site ³
|
||||
³ Vanishing Point ³ 604-599-5711 ³ 1 ³ Kodiak ³ Dist. Site ³
|
||||
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
|
||||
|
||||
Ü ° Ü Ü ÜÜ ÜÜÜ ÜÜÜÜÜÜÜÜÜÜÜÜÜÛ PLEASE NOTE ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ ÜÜÜ ÜÜ Ü Ü ° Ü
|
||||
± ±
|
||||
² We are now accepting applications, please pick up an appcliation at ²
|
||||
Û any DEAD WEIGHT HQ , or contact us at our P.O.Box Û
|
||||
Û Ä Ä ÄÄ ÄÄÄ ÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄ ÄÄÄ ÄÄ Ä Ä Û
|
||||
Û Û
|
||||
Û DEAD WEIGHT Û
|
||||
Û P.O Box 6623 Û
|
||||
Û Katy, TX 77491-6623 Û
|
||||
Û Û
|
||||
Û Û
|
||||
Û Or Call: Û
|
||||
Û Û
|
||||
Û Ride The Lightning Û
|
||||
Û (713)852-2928 Û
|
||||
Û V32bis Only Û
|
||||
Û Û
|
||||
Û Name: Guest Û
|
||||
Û Password: Wannabe Û
|
||||
Û Û
|
||||
Û Û
|
||||
Û Or Call: Û
|
||||
Û Û
|
||||
Û 1-800-333-4876 Extension 301 Û
|
||||
Û and leave a message on our VMB Û
|
||||
Û Be sure to leave a voice number Û
|
||||
Û where you can be reached. Û
|
||||
Û Û
|
||||
Û Û
|
||||
Û Ä Ä ÄÄ ÄÄÄ ÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄ ÄÄÄ ÄÄ Ä Ä Û
|
||||
Û Û
|
||||
ß ßßß ß ß ßß ßßß ßßßßß ßßßßßßßßßßßßßßßßßßßßßßßßßß ßßßßß ßßßß ßßß ßß ß ß ßßß ß
|
||||
² ²
|
||||
± ±
|
||||
° °
|
||||
26
test/txtfiles/NFO/test.nfo
Normal file
26
test/txtfiles/NFO/test.nfo
Normal file
@ -0,0 +1,26 @@
|
||||
|
||||
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||
º º
|
||||
ÌÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍ͹
|
||||
º º º º
|
||||
º º º º
|
||||
º º Test º º
|
||||
º º º º
|
||||
º º º º
|
||||
ÌÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍ͹
|
||||
º º
|
||||
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
|
||||
|
||||
Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
|
||||
sed diam nonumy eirmod tempor invidunt ut labore et dolore
|
||||
magna aliquyam erat, sed diam voluptua.
|
||||
At vero eos et accusam et justo duo dolores et ea rebum.
|
||||
Stet clita kasd gubergren, no sea takimata sanctus est
|
||||
Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet,
|
||||
consetetur sadipscing elitr,
|
||||
sed diam nonumy eirmod tempor invidunt ut labore et
|
||||
dolore magna aliquyam erat, sed diam voluptua.
|
||||
At vero eos et accusam et justo duo dolores et ea rebum.
|
||||
Stet clita kasd gubergren, no sea takimata sanctus est
|
||||
Lorem ipsum dolor sit amet.
|
||||
|
||||
148
test/txtfiles/NFO/wwc94.nfo
Normal file
148
test/txtfiles/NFO/wwc94.nfo
Normal file
@ -0,0 +1,148 @@
|
||||
|
||||
ÛÛßßßß± ÛÛßßßß²ÛÛßßßß± ÛÛßßßß²± ÜÜÜÛßßßßßß°ÜÜ
|
||||
ÛÛ °± ÞÛÛ °ÛÛ °± ÞÛÛ °² ÜÜÛß ß±Ü
|
||||
ÛÛ Û² ÞÛÛ ÛÛÛ Û² ÞÛÛ Û²ÜÛÛ ÜÜÜÜ ²Û
|
||||
ÞÛÝ ÞÛÝÜÜÜÜÜÜÜÜÞÛÝ ÞÛÞÛÝ ÞÛÝÜÜÜÜÜÜÜÜÞÛÝ ÞÛÝÛÛ ° ÜÛÛß ßÛܰ ÛÛ
|
||||
ÞÛݰ°°ÞÛÝÛ² ° ±°ÞÛݰ°°ÞÛÞÛݰ°°ÞÛÝÛ² ° ±°ÞÛݰ°°ÞÛÝÛÝ °°ÞÛÛ ÞÛݰ° ÞÛÝ
|
||||
ÞÛÛ ±± ÛÛ²² ±± ²ÛÛ² ±±°ÛÛ ÛÛ ±± ÛÛ²² ±± ²ÛÛ² ±±°ÛÛÛÛ ±± ÛÛÝ ßßßßß
|
||||
ÛÛ ²²ÝÛ۱ݲ²²²ÞÛ²±Þ²²±ÛÛ ÛÛ ²²ÝÛ۱ݲ²²²ÞÛ²±Þ²²±ÛÛÛÛ ²²Ý²ÛÝ
|
||||
ÞÛÝ ÞÛ±Ý ÞÛ°Ý ÞÛÝ ÞÛÝ ÞÛ±Ý ÞÛ°Ý ÞÛÝÛÛÞ Ý±²Ý ÜÜÜÜÜ
|
||||
ÞÛݰ°°Þ²²Þ°°°°Ý۲ݰ°°ÞÛ ÞÛݰ°°Þ²²Þ°°°°Ý۲ݰ°°ÞÛÝÝÛݰ°°Þ°Ý ÜÜÞ°°ÞÛÝ
|
||||
ÞÛÛÞ±±Üßܱ±ßß±±Üßܱ±ÝÛÛ ÞÛÛÞ±±Üßܱ±ßß±±Üßܱ±ÝÛÛ ²²Þ±±±ßÛÜ Üß±±±±ÝÛÛ
|
||||
Û²Þ²²²²²²ÝÛÛÞ²²²²²²ÝÛÛ Û²Þ²²²²²²ÝÛÛÞ²²²²²²ÝÛÛ ±±Þ²²²Üßßßßܲ²²ÝÛß
|
||||
Þ±ÝßÛÛÛÛßÞÛÛÝßÛÛÛÛßÞÛÝ Þ±ÝßÛÛÛÛßÞÛÛÝßÛÛÛÛßÞÛÝ ß°ÜßßÛÛÛÛÛÛßßÜß ED
|
||||
±ÜÜÜÜÜÜÛßßÛÜÜÜÜÜÜÛÛ ±ÜÜÜÜÜÜÛßßÛÜÜÜÜÜÜÛÛ ßßß²ÜÜÜÜÜÜÛß iCE
|
||||
|
||||
ù -Ä ÄÄÄÄ] W O R L D ù W I D E ù C O U R I E R S [ÄÄÄÄ -Ä ù
|
||||
" Join the rising force in PC Couriering "
|
||||
|
||||
** WORLD WIDE **
|
||||
ÜÜÜÜÜÜÜ ÜÜÜÜÜÜÜ
|
||||
ÜÜÜÜ ÛÛÛÛÞÛÝ Û ÛÛÛÛÞ ÜÜÜÜ
|
||||
ÜÜÜ ÜÜ Û±²Ûܰ±²ÛÛÛ ÛÛÛÛÞÛÝ Û ÛÛÛÛÞ E M B E R S ÛÛÛ²±°ÜÛ²±Û ÜÜ ÜÜÜ
|
||||
ßß ßßß ßßß ßßß²ÛÛÛß ÛÛÛÛ ÛÛ ÞÛ ÛÛÛÛ ßÛÛÛ²ßßß ßßß ßßß ßß
|
||||
Û ÛÛÛÛ ÛÛ ÛÛ ÛÛÛÛ Û
|
||||
Û ßßßßßß ÞÛÛÛÛ ßßßß Û
|
||||
ÛÛ°° ±±²²
|
||||
²²±± °°ÛÛ
|
||||
±±²² S E N I O R S T A F F ±±²²
|
||||
°°ÛÛ ßßßßßßßßßßßßßßßßßßßßßßßßßß\ ²²±±
|
||||
±±²² SHADOWKEEPER þ COOKIE MONSTER þ EXTRA CREDIT ÛÛ°°
|
||||
²²±± ²²±±
|
||||
±±²² ±±²²
|
||||
Û ÜÜÜÜ ÜÜÜÜ Û
|
||||
Û ÜÜÜ ÜÜ Û±²Ûܰ±²ÛÛÛùWORLD WIDE COURIERS '94ùÛÛÛ²±°ÜÛ²±Û ÜÜ ÜÜÜ Û
|
||||
ßß ßßß ßßß ßßß²ÛÛÛß ßÛÛÛ²ßßß ßßß ßßß ßß ß
|
||||
ÜÜÛÛÛÜ
|
||||
ÜÛÛÛÛÛÛÛÛÛ
|
||||
ÜÜÜÜ ÛÛÛßßßÛÛÛÛß ÜÜÜÜ
|
||||
ÜÜÜ ÜÜ Û±²Ûܰ±²ÛÛÛ ÛÛÛ ß ÛÛÛ²±°ÜÛ²±Û ÜÜ ÜÜÜ
|
||||
ßß ßßß ßßß ßßß²ÛÛÛß ÛÛÛ O U R I E R S ßÛÛÛ²ßßß ßßß ßßß ßßþ
|
||||
Û ÛÛÛÛÜÜ Ü Û
|
||||
Û ßÛÛÛÛÛÛÛÛÛ Û
|
||||
±±²² ßßÛÛÛÛÛ ²²±±
|
||||
°°ÛÛ ÛÛ°°
|
||||
²²±± ì KRYPTON þ POLARIS þ BUSTER HYMAN þ MYXLPLIX þ THE HOBBIT ì ²²±±
|
||||
±±²² ì DR. STUPID þ MR. EMT þ iMAGE þ THE PROWLER þ RAVEN þ AGENT-X ì ÛÛ°°
|
||||
°°ÛÛ ì ZONE MASTER þ CASTOR þ SOUL LEADER þ KNIGHT SABER ì ²²±±
|
||||
²²±± ±±²²
|
||||
ÛÛ°° °°ÛÛ
|
||||
²²±± C O U R I E R C O O R D I N A T O R S ±±²²
|
||||
±±²² ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß\ ²²±±
|
||||
°°ÛÛ þ WORLD þ WIDE þ COURIERING '94 CREW þ ÛÛ°°
|
||||
²²±± ²²±±
|
||||
±±²² S I T E C O O R D I N A T O R S ±±²²
|
||||
°°ÛÛ ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß\ °°ÛÛ
|
||||
²²±± ±±²²
|
||||
ÛÛ°° ²²±±
|
||||
²²±± ÛÛ°°
|
||||
Û ÜÜÜÜ ÜÜÜÜ Û
|
||||
Û ÜÜÜ ÜÜ Û±²Ûܰ±²ÛÛÛùWORLD WIDE COURIERS '94ùÛÛÛ²±°ÜÛ²±Û ÜÜ ÜÜÜ Û
|
||||
ßß ßßß ßßß ßßß²ÛÛÛß ßÛÛÛ²ßßß ßßß ßßß ßß ß
|
||||
|
||||
|
||||
Ü ú Ü ú
|
||||
ÞÝ Üþ H E A D Q U A R T E R S ÞÝ Üþ
|
||||
ÛÜ Üß ÛÜ Üß
|
||||
ÞÝ Ü ú ÞÝ Ü ú
|
||||
þÜ ÛÜßÜ Ü THE GRAVE YARD (World) (xXx)XxX-xXxX ShadowKeeper þÜ ÛÜßÜ Ü
|
||||
þßßÜ ÜÝÜÜß THE BACK ROOM (Eastern) (xXx)XxX-xXxX Nomadd ßÜ ÜÝÜÜß
|
||||
Ü Þ Þ²ÛÝß SHADOW REALM (Canadian) (xXx)XxX-xXxX Shadow Hunter Ü Þ Þ²ÛÝß
|
||||
ú Üß ±ÝßÜ ß ±ÝßÜ
|
||||
ß Þ °Ý ß Þ °Ý
|
||||
Üß ÝÛÛÛ Üß ÝÛÛÛ
|
||||
|
||||
ÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜß
|
||||
ÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜß
|
||||
ÜßÜßÛ ÛÜßÜß
|
||||
ÜßÜßÛ H E A D Q U A R T E R S ÛÜßÜß
|
||||
ÜßÜßÛ ÛÜßÜß
|
||||
ÜßÜßÛ THE GRAVEYARD (World) 2 NODES XXX.XXX.XXXX ShadowKeeper ÛÜßÜß
|
||||
ÜßÜßÛ THE BACK ROOM (Eastern) 2 NODES XXX.XXX.XXXX Nomadd ÛÜßÜß
|
||||
ÜßÜßÛ SHADOW REALM (Canadian) XXX.XXX.XXXX Shadow Hunter ÛÜßÜß
|
||||
ÜßÜßÛ ÛÜßÜß
|
||||
ÜßÜßÛ ÛÜßÜß
|
||||
ÜßÜßÛ U S ì D I S T R I B U T I O N ì S I T E S ÛÜßÜß
|
||||
ÜßÜßÛ ÛÜßÜß
|
||||
ÜßÜßÛ 11TH HOUR BBS 7 NODES 313.XXX.XXXX Marco Polo ÛÜßÜß
|
||||
ÜßÜßÛ FADE TO BLACK 2 NODES 612.XXX.XXXX Ningauble ÛÜßÜß
|
||||
ÜßÜßÛ LEGATO TIMES 2 NODES 702.XXX.XXXX Sonny ÛÜßÜß
|
||||
ÜßÜßÛ X MARKS THE SPOT 909.XXX.XXXX The Armored Saint ÛÜßÜß
|
||||
ÜßÜßÛ DEAD MAN'S BLUFF 310.XXX.XXXX The Overlord ÛÜßÜß
|
||||
ÜßÜßÛ SEA OF HATE 319.XXX.XXXX Toilet Bowl ÛÜßÜß
|
||||
ÜßÜßÛ CABLE ACCESS CHANNEL 10 513.XXX.XXXX Wayne ÛÜßÜß
|
||||
ÜßÜßÛ INTOXIFORNICATION 713.XXX.XXXX Hi Fi Del ÛÜßÜß
|
||||
ÜßÜßÛ KISS OF DEATH 518.XXX.XXXX Rogue ÛÜßÜß
|
||||
ÜßÜßÛ OPTICAL XEROX 314.XXX.XXXX Druidic Priest ÛÜßÜß
|
||||
ÜßÜßÛ GROUND ZERO 4 NODES 707.XXX.XXXX Tagger ÛÜßÜß
|
||||
ÜßÜßÛ ÛÜßÜß
|
||||
ÜßÜßÛ ÛÜßÜß
|
||||
ÜßÜßÛ C A N A D I A N ì D I S T R I B U T I O N ÛÜßÜß
|
||||
ÜßÜßÛ ÛÜßÜß
|
||||
ÜßÜßÛ BOILING NITROGEN 416.XXX.XXXX Hoodlem ÛÜßÜß
|
||||
ÜßÜßÛ HYDROGEN PLACE 613.XXX.XXXX Lord Nuke ÛÜßÜß
|
||||
ÜßÜßÛ THE GARDEN 705.XXX.XXXX Death Carnage ÛÜßÜß
|
||||
ÜßÜßÛ ÛÜßÜß
|
||||
ÜßÜßÛ E U R O ì D I S T R I B U T I O N ÛÜßÜß
|
||||
ÜßÜßÛ Information Not Avilable ÛÜßÜß
|
||||
ÜßÜßÛ ÛÜßÜß
|
||||
ÜßÜßÛ M O R E S I T E S - C O M I N G S O O N! ÛÜßÜß
|
||||
ÜßÜßÛ ù ù ù ù ù ÛÜßÜß
|
||||
ÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜß
|
||||
ÛÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜ
|
||||
|
||||
R e a c h i n g O u t A c r o s s T h e W o r l d !
|
||||
|
||||
ÜÜßßßÛÜ
|
||||
ÜÛßÜß ßÜÛßÜ ÜÜÜÜÛ
|
||||
ÜÜÛÛß ÜÜÜÜÜßßßßßß
|
||||
ÜÜßßÜÜßÜÛßßßßßÜÜßß ÜÜ
|
||||
ßÛßßßßÜ Ü ÜÜÛßÜÜÛßßßÜßÜß ÜÜ ÜÛÛÛß
|
||||
ßßÜßßÛÜÜ Ü ÜÜ ÜÜÜÛÛÛÛßßßßÜÜÜÜßÜßßßßßßÛßßÜß ßß
|
||||
ßÛßßÛ ÛÛÛÛÛÛÛÛÛÛÛÜßßßßßßÜßßßß
|
||||
Ü ÜÜÛÛÛÜÜ ÜÜÜÛÛÛÜ ÜÜÜÛÛÛÜÜÜ ßßÜÛßßÛÛÛÛÛÛÛÛßÛßÜÜÜÜÜÜÛÛßÜÛÜÜÜÜ ÜÜÜ ÜÜÛÛÛ
|
||||
ÛÛÜ ßßßßÛÛÜÜÛÛÛßßß ÜÜÛÛÛßßß úÞÝ ÜßßÜÜÜßÜÜÜÜß ßßßßßßßß ßßßßßßßßÜßßßßÛÜÜß
|
||||
ßßÛÛÜ ÜÜÛÛßÜ ÜÜÛÛß ÜßßßÜÜß ÞÞßßÜÜÜßLogaN/iCE
|
||||
Û²ÛÛ ÛÛ ÛÛÛÛÛ²ÛÛ ÛÛ ÛÛÛÛß ÞÝ ÝÝ ÞÞÛ Ý
|
||||
Û±ÛÛÞÛÝÛÛÛ Û±ÛÛÞÛÝÛÛÛÞÝú ßÜ ÜÝ Þ ÝÛÝ
|
||||
Û°ÛÛÛÛÛÛ Û°ÛÛÛÛÛÛ ßÜÜú ßßßÛßß Þ ÝÛÛÝ
|
||||
ßß ßß ßß ßß ßßßßß ÞÝ ÝÛÛÛ
|
||||
W o r l d W i d e C o u r i e r sÞÝ ÛÜÛÛÝ
|
||||
ÜÛÝ ÞÛÛÛÛ
|
||||
NEWS/INFORMATION ÜÛÛÜÛ ÞßÛÛÛÛÛÛÜ
|
||||
ÜÛÛÛÛÛÛÛÛÛÛÛßßßßßßßÛßßßßßßÛÛÛÛßßßßßßßßßÜß ßÜßßßßßÛÛÛßßßßßÛÛÛßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜ
|
||||
Ûßßßßßßßß ßßßßßßßßÛ
|
||||
Þ
|
||||
Interested in becoming a Site or a Courier for WWC;
|
||||
Contact Extra Credit on any of the WWC HQ's. If you can't
|
||||
get onto these boards then your not worthy of becoming a courier
|
||||
or a site. You can leave Extra Credit E-mail at 714-999-5556,
|
||||
leave him mail at the matrix prompt.
|
||||
|
||||
Greets: UC, SpectruM, QuantuM, CrimsoN, RiSC
|
||||
THG, iNC, TDT, TRSI, PTG, RZR, FLT, PiL, PE, NX, MGK, RGB, and you!
|
||||
|
||||
|
||||
|
||||
(c) WWC '94
|
||||
<Updated: 01/07/93>
|
||||
BIN
test/txtfiles/Registry.reg
Normal file
BIN
test/txtfiles/Registry.reg
Normal file
Binary file not shown.
BIN
test/txtfiles/Rust.rs
Normal file
BIN
test/txtfiles/Rust.rs
Normal file
Binary file not shown.
339
test/txtfiles/TOML.toml
Normal file
339
test/txtfiles/TOML.toml
Normal file
@ -0,0 +1,339 @@
|
||||
# This is a TOML document. - encoding:UTF-8
|
||||
|
||||
title = "TOML Example"
|
||||
|
||||
[owner]
|
||||
name = "Tom Preston-Werner"
|
||||
dob = 1979-05-27T07:32:00-08:00 # First class dates
|
||||
|
||||
[database]
|
||||
server = "192.168.1.1"
|
||||
ports = [ 8001, 8001, 8002 ]
|
||||
connection_max = 5000
|
||||
enabled = true
|
||||
|
||||
[servers]
|
||||
|
||||
# Indentation (tabs and/or spaces) is allowed but not required
|
||||
[servers.alpha]
|
||||
ip = "10.0.0.1"
|
||||
dc = "eqdc10"
|
||||
|
||||
[servers.beta]
|
||||
ip = "10.0.0.2"
|
||||
dc = "eqdc10"
|
||||
|
||||
[clients]
|
||||
data = [ ["gamma", "delta"], [1, 2] ]
|
||||
|
||||
[keys]
|
||||
|
||||
key = "value"
|
||||
key = # INVALID
|
||||
key = "value"
|
||||
bare_key = "value"
|
||||
bare-key = "value"
|
||||
1234 = "value"
|
||||
|
||||
"127.0.0.1" = "value"
|
||||
"character encoding" = "value"
|
||||
"ʎǝʞ" = "value"
|
||||
'key2' = "value"
|
||||
'quoted "value"' = "value"
|
||||
|
||||
|
||||
[strings]
|
||||
str = "I'm a string. \"You can quote me\". Name\tJos\u00E9\nLocation\tSF."
|
||||
|
||||
str1 = """
|
||||
Roses are red
|
||||
Violets are blue"""
|
||||
|
||||
# On a Unix system, the above multi-line string will most likely be the same as:
|
||||
str2 = "Roses are red\nViolets are blue"
|
||||
|
||||
# On a Windows system, it will most likely be equivalent to:
|
||||
str3 = "Roses are red\r\nViolets are blue"
|
||||
|
||||
# The following strings are byte-for-byte equivalent:
|
||||
str1 = "The quick brown fox jumps over the lazy dog."
|
||||
|
||||
str2 = """
|
||||
The quick brown \
|
||||
|
||||
|
||||
fox jumps over \
|
||||
the lazy dog."""
|
||||
|
||||
str3 = """\
|
||||
The quick brown \
|
||||
fox jumps over \
|
||||
the lazy dog.\
|
||||
"""
|
||||
|
||||
### String Literals ###
|
||||
regex2 = '''I [dw]on't need \d{2} apples'''
|
||||
|
||||
lines = '''
|
||||
The first newline is
|
||||
trimmed in raw strings.
|
||||
All other whitespace
|
||||
is preserved.
|
||||
'''
|
||||
|
||||
# What you see is what you get.
|
||||
winpath = 'C:\Users\nodejs\templates'
|
||||
winpath2 = '\\ServerX\admin$\system32\'
|
||||
quoted = 'Tom "Dubs" Preston-Werner'
|
||||
regex = '<\i\c*\s*>'
|
||||
|
||||
str4 = """
|
||||
Roses are red
|
||||
Violets are blue"""
|
||||
|
||||
|
||||
[numbers]
|
||||
|
||||
int1 = +99
|
||||
int2 = 42
|
||||
int3 = 0
|
||||
int4 = -17
|
||||
int5 = 1_000
|
||||
int6 = 5_349_221
|
||||
int7 = 1_2_3_4_5 # VALID but discouraged
|
||||
|
||||
# hexadecimal with prefix `0x`
|
||||
hex1 = 0xDEADBEEF
|
||||
hex2 = 0xdeadbeef
|
||||
hex3 = 0xdead_beef
|
||||
|
||||
# octal with prefix `0o`
|
||||
oct1 = 0o01234567
|
||||
oct2 = 0o755 # useful for Unix file permissions
|
||||
|
||||
# binary with prefix `0b`
|
||||
bin1 = 0b11010110
|
||||
|
||||
# fractional
|
||||
flt1 = +1.0
|
||||
flt2 = 3.1415
|
||||
flt3 = -0.01
|
||||
|
||||
# exponent
|
||||
flt4 = 5e+22
|
||||
flt5 = 1e6
|
||||
flt6 = -2E-2
|
||||
|
||||
# both
|
||||
flt7 = 6.626e-34
|
||||
flt8 = 224_617.445_991_228
|
||||
# infinity
|
||||
sf1 = inf # positive infinity
|
||||
sf2 = +inf # positive infinity
|
||||
sf3 = -inf # negative infinity
|
||||
|
||||
# not a number
|
||||
sf4 = nan # actual sNaN/qNaN encoding is implementation specific
|
||||
sf5 = +nan # same as `nan`
|
||||
sf6 = -nan # valid, actual encoding is implementation specific
|
||||
|
||||
# boolean
|
||||
bool1 = true
|
||||
bool2 = false
|
||||
|
||||
[date time]
|
||||
|
||||
# Offset Date-Time ( RFC 3339 : http://tools.ietf.org/html/rfc3339 )
|
||||
odt1 = 1979-05-27T07:32:00Z
|
||||
odt2 = 1979-05-27T00:32:00-07:00
|
||||
odt3 = 1979-05-27T00:32:00.999999-07:00
|
||||
# readability
|
||||
odt4 = 1979-05-27 07:32:00Z
|
||||
|
||||
# Local Date-Time (
|
||||
ldt1 = 1979-05-27T07:32:00
|
||||
ldt2 = 1979-05-27T00:32:00.999999
|
||||
|
||||
# Local Date
|
||||
ld1 = 1979-05-27
|
||||
|
||||
# Local Time
|
||||
lt1 = 07:32:00
|
||||
lt2 = 00:32:00.999999
|
||||
|
||||
[array]
|
||||
|
||||
arr1 = [ 1, 2, 3 ]
|
||||
arr2 = [ "red", "yellow", "green" ]
|
||||
arr3 = [ [ 1, 2 ], [3, 4, 5] ]
|
||||
arr4 = [ "all", 'strings', """are the same""", '''type''']
|
||||
arr5 = [ [ 1, 2 ], ["a", "b", "c"] ]
|
||||
|
||||
arr6 = [ 1, 2.0 ] # INVALID
|
||||
|
||||
arr7 = [
|
||||
1, 2, 3
|
||||
]
|
||||
|
||||
# Line breaks are OK when inside arrays
|
||||
hosts = [
|
||||
"alpha",
|
||||
"omega",
|
||||
"echo" # Comments at evry time
|
||||
]
|
||||
|
||||
arr8 = [
|
||||
1,
|
||||
2, # this is ok
|
||||
]
|
||||
|
||||
|
||||
# This is a special Section [table] definitions
|
||||
[table]
|
||||
# Under that, and until the next table or EOF are the key/values of that table.
|
||||
# Key/value pairs within tables are not guaranteed to be in any specific order.
|
||||
|
||||
[table-1]
|
||||
key1 = "some string"
|
||||
key2 = 123
|
||||
|
||||
[table-2]
|
||||
key1 = "another string"
|
||||
key2 = 456
|
||||
|
||||
[dog."tater.man"]
|
||||
type.name = "pug"
|
||||
# In JSON land, that would give you the following structure:
|
||||
# { "dog": { "tater.man": { "type": { "name": "pug" } } } }
|
||||
|
||||
[a.b.c] # this is best practice
|
||||
[ d.e.f ] # same as [d.e.f]
|
||||
[ g . h . i ] # same as [g.h.i]
|
||||
[ j . "ʞ" . 'l' ] # same as [j."ʞ".'l']
|
||||
|
||||
# [x] you
|
||||
# [x.y] don't
|
||||
# [x.y.z] need these
|
||||
[x.y.z.w] # for this to work
|
||||
|
||||
# DO NOT DO THIS
|
||||
|
||||
[a]
|
||||
b = 1
|
||||
|
||||
[a]
|
||||
c = 2
|
||||
|
||||
# DO NOT DO THIS EITHER
|
||||
|
||||
[a]
|
||||
b = 1
|
||||
|
||||
[a.b]
|
||||
c = 2
|
||||
|
||||
# Inline Table
|
||||
name = { first = "Tom", last = "Preston-Werner" }
|
||||
point = { x = 1, y = 2 }
|
||||
animal = { type.name = "pug" }
|
||||
|
||||
[name]
|
||||
first = "Tom"
|
||||
last = "Preston-Werner"
|
||||
|
||||
[point]
|
||||
x = 1
|
||||
y = 2
|
||||
|
||||
[animal]
|
||||
type.name = "pug"
|
||||
|
||||
|
||||
|
||||
# Array of Tables
|
||||
[[products]]
|
||||
name = "Hammer"
|
||||
sku = 738594937
|
||||
|
||||
[[products]]
|
||||
|
||||
[[products]]
|
||||
name = "Nail"
|
||||
sku = 284758393
|
||||
color = "gray"
|
||||
|
||||
# In JSON land, that would give you the following structure:
|
||||
# {
|
||||
# "products": [
|
||||
# { "name": "Hammer", "sku": 738594937 },
|
||||
# { },
|
||||
# { "name": "Nail", "sku": 284758393, "color": "gray" }
|
||||
# ]
|
||||
# }
|
||||
#
|
||||
#
|
||||
|
||||
[[fruit]]
|
||||
name = "apple"
|
||||
|
||||
[fruit.physical]
|
||||
color = "red"
|
||||
shape = "round"
|
||||
|
||||
[[fruit.variety]]
|
||||
name = "red delicious"
|
||||
|
||||
[[fruit.variety]]
|
||||
name = "granny smith"
|
||||
|
||||
[[fruit]]
|
||||
name = "banana"
|
||||
|
||||
[[fruit.variety]]
|
||||
name = "plantain"
|
||||
|
||||
# In JSON land, that would give you the following structure:
|
||||
# {
|
||||
# "fruit": [
|
||||
# {
|
||||
# "name": "apple",
|
||||
# "physical": {
|
||||
# "color": "red",
|
||||
# "shape": "round"
|
||||
# },
|
||||
# "variety": [
|
||||
# { "name": "red delicious" },
|
||||
# { "name": "granny smith" }
|
||||
# ]
|
||||
# },
|
||||
# {
|
||||
# "name": "banana",
|
||||
# "variety": [
|
||||
# { "name": "plantain" }
|
||||
# ]
|
||||
# }
|
||||
# ]
|
||||
# }
|
||||
#
|
||||
|
||||
# INVALID TOML DOC
|
||||
fruit = []
|
||||
|
||||
[[fruit]] # Not allowed
|
||||
|
||||
# INVALID TOML DOC
|
||||
[[fruit]]
|
||||
name = "apple"
|
||||
|
||||
[[fruit.variety]]
|
||||
name = "red delicious"
|
||||
|
||||
# This table conflicts with the previous table
|
||||
[fruit.variety]
|
||||
name = "granny smith"
|
||||
|
||||
points = [ { x = 1, y = 2, z = 3 },
|
||||
{ x = 7, y = 8, z = 9 },
|
||||
{ x = 2, y = 4, z = 8 } ]
|
||||
|
||||
|
||||
71
test/txtfiles/TXT/License.txt
Normal file
71
test/txtfiles/TXT/License.txt
Normal file
@ -0,0 +1,71 @@
|
||||
Notepad3 and MiniPath Copyright © 2008-2016 Rizonesoft, All rights reserved.
|
||||
https://www.rizonesoft.com
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation and/or
|
||||
other materials provided with the distribution.
|
||||
3. Neither the name of Florian Balmer nor the names of its contributors may be
|
||||
used to endorse or promote products derived from this software without specific
|
||||
prior written permission.
|
||||
|
||||
01 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
02 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
03 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
04 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
05 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
06 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
07 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
08 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
09 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
10 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
==================================================
|
||||
License for Scintilla and SciTE
|
||||
==================================================
|
||||
Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>
|
||||
|
||||
All Rights Reserved
|
||||
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose and without fee is hereby granted, provided that
|
||||
the above copyright notice appear in all copies and that both that copyright
|
||||
notice and this permission notice appear in supporting documentation.
|
||||
|
||||
NEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
|
||||
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NEIL
|
||||
HODGSON BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
|
||||
DAMAGESWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
==================================================
|
||||
License for Onigmo (Oniguruma-mod) RegEx Engine
|
||||
==================================================
|
||||
Copyright (c) 2002-2009 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
|
||||
Copyright (c) 2011-2014 K.Takata <kentkt AT csc DOT jp>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation and/or
|
||||
other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
|
||||
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
OF SUCH DAMAGE.
|
||||
5
test/txtfiles/TXT/Malayan_Problem.txt
Normal file
5
test/txtfiles/TXT/Malayan_Problem.txt
Normal file
@ -0,0 +1,5 @@
|
||||
\u0D19\u0D4d\u0D19
|
||||
\u0D19\u0D4d\u0D19
|
||||
ങ്ങ
|
||||
ങ്ങ
|
||||
ങ്ങ
|
||||
24
test/txtfiles/TXT/regex_find.txt
Normal file
24
test/txtfiles/TXT/regex_find.txt
Normal file
@ -0,0 +1,24 @@
|
||||
# =======================================================
|
||||
# Manual Test
|
||||
# -----------------------------------------------------------------------------------------------
|
||||
# In "Find Text" / "Replace Text" Dialog and RegEx chosen:
|
||||
# RegEx: "(\d\d)\s\1" ( w/o the double quotes)
|
||||
# => "can't "Find Previous" this string"
|
||||
# Remark: but, "Find Next" is working.
|
||||
# =======================================================
|
||||
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
401
test/txtfiles/python.py
Normal file
401
test/txtfiles/python.py
Normal file
@ -0,0 +1,401 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# -----------------------------------------------------------------------------
|
||||
"""
|
||||
Utilities and Helpers for General Tasks
|
||||
"""
|
||||
import sys
|
||||
import os
|
||||
import stat
|
||||
import getpass
|
||||
import shutil
|
||||
import tempfile
|
||||
import logging
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
# =============================================================================
|
||||
|
||||
WRITE_TO_LOGFILE = False
|
||||
DEFAULT_LOG_LEVEL = logging.INFO
|
||||
LOG_DIR_CONFIG_FILENAME = "_DBMIG_TMP_DIR_CFG.ini"
|
||||
|
||||
# =============================================================================
|
||||
|
||||
# TODO: unique keys should not be empty
|
||||
_NOT_NULL_EXCEPTION_LIST = [('deductions', 'imrestype_ref'),
|
||||
('queue lengths', 'imrestype_ref'),
|
||||
('neighbour networkpoint distances', 'traffic network'),
|
||||
('occupations', 'day'),
|
||||
('tb_loc_prop', 'internal_id')]
|
||||
#('flighttypes', 'bgcolor_ref'),
|
||||
#('managedstations', 'routings_ref'),
|
||||
#('routings', 'classification_ref'),
|
||||
#('routings', 'timezone_ref')]
|
||||
|
||||
# force FK references to be not null
|
||||
_NOT_NULL_FK_REF_LIST = ['managedstations']
|
||||
|
||||
# =============================================================================
|
||||
|
||||
def eprint(strg):
|
||||
""" print to stderr """
|
||||
print(strg, file=sys.stderr)
|
||||
sys.stderr.flush()
|
||||
|
||||
# =============================================================================
|
||||
|
||||
def is_ascii(strg):
|
||||
""" is_ascii() """
|
||||
#~return all(ord(c) < 128 for c in strg)
|
||||
try:
|
||||
strg.encode('ascii')
|
||||
except UnicodeEncodeError:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def is_mbcs(strg):
|
||||
""" is_ascii() """
|
||||
try:
|
||||
strg.encode('mbcs')
|
||||
except UnicodeEncodeError:
|
||||
return False
|
||||
return True
|
||||
|
||||
# =============================================================================
|
||||
|
||||
def check_read_access(input_file):
|
||||
""" check_read_access """
|
||||
if not os.path.isfile(input_file):
|
||||
eprint("Input file ({}) not found!".format(input_file))
|
||||
return False
|
||||
|
||||
if not os.access(input_file, os.R_OK):
|
||||
eprint("Input file ({}) is not readable!".format(input_file))
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
# =============================================================================
|
||||
|
||||
|
||||
def check_write_access(output_path):
|
||||
""" check_write_access """
|
||||
from tempfile import NamedTemporaryFile
|
||||
|
||||
# check if file exists
|
||||
if os.path.isfile(output_path):
|
||||
|
||||
if not os.access(output_path, os.W_OK):
|
||||
eprint("Output file ({}) is not writable!".format(output_path))
|
||||
return False
|
||||
try:
|
||||
os.rename(output_path, output_path) # hack alert
|
||||
except OSError as err:
|
||||
eprint("Error on write access: {}".format(err))
|
||||
return False
|
||||
|
||||
else: # check if directory is writable
|
||||
try:
|
||||
out_dir = os.path.dirname(output_path)
|
||||
with NamedTemporaryFile(dir=out_dir, delete=True) as tmpfile:
|
||||
tmpfile.write(b'blahblub')
|
||||
tmpfile.flush()
|
||||
except OSError as err:
|
||||
eprint("Error on write access: {}".format(err))
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
# =============================================================================
|
||||
|
||||
|
||||
def compose_log_file_path(db_path=None,aprefix="PY"):
|
||||
""" compose_log_file_path() """
|
||||
|
||||
global WRITE_TO_LOGFILE
|
||||
log_file_dir = None
|
||||
log_file_path = None
|
||||
|
||||
try:
|
||||
# assuming this is deterministic
|
||||
cfg_log_path = os.path.join(tempfile.gettempdir(), LOG_DIR_CONFIG_FILENAME)
|
||||
if os.path.isfile(cfg_log_path):
|
||||
with open(cfg_log_path, 'r') as file:
|
||||
log_file_dir = file.readline()
|
||||
except OSError as err:
|
||||
eprint("Error on reading file '{file}' : {err}".format(file=cfg_log_path, err=err))
|
||||
log_file_dir = None
|
||||
except: # pylint: disable=bare-except
|
||||
eprint("Error on composing logfile path!")
|
||||
log_file_dir = None
|
||||
finally:
|
||||
if log_file_dir:
|
||||
WRITE_TO_LOGFILE = True
|
||||
if db_path and not log_file_dir:
|
||||
log_file_dir = os.path.dirname(db_path)
|
||||
|
||||
if not (log_file_dir and os.path.isdir(log_file_dir)):
|
||||
return None
|
||||
|
||||
if not check_write_access(log_file_dir):
|
||||
eprint("No write access to: '{dir}!'".format(dir=log_file_dir))
|
||||
return None
|
||||
|
||||
if db_path:
|
||||
base_name = "_".join([aprefix, os.path.basename(db_path)])
|
||||
else:
|
||||
# no logfile specified, but log_file_dir given: make temp name
|
||||
tmp_path = tempfile.NamedTemporaryFile(prefix=aprefix, suffix="")
|
||||
base_name = os.path.basename(tmp_path.name)
|
||||
|
||||
time_stamp = datetime.now().strftime("%Y-%m-%d_%H%M%S.%f")[:-3]
|
||||
pid_str = "{}".format(os.getpid())
|
||||
log_file_name = ".".join([base_name[:16], getpass.getuser(), pid_str, time_stamp, "log"])
|
||||
|
||||
return os.path.join(log_file_dir, log_file_name)
|
||||
|
||||
|
||||
# =============================================================================
|
||||
|
||||
MAIN_LOGGER = "thePLPythonMainLogger"
|
||||
|
||||
def create_logger(log_file_path=None):
|
||||
""" create_logger() """
|
||||
if WRITE_TO_LOGFILE and log_file_path:
|
||||
have_write_access = check_write_access(log_file_path)
|
||||
else:
|
||||
have_write_access = False
|
||||
# create logger
|
||||
logger = logging.getLogger(MAIN_LOGGER)
|
||||
# create file handler which logs even debug messages
|
||||
if have_write_access:
|
||||
try:
|
||||
if os.path.isfile(log_file_path):
|
||||
os.remove(log_file_path)
|
||||
file_handler = logging.FileHandler(log_file_path, 'w', encoding='UTF-8')
|
||||
file_handler.setLevel(logging.NOTSET)
|
||||
except OSError as err:
|
||||
# don't use eprint() cause this will trigger error meassage in Planning
|
||||
print("Exception: Can not remove old logfile {}!".format(log_file_path))
|
||||
have_write_access = false
|
||||
# create console handler with a higher log level
|
||||
con_stdout_handler = logging.StreamHandler(stream=sys.stdout)
|
||||
con_stdout_handler.setLevel(logging.NOTSET)
|
||||
con_stderr_handler = logging.StreamHandler(stream=sys.stderr)
|
||||
con_stderr_handler.setLevel(logging.ERROR)
|
||||
# create formatter and add it to the handlers
|
||||
#formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
|
||||
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
|
||||
if have_write_access:
|
||||
file_handler.setFormatter(formatter)
|
||||
con_stdout_handler.setFormatter(formatter)
|
||||
con_stderr_handler.setFormatter(formatter)
|
||||
# add the handlers to the logger
|
||||
if have_write_access:
|
||||
logger.addHandler(file_handler)
|
||||
logger.addHandler(con_stdout_handler)
|
||||
logger.addHandler(con_stderr_handler)
|
||||
# set default loglevel
|
||||
logger.setLevel(DEFAULT_LOG_LEVEL)
|
||||
return logger
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
def get_main_logger():
|
||||
""" get_main_logger() """
|
||||
return logging.getLogger(MAIN_LOGGER)
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
def flush_logger():
|
||||
""" flush_logger() """
|
||||
logger = get_main_logger()
|
||||
for handler in logger.handlers:
|
||||
handler.flush()
|
||||
|
||||
# =============================================================================
|
||||
|
||||
|
||||
def add_read_permission(pathname, who='u'):
|
||||
"""Add "read" permission to specified path.
|
||||
"""
|
||||
mode = os.stat(pathname).st_mode
|
||||
mode_map = {
|
||||
'u': stat.S_IRUSR,
|
||||
'g': stat.S_IRGRP,
|
||||
'o': stat.S_IROTH,
|
||||
'a': stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH,
|
||||
}
|
||||
for w in who:
|
||||
mode |= mode_map[w]
|
||||
os.chmod(pathname, mode)
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
def add_write_permission(pathname, who='u'):
|
||||
"""Add "write" permission to specified path.
|
||||
"""
|
||||
mode = os.stat(pathname).st_mode
|
||||
mode_map = {
|
||||
'u': stat.S_IWUSR,
|
||||
'g': stat.S_IWGRP,
|
||||
'o': stat.S_IWOTH,
|
||||
'a': stat.S_IWUSR | stat.S_IWGRP | stat.S_IWOTH,
|
||||
}
|
||||
for w in who:
|
||||
mode |= mode_map[w]
|
||||
os.chmod(pathname, mode)
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
def add_execute_permission(pathname, who='u'):
|
||||
"""Add "write" permission to specified path.
|
||||
"""
|
||||
mode = os.stat(pathname).st_mode
|
||||
mode_map = {
|
||||
'u': stat.S_IXUSR,
|
||||
'g': stat.S_IXGRP,
|
||||
'o': stat.S_IXOTH,
|
||||
'a': stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH,
|
||||
}
|
||||
for w in who:
|
||||
mode |= mode_map[w]
|
||||
os.chmod(pathname, mode)
|
||||
|
||||
# =============================================================================
|
||||
|
||||
|
||||
def get_ordered_unique_list(seq, rev=False):
|
||||
""" get_ordered_unique_list() """
|
||||
return sorted(set(seq), reverse=rev)
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
def get_missing_elements(sorted_list_of_int, start=None, end=None):
|
||||
""" get_missing_elements()
|
||||
call: list(migutils.get_missing_elements(migutils.get_ordered_unique_list(seq)))
|
||||
"""
|
||||
if not start:
|
||||
start = 0
|
||||
if not end:
|
||||
end = len(sorted_list_of_int) - 1
|
||||
|
||||
if (end - start) <= 1:
|
||||
if (sorted_list_of_int[end] - sorted_list_of_int[start]) > 1:
|
||||
yield from range(sorted_list_of_int[start] + 1, sorted_list_of_int[end])
|
||||
return
|
||||
|
||||
index = start + (end - start) // 2
|
||||
|
||||
# is the lower half consecutive?
|
||||
consecutive_low = sorted_list_of_int[index] == (sorted_list_of_int[start] + (index - start))
|
||||
if not consecutive_low:
|
||||
yield from get_missing_elements(sorted_list_of_int, start, index)
|
||||
|
||||
# is the upper part consecutive?
|
||||
consecutive_high = sorted_list_of_int[index] == (sorted_list_of_int[end] - (end - index))
|
||||
if not consecutive_high:
|
||||
yield from get_missing_elements(sorted_list_of_int, index, end)
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
def create_temp_filecopy(logger, fpath, fprefix="py_", fsuffix=".tmp"):
|
||||
""" create_temp_filecopy
|
||||
"""
|
||||
#~tmp_file_name = db_path + ".tmp_{0}.mdb".format(os.getlogin())
|
||||
tmp_file = tempfile.NamedTemporaryFile(prefix=fprefix, suffix=fsuffix)
|
||||
tmp_file_name = tmp_file.name
|
||||
tmp_file.close() # deletes tmp file
|
||||
logger.info("Creating temporary copy %r.", tmp_file_name)
|
||||
copy_path = shutil.copy2(fpath, tmp_file_name)
|
||||
if not os.path.isfile(copy_path):
|
||||
logger.error("Can not create a temp. copy of '%r'.", fpath)
|
||||
return None
|
||||
add_read_permission(copy_path, 'a')
|
||||
add_write_permission(copy_path, 'a')
|
||||
return copy_path
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
# =============================================================================
|
||||
|
||||
class CiDict(dict):
|
||||
""" Case-Insensitive dictionary
|
||||
"""
|
||||
|
||||
class Key(str):
|
||||
""" Key """
|
||||
def __init__(self, key):
|
||||
""" __init__"""
|
||||
str.__init__(key)
|
||||
|
||||
def __hash__(self):
|
||||
""" __hash__"""
|
||||
return hash(self.lower())
|
||||
|
||||
def __eq__(self, other):
|
||||
""" __eq__"""
|
||||
return self.lower() == other.lower()
|
||||
|
||||
# ------------------------------------------------
|
||||
|
||||
def __init__(self, data=None):
|
||||
""" C'tor of CiDict """
|
||||
super(CiDict, self).__init__()
|
||||
if data is None:
|
||||
data = {}
|
||||
for (key, val) in data.items():
|
||||
self[key] = val
|
||||
|
||||
def __contains__(self, key):
|
||||
""" __contains__ """
|
||||
key = self.Key(key)
|
||||
return super(CiDict, self).__contains__(key)
|
||||
|
||||
def __delitem__(self, key):
|
||||
""" __delitem__ """
|
||||
key = self.Key(key)
|
||||
return super(CiDict, self).__delitem__(key)
|
||||
|
||||
def __setitem__(self, key, value):
|
||||
""" __setitem__ """
|
||||
key = self.Key(key)
|
||||
super(CiDict, self).__setitem__(key, value)
|
||||
|
||||
def __getitem__(self, key):
|
||||
""" __getitem__ """
|
||||
key = self.Key(key)
|
||||
return super(CiDict, self).__getitem__(key)
|
||||
|
||||
# =========================================================================
|
||||
|
||||
|
||||
def indent_xml(elem, level=0, last=False):
|
||||
""" indent_xml(): <a> text </a> tail """
|
||||
_tab = "\t"
|
||||
_tail = "\n" + (level * _tab)
|
||||
_text = _tail + _tab
|
||||
|
||||
if elem:
|
||||
if not elem.text or not elem.text.strip(): elem.text = _text
|
||||
|
||||
# recursion
|
||||
for el in elem[:-1]: indent_xml(el, level+1)
|
||||
|
||||
# last item
|
||||
if level:
|
||||
for el in elem[-1:]: indent_xml(el, level, True)
|
||||
else:
|
||||
for el in elem[-1:]: indent_xml(el, 1, True)
|
||||
|
||||
if not elem.tail or not elem.tail.strip(): elem.tail = "\n" if last else _tail
|
||||
|
||||
else:
|
||||
if not elem.tail or not elem.tail.strip(): elem.tail = _tail
|
||||
|
||||
# =============================================================================
|
||||
|
||||
|
||||
# =============================================================================
|
||||
@ -1,26 +0,0 @@
|
||||
In "Find Text" dialog (or "Replace Text" and Regular expression search box ticked),
|
||||
I can't "Find Previous" this string
|
||||
|
||||
(\d\d)\s\1
|
||||
|
||||
on this text (for example):
|
||||
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
03 03 04 05 06 07 08 09
|
||||
|
||||
but, "Find Next" is working.
|
||||
|
||||
In Notepad2 and Notepad2BE works fine.
|
||||
Loading…
Reference in New Issue
Block a user