diff options
Diffstat (limited to 'core/lang.bat')
-rw-r--r-- | core/lang.bat | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/core/lang.bat b/core/lang.bat new file mode 100644 index 0000000..d128469 --- /dev/null +++ b/core/lang.bat @@ -0,0 +1,81 @@ +echo lang.bat: generating default lang strings... +set lang_in="%1langs\en.lng" +set lang_out_def="%1core\lang_def.inc" +set lang_out_enum="%1core\lang_enum.inc" +set lang_out_info="%1core\lang_info.inc" +set lang_def=%lang_out_def% +set lang_enum=%lang_out_enum% +set lang_info=%lang_out_info% +set check_def=0 +if exist %lang_out_def% ( + set lang_out_def="%1core\lang_def.tmp" + set check_def=1 +) +set check_enum=0 +if exist %lang_out_enum% ( + set lang_out_enum="%1core\lang_enum.tmp" + set check_enum=1 +) +set check_info=0 +if exist %lang_out_info% ( + set lang_out_info="%1core\lang_info.tmp" + set check_info=1 +) +set area=[Main] +set currarea= + +echo {> %lang_out_def% + +echo enum LangString {> %lang_out_enum% + +echo static const struct {> %lang_out_info% +echo size_t id;>> %lang_out_info% +echo const char *name;>> %lang_out_info% +echo } key_info[] = {>> %lang_out_info% + +setlocal enableextensions enabledelayedexpansion +for /f "usebackq delims=" %%a in (!lang_in!) do ( + set ln=%%a + if "x!ln:~0,1!"=="x[" ( + set currarea=!ln! + ) else if "x!area!"=="x!currarea!" ( + rem for preserving exclamation marks in data: + setlocal disabledelayedexpansion + for /f "tokens=1* delims==" %%b in ("%%a") do ( + set currkey=%%b + set currval=%%c + setlocal enabledelayedexpansion + echo default_values_[ls!currkey!] = replace_escape_chars^("!currval:"=\"!"^);>> !lang_out_def! + echo ls!currkey!,>> !lang_out_enum! + echo {ls!currkey!, "!currkey:"=\"!"},>> !lang_out_info! + endlocal + ) + endlocal + ) +) +echo };>> %lang_out_def% +echo lsCNT };>> %lang_out_enum% +echo };>> %lang_out_info% +endlocal + +call :ReplaceOld %check_def% %lang_out_def% %lang_def% default +call :ReplaceOld %check_enum% %lang_out_enum% %lang_enum% enum +call :ReplaceOld %check_info% %lang_out_info% %lang_info% info +goto :EOF + +:ReplaceOld +setlocal enableextensions enabledelayedexpansion +if "%1" == "1" ( + fc %2 %3 /B>>nul 2>&1 + if !ERRORLEVEL! == 1 ( + copy /y %2 %3>>nul 2>&1 + del %2>>nul 2>&1 + echo lang.bat: %4 lang strings '%3' are updated + ) else ( + echo lang.bat: %4 lang strings '%3' are up to date + ) +) else ( + echo lang.bat: %4 lang strings '%3' are generated +) +endlocal +goto :EOF
\ No newline at end of file |