summaryrefslogtreecommitdiff
path: root/tools/lpgen
diff options
context:
space:
mode:
authorBasil <basil@miranda-ng.org>2013-01-18 13:26:15 +0000
committerBasil <basil@miranda-ng.org>2013-01-18 13:26:15 +0000
commitdd6e8ba6edc6a5a92c907bb1676fd6f5f4f68e2b (patch)
treec93be955817ebcfe87207e56d64eb9d628201882 /tools/lpgen
parentefcdec895e56a26e97e05c8a35a56a0584be30d2 (diff)
Big filtering enging update, now even less garbage in /langpaks/engilish/
new /crap:"yes" key to lpgen.js for output Crap.txt with filtered strings. Saved near lpgen git-svn-id: http://svn.miranda-ng.org/main/trunk@3154 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'tools/lpgen')
-rw-r--r--tools/lpgen/lpgen.js72
1 files changed, 51 insertions, 21 deletions
diff --git a/tools/lpgen/lpgen.js b/tools/lpgen/lpgen.js
index 35d13e5f44..1193f512c2 100644
--- a/tools/lpgen/lpgen.js
+++ b/tools/lpgen/lpgen.js
@@ -1,15 +1,16 @@
-//**********************************************************************************//
-//* Name: lpgen.js *//
-//* Language: JScript *//
-//* Function: Parse Miranda-NG source for generate translation templates *//
-//* Usage: Generate translation templates for Miranda-NG plugins and Core *//
-//* Usage: "cscript /nologo lpgen.js" to run generation in batches *//
-//* Usage: "cscript /nologo lpgen.js /log:"yes"" to enable console logging *//
-//* Usage: "cscript /nologo lpgen.js /path:"path_to_folder"" for one plugin *//
-//* Usage: Double click to choose folder for one plugin template generation *//
-//* Requirements: for batch mode: create folder ..\..\langpacks\english\Plugins *//
-//* Author: BasiL *//
-//**********************************************************************************//
+//***********************************************************************************//
+//* Name: lpgen.js *//
+//* Language: JScript *//
+//* Function: Parse Miranda-NG source for generate translation templates *//
+//* Usage: Generate translation templates for Miranda-NG plugins and Core *//
+//* Usage: "cscript /nologo lpgen.js" to run generation in batches *//
+//* Usage: "cscript /nologo lpgen.js /log:"yes"" to enable console logging *//
+//* Usage: "cscript /nologo lpgen.js /path:"path_to_folder"" for one plugin *//
+//* Usage: "cscript /nologo lpgen.js /crap:"yes"" filtered srings in Crap.txt*//
+//* Usage: Double click to choose folder for one plugin template generation *//
+//* Requirements: for batch mode: create folder ..\..\langpacks\english\Plugins *//
+//* Author: BasiL *//
+//***********************************************************************************//
//Init Variables
//Create FileSystemObject FSO
@@ -36,7 +37,10 @@ var protocols=FSO.BuildPath(trunk,"Protocols");
var plugins=FSO.BuildPath(trunk,"Plugins");
//langpack folder "\langpacks\english\" in trunk folder
var langpack_en=FSO.BuildPath(trunk,"langpacks\\english");
-
+//Crap.txt will contain strings, which are removed by filtering engine as a garbage, in case if this string are not garbage :)
+var crapfile="Crap.txt"
+//crap array
+var crap=new Array;
//*********************************************************************************//
// Checking command line parameters *//
//*********************************************************************************//
@@ -62,6 +66,8 @@ if (WScript.FullName.toLowerCase().charAt(WScript.FullName.length - 11)=="w") {
if (WScript.Arguments.Named.Item("path")) {
//Call GeneratePluginTranslate for path specified in command line argument /path:"path/to/plugin", output result to "scriptpath"
GeneratePluginTranslate(WScript.Arguments.Named.Item("path"),scriptpath);
+ //Write gargage crap array into crap file
+ WriteToFile(crap,crapfile);
//We are done, quit.
WScript.Quit();
}
@@ -117,6 +123,8 @@ while (!files.atEnd()) {
//next project file
files.moveNext();
};
+//Write Crap to file.
+if (WScript.Arguments.Named.Item("crap")) WriteToFile(crap,crapfile);
//*********************************************************************************//
// Functions *//
@@ -347,6 +355,7 @@ function ParseFiles (filelist,stringsarray, parsefunction) {
while (!filesenum.atEnd()) {
//record into current_strings current length of stringsarray
var current_strings=stringsarray.length;
+ var crap_strings=crap.length;
//curfile is our current file in files enumerator
curfile=filesenum.item();
//now apply a parsing function to current file, and put result into stringsarray
@@ -355,6 +364,7 @@ function ParseFiles (filelist,stringsarray, parsefunction) {
curfilepath=new String(curfile);
//if after parsing file our stringsarray length greater then var "current_strings", so parsed file return some strings. Thus, we need add a comment with filename
if (stringsarray.length>current_strings) stringsarray.splice(current_strings,0,";file "+curfilepath.substring(trunkPath.length));
+ if (crap.length>crap_strings) crap.splice(crap_strings,0,";file "+curfilepath.substring(trunkPath.length));
//move to next file
filesenum.moveNext();
};
@@ -438,20 +448,40 @@ function ParseSourceFile (SourceFile,array) {
//filter _T() function results
function filter_T(string) {
-//filter not begin with symbols :.-[]"?;#~{!/_+$
-var filter1=/^[^\:\-\[\]\"\?\;\#\~\|\{\!\/\_\+\\$].+$/g;
+//filter not begin with symbols :.-]?;#~{!/_+$
+var filter1=/^[^\:\-\]\?\;\#\~\|\{\!\/\_\+\\$].+$/g;
//filter string starting from following words
-var filter2=/^(?:(SOFTWARE\\|SYSTEM\\|http|ftp|UTF-|utf-|TEXT|EXE|exe|txt|css|html|dat|txt|MS\x20|CLVM|TM_|CLCB|CLSID|CLUI|d\x20|HKEY_|DWORD|WORD|BYTE|MButton|BUTTON|WindowClass|MHeader|RichEdit|RICHEDIT|STATIC|EDIT|CList|\d|listbox|LISTBOX|combobox|COMBOBOX|TitleB|std\w|iso-|windows-|<div|<html|<img|<span|<hr|<a\x20|<table|<td|miranda_|kernel32|user32|muc|pubsub|shlwapi|Tahoma|NBRichEdit|CreatePopup|<\/|<\w>|\w\\\w|urn\:|<\?xml|<\!|h\d|%s[%\-\\]|\.!\.)).*$/g;
+var filter2=/^(SOFTWARE\\|SYSTEM\\|http|ftp|UTF-|utf-|TEXT|EXE|exe|txt|css|html|dat|txt|MS\x20|CLVM|TM_|CLCB|CLSID|CLUI|HKEY_|MButton|BUTTON|WindowClass|MHeader|RichEdit|RICHEDIT|STATIC|EDIT|CList|\d|listbox|LISTBOX|combobox|COMBOBOX|TitleB|std\w|iso-|windows-|<div|<html|<img|<span|<hr|<a\x20|<table|<td|miranda_|kernel32|user32|muc|pubsub|shlwapi|Tahoma|NBRichEdit|CreatePopup|<\/|<\w>|\w\\\w|urn\:|<\?xml|<\!|h\d|\.!\.).*$/g;
//filter string ending with following words
-var filter3=/^.+(\.\w{2,4}|001|\/value|\*!\*|=)$/g;
+var filter3=/^.+(001|\/value|\*!\*|=)$/g;
+//filter from ÉàËèñ, different versinos.
+//var filter4=/^((%(\d+)?\w\w?)|(\\\w)|(%\w+%)|\.(\w{2,4}|travel|museum|xn--\w+)|\W|\s|\d+)+$/g;
+//var filter4=/^((%(\d+)?\w\w?)|(\\\w)|(%\w+%)|(([\w-]+\.)*\.(\w{2,4}|travel|museum|xn--\w+))|\W|\s|\d+)+$/g;
+//var filter4=/^((%(\d+)?\w\w?)|(d\s\w)|\[\/?(\w|url|color|)=\]?|(\\\w)|(%\w+%)|(([\w-]+\.)*\.(\w{2,4}|travel|museum|xn--\w+))|\W|\s|\d+)+$/g;
+//var filter4=/^((%(\d+)?\w\w?)|(d\s\w)|\[\/?(\w|url|color)(=\w*)?\]?|(\\\w)|(%\w+%)|(([\w-]+\.)*\.(\w{2,4}|travel|museum|xn--\w+))|\W|\s|\d+)+$/g;
+//var filter4=/^((%(\d+)?\w\w?)|(d\s\w)|\[\/?(\w|url|img|size|quote|color)(=\w*)?\]?|(\\\w)|(%\w+%)|(([\w-]+\.)*\.(\w{2,4}|travel|museum|xn--\w+))|\W+|\s+|\d+)+$/gi;
+//var filter4=/^((%(\d+)?\w\w?)|(d\s\w)|\[\/?(\w|url|img|size|quote|color)(=\w*)?\]?|(\\\w)|(%\w+%)|(([\w-]+\.)*\.(\w{2,4}|travel|museum|xn--\w+))|\W|\s|\d)+$/gi;
+var filter4=/^((%(\d+)?\w\w?)|(d\s\w)|\[\/?(\w|url|img|size|quote|color)(=\w*)?\]?|(\\\w)|(%\w+%)|(([\w-]+\.)*\.(\w{2,4}|travel|museum|xn--\w+))|\W|\s|\d)+$/gi;
+//filter from ÉàËèñ for remove filenames and pathes.
+//var filter5=/^[\w-*]+\.\w+$/g;
+//var filter5=/^[\w_:%.\\*-]+\.\w+$/g;
+var filter5=/^[\w_:%.\\\/*-]+\.\w+$/g;
+
+//apply filters to our string
test1=filter1.test(string);
test2=filter2.test(string);
test3=filter3.test(string);
-//WScript.Echo(string+" 1: "+test1);
-//WScript.Echo(string+" 2: "+test2);
-if (test1 && !test2 && !test3) {
+test4=filter4.test(string);
+test5=filter5.test(string);
+
+//if match (test1) first filter and NOT match other tests, thus string are good, return this string back.
+if (test1 && !test2 && !test3 && !test4 && !test5) {
return string;
- } else return;
+ } else {
+ //in other case, string is a garbage, put into crap array.
+ crap.push(string);
+ return;
+ }
};
//Parse Version.h file to get one translated stirng from "Description" and make a pluging template header.