diff options
Diffstat (limited to 'tools/localize/res_check.cpp')
-rw-r--r-- | tools/localize/res_check.cpp | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/tools/localize/res_check.cpp b/tools/localize/res_check.cpp deleted file mode 100644 index 0fab98a..0000000 --- a/tools/localize/res_check.cpp +++ /dev/null @@ -1,106 +0,0 @@ -#include "res_check.h" -#include "localize.h" -#include "file_utils.h" -#include "ValuesFile.h" - -#include <stdio.h> - -static int check_file(const ValuesFile* file); -static int check_value(const SourcePos& pos, const XMLNode* value); -static int scan_for_unguarded_format(const SourcePos& pos, const XMLNode* value, int depth = 0); - -int -do_rescheck(const vector<string>& files) -{ - int err; - - Configuration english; - english.locale = "en_US"; - - for (size_t i=0; i<files.size(); i++) { - const string filename = files[i]; - ValuesFile* valuesFile = get_local_values_file(filename, english, CURRENT_VERSION, - "0", true); - if (valuesFile != NULL) { - err |= check_file(valuesFile); - delete valuesFile; - } else { - err |= 1; - } - } - - return err; -} - -static int -check_file(const ValuesFile* file) -{ - int err = 0; - set<StringResource> strings = file->GetStrings(); - for (set<StringResource>::iterator it=strings.begin(); it!=strings.end(); it++) { - XMLNode* value = it->value; - if (value != NULL) { - err |= check_value(it->pos, value); - } - } - return err; -} - -static bool -contains_percent(const string& str) -{ - const size_t len = str.length(); - for (size_t i=0; i<len; i++) { - char c = str[i]; - if (c == '%') { - return true; - } - } - return false; -} - -static int -check_value(const SourcePos& pos, const XMLNode* value) -{ - int err = 0; - err |= scan_for_unguarded_format(pos, value); - return err; -} - -static bool -is_xliff_block(const string& ns, const string& name) -{ - if (ns == XLIFF_XMLNS) { - return name == "g"; - } else { - return false; - } -} - -static int -scan_for_unguarded_format(const SourcePos& pos, const string& string) -{ - bool containsPercent = contains_percent(string); - if (containsPercent) { - pos.Error("unguarded percent: '%s'\n", string.c_str()); - } - return 0; -} - -static int -scan_for_unguarded_format(const SourcePos& pos, const XMLNode* value, int depth) -{ - if (value->Type() == XMLNode::ELEMENT) { - int err = 0; - if (depth == 0 || !is_xliff_block(value->Namespace(), value->Name())) { - const vector<XMLNode*>& children = value->Children(); - for (size_t i=0; i<children.size(); i++) { - err |= scan_for_unguarded_format(pos, children[i], depth+1); - } - } - return err; - } else { - return scan_for_unguarded_format(pos, value->Text()); - } -} - |