Blame src/languages.py

Packit Service 50c9f2
#
Packit Service 50c9f2
# This file is an aid to generated the Languages rules file.
Packit Service 50c9f2
# usage:
Packit Service 50c9f2
#   python languages.py > ..\winbuild\Languages.rules
Packit Service 50c9f2
#
Packit Service 50c9f2
import os
Packit Service 50c9f2
import re
Packit Service 50c9f2
Packit Service 50c9f2
files = [f for f in os.listdir('.') if re.match(r'translator_[a-z][a-z]\.h', f)]
Packit Service 50c9f2
new_list = []
Packit Service 50c9f2
for f in files:
Packit Service 50c9f2
    new_list.append([f,(os.path.splitext(f)[0]).replace("translator_","").upper()])
Packit Service 50c9f2
Packit Service 50c9f2
#
Packit Service 50c9f2
# generating file is lang_cfg.py
Packit Service 50c9f2
# the rules file has to output lang_cfg.h
Packit Service 50c9f2
#
Packit Service 50c9f2
print("""\
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
        Name="languages"
Packit Service 50c9f2
        Version="8.00"
Packit Service 50c9f2
        >
Packit Service 50c9f2
        <Rules>
Packit Service 50c9f2
                
Packit Service 50c9f2
                        Name="Languages"
Packit Service 50c9f2
                        DisplayName="Settings"
Packit Service 50c9f2
                        CommandLine="python $(InputPath) [AllOptions] [AdditionalOptions] > $(InpDir)/$(InputName).h"
Packit Service 50c9f2
                        Outputs="$(IntDir)/$(InputName).h"
Packit Service 50c9f2
                        FileExtensions="*.py"
Packit Service 50c9f2
                        AdditionalDependencies=""
Packit Service 50c9f2
                        ExecutionDescription="Executing languages ..."
Packit Service 50c9f2
                        ShowOnlyRuleProperties="false"
Packit Service 50c9f2
                        >
Packit Service 50c9f2
                        <Properties>
Packit Service 50c9f2
                               
Packit Service 50c9f2
                                       Name="EnglishOnly"
Packit Service 50c9f2
                                       DisplayName="Use English Only"
Packit Service 50c9f2
                                       Description="Use English Only"
Packit Service 50c9f2
                                       DefaultValue="0"
Packit Service 50c9f2
                               >
Packit Service 50c9f2
                                       <Values>
Packit Service 50c9f2
                                               
Packit Service 50c9f2
                                               Value="0"
Packit Service 50c9f2
                                               Switch=""
Packit Service 50c9f2
                                               DisplayName="Don't use English Only"
Packit Service 50c9f2
                                               />
Packit Service 50c9f2
                                               
Packit Service 50c9f2
                                               Value="1"
Packit Service 50c9f2
                                               Switch="ENONLY"
Packit Service 50c9f2
                                               DisplayName="Use English Only"
Packit Service 50c9f2
                                               />
Packit Service 50c9f2
                                       </Values>
Packit Service 50c9f2
                               </EnumProperty>
Packit Service 50c9f2
""")
Packit Service 50c9f2
#
Packit Service 50c9f2
# generate loop, English is mandatory (so cannot be chosen)
Packit Service 50c9f2
#
Packit Service 50c9f2
for f in new_list:
Packit Service 50c9f2
    if (f[1] != "EN"):
Packit Service 50c9f2
        # search for the language description
Packit Service 50c9f2
        fil = open(f[0], 'r')
Packit Service 50c9f2
        tmp = ""
Packit Service 50c9f2
        for line in fil:
Packit Service 50c9f2
          if "idLanguage" in line:
Packit Service 50c9f2
             tmp = line
Packit Service 50c9f2
             if "}" in line:
Packit Service 50c9f2
               break
Packit Service 50c9f2
          elif (tmp != ""):
Packit Service 50c9f2
             tmp += line
Packit Service 50c9f2
             if "}" in line:
Packit Service 50c9f2
               break
Packit Service 50c9f2
    
Packit Service 50c9f2
        tmp = tmp.replace("\n","")
Packit Service 50c9f2
        l = re.sub('[^"]*"([^"]*)".*','\\1',tmp)
Packit Service 50c9f2
        l1 = l.replace("-","")
Packit Service 50c9f2
        # capatalize first letter
Packit Service 50c9f2
        l = l.title()
Packit Service 50c9f2
        print("""\
Packit Service 50c9f2
                                   
Packit Service 50c9f2
                                           Name="%s"
Packit Service 50c9f2
                                           DisplayName="Use %s"
Packit Service 50c9f2
                                           Description="Use %s"
Packit Service 50c9f2
                                           DefaultValue="1"
Packit Service 50c9f2
                                   >
Packit Service 50c9f2
                                           <Values>
Packit Service 50c9f2
                                                   
Packit Service 50c9f2
                                                   Value="0"
Packit Service 50c9f2
                                                   Switch=""
Packit Service 50c9f2
                                                   DisplayName="Don't use %s"
Packit Service 50c9f2
                                                   />
Packit Service 50c9f2
                                                   
Packit Service 50c9f2
                                                   Value="1"
Packit Service 50c9f2
                                                   Switch="%s"
Packit Service 50c9f2
                                                   DisplayName="Use %s"
Packit Service 50c9f2
                                                   />
Packit Service 50c9f2
                                           </Values>
Packit Service 50c9f2
                                   </EnumProperty>
Packit Service 50c9f2
        """ % (l1, l, l, l, f[1], l))
Packit Service 50c9f2
Packit Service 50c9f2
print("""\
Packit Service 50c9f2
                        </Properties>
Packit Service 50c9f2
                </CustomBuildRule>
Packit Service 50c9f2
        </Rules>
Packit Service 50c9f2
</VisualStudioToolFile>
Packit Service 50c9f2
""")