def main():
    syntaxDataPath = os.path.join(os.path.dirname(__file__), '..', 'qutepart', 'syntax', 'data')
    xmlFilesPath = os.path.join(syntaxDataPath, 'xml')
    xmlFileNames = [fileName for fileName in os.listdir(xmlFilesPath) \
                        if fileName.endswith('.xml')]
    
    syntaxNameToXmlFileName = {}
    mimeTypeToXmlFileName = {}
    extensionToXmlFileName = {}
    firstLineToXmlFileName = {}

    for xmlFileName in xmlFileNames:
        xmlFilePath = os.path.join(xmlFilesPath, xmlFileName)
        syntax = Syntax(None)
        loadSyntax(syntax, xmlFilePath)
        if not syntax.name in syntaxNameToXmlFileName or \
           syntaxNameToXmlFileName[syntax.name][0] < syntax.priority:
            syntaxNameToXmlFileName[syntax.name] = (syntax.priority, xmlFileName)
        
        if syntax.mimetype:
            for mimetype in syntax.mimetype:
                if not mimetype in mimeTypeToXmlFileName or \
                   mimeTypeToXmlFileName[mimetype][0] < syntax.priority:
                    mimeTypeToXmlFileName[mimetype] = (syntax.priority, xmlFileName)
        
        if syntax.extensions:
            for extension in syntax.extensions:
                if not extension in extensionToXmlFileName or \
                   extensionToXmlFileName[extension][0] < syntax.priority:
                    extensionToXmlFileName[extension] = (syntax.priority, xmlFileName)
        
        if syntax.firstLineGlobs:
            for glob in syntax.firstLineGlobs:
                if not glob in firstLineToXmlFileName or \
                   firstLineToXmlFileName[glob][0] < syntax.priority:
                    firstLineToXmlFileName[glob] = (syntax.priority, xmlFileName)
            
    # remove priority, leave only xml file names
    for dictionary in (syntaxNameToXmlFileName,
                       mimeTypeToXmlFileName,
                       extensionToXmlFileName,
                       firstLineToXmlFileName):
        newDictionary = {}
        for key, item in dictionary.items():
            newDictionary[key] = item[1]
        dictionary.clear()
        dictionary.update(newDictionary)
    
    result = {}
    result['syntaxNameToXmlFileName'] = syntaxNameToXmlFileName
    result['mimeTypeToXmlFileName'] = mimeTypeToXmlFileName
    result['extensionToXmlFileName'] = extensionToXmlFileName
    result['firstLineToXmlFileName'] = firstLineToXmlFileName

    with open(os.path.join(syntaxDataPath, 'syntax_db.json'), 'w') as syntaxDbFile:
        json.dump(result, syntaxDbFile, sort_keys=True, indent=4)
    
    print 'Done. Do not forget to commit the changes'
Beispiel #2
0
def main():
    os.chdir(_MY_PATH)
    _add_php('javascript-php.xml', 'javascript.xml')
    _add_php('css-php.xml', 'css.xml')
    _add_php('html-php.xml', 'html.xml')

    xmlFilesPath = os.path.join(_MY_PATH, 'xml')
    xmlFileNames = [fileName for fileName in os.listdir(xmlFilesPath) \
                        if fileName.endswith('.xml')]

    syntaxNameToXmlFileName = {}
    mimeTypeToXmlFileName = {}
    extensionToXmlFileName = {}
    firstLineToXmlFileName = {}

    for xmlFileName in xmlFileNames:
        xmlFilePath = os.path.join(xmlFilesPath, xmlFileName)
        syntax = Syntax(None)
        loadSyntax(syntax, xmlFilePath)
        if not syntax.name in syntaxNameToXmlFileName or \
           syntaxNameToXmlFileName[syntax.name][0] < syntax.priority:
            syntaxNameToXmlFileName[syntax.name] = (syntax.priority,
                                                    xmlFileName)

        if syntax.mimetype:
            for mimetype in syntax.mimetype:
                if not mimetype in mimeTypeToXmlFileName or \
                   mimeTypeToXmlFileName[mimetype][0] < syntax.priority:
                    mimeTypeToXmlFileName[mimetype] = (syntax.priority,
                                                       xmlFileName)

        if syntax.extensions:
            for extension in syntax.extensions:
                if extension not in extensionToXmlFileName or \
                   extensionToXmlFileName[extension][0] < syntax.priority:
                    extensionToXmlFileName[extension] = (syntax.priority,
                                                         xmlFileName)

        if syntax.firstLineGlobs:
            for glob in syntax.firstLineGlobs:
                if not glob in firstLineToXmlFileName or \
                   firstLineToXmlFileName[glob][0] < syntax.priority:
                    firstLineToXmlFileName[glob] = (syntax.priority,
                                                    xmlFileName)

    # remove priority, leave only xml file names
    for dictionary in (syntaxNameToXmlFileName, mimeTypeToXmlFileName,
                       extensionToXmlFileName, firstLineToXmlFileName):
        newDictionary = {}
        for key, item in dictionary.items():
            newDictionary[key] = item[1]
        dictionary.clear()
        dictionary.update(newDictionary)

    # Fix up php first line pattern. It contains <?php, but it is generated from html, and html doesn't contain it
    firstLineToXmlFileName['<?php*'] = 'html-php.xml'

    result = {
        'syntaxNameToXmlFileName': syntaxNameToXmlFileName,
        'mimeTypeToXmlFileName': mimeTypeToXmlFileName,
        'extensionToXmlFileName': extensionToXmlFileName,
        'firstLineToXmlFileName': firstLineToXmlFileName,
    }

    with open('syntax_db.json', 'w', encoding='utf-8') as syntaxDbFile:
        json.dump(result, syntaxDbFile, sort_keys=True, indent=4)

    print('Done. Do not forget to commit the changes')
def main():
    os.chdir(_MY_PATH)
    _add_php('javascript-php.xml', 'javascript.xml')
    _add_php('css-php.xml', 'css.xml')
    _add_php('html-php.xml', 'html.xml')

    xmlFilesPath = os.path.join(_MY_PATH, 'xml')
    xmlFileNames = [fileName for fileName in os.listdir(xmlFilesPath) \
                        if fileName.endswith('.xml')]

    syntaxNameToXmlFileName = {}
    mimeTypeToXmlFileName = {}
    extensionToXmlFileName = {}
    firstLineToXmlFileName = {}

    for xmlFileName in xmlFileNames:
        xmlFilePath = os.path.join(xmlFilesPath, xmlFileName)
        syntax = Syntax(None)
        loadSyntax(syntax, xmlFilePath)
        if not syntax.name in syntaxNameToXmlFileName or \
           syntaxNameToXmlFileName[syntax.name][0] < syntax.priority:
            syntaxNameToXmlFileName[syntax.name] = (syntax.priority, xmlFileName)

        if syntax.mimetype:
            for mimetype in syntax.mimetype:
                if not mimetype in mimeTypeToXmlFileName or \
                   mimeTypeToXmlFileName[mimetype][0] < syntax.priority:
                    mimeTypeToXmlFileName[mimetype] = (syntax.priority, xmlFileName)

        if syntax.extensions:
            for extension in syntax.extensions:
                if extension not in extensionToXmlFileName or \
                   extensionToXmlFileName[extension][0] < syntax.priority:
                    extensionToXmlFileName[extension] = (syntax.priority, xmlFileName)

        if syntax.firstLineGlobs:
            for glob in syntax.firstLineGlobs:
                if not glob in firstLineToXmlFileName or \
                   firstLineToXmlFileName[glob][0] < syntax.priority:
                    firstLineToXmlFileName[glob] = (syntax.priority, xmlFileName)

    # remove priority, leave only xml file names
    for dictionary in (syntaxNameToXmlFileName,
                       mimeTypeToXmlFileName,
                       extensionToXmlFileName,
                       firstLineToXmlFileName):
        newDictionary = {}
        for key, item in dictionary.items():
            newDictionary[key] = item[1]
        dictionary.clear()
        dictionary.update(newDictionary)

    # Fix up php first line pattern. It contains <?php, but it is generated from html, and html doesn't contain it
    firstLineToXmlFileName['<?php*'] = 'html-php.xml'

    result = {}
    result['syntaxNameToXmlFileName'] = syntaxNameToXmlFileName
    result['mimeTypeToXmlFileName'] = mimeTypeToXmlFileName
    result['extensionToXmlFileName'] = extensionToXmlFileName
    result['firstLineToXmlFileName'] = firstLineToXmlFileName

    with open('syntax_db.json', 'w') as syntaxDbFile:
        json.dump(result, syntaxDbFile, sort_keys=True, indent=4)

    print('Done. Do not forget to commit the changes')
Beispiel #4
0
def main():
    os.chdir(_MY_PATH)
    _add_php('javascript-php.xml', 'javascript.xml')
    _add_php('css-php.xml', 'css.xml')
    _add_php('html-php.xml', 'html.xml')

    xmlFilesPath = os.path.join(_MY_PATH, 'xml')
    xmlFileNames = [fileName for fileName in os.listdir(xmlFilesPath) \
                        if fileName.endswith('.xml')]

    syntaxNameToXmlFileName = {}
    mimeTypeToXmlFileName = {}
    extensionToXmlFileName = {}
    firstLineToXmlFileName = {}

    for xmlFileName in xmlFileNames:
        xmlFilePath = os.path.join(xmlFilesPath, xmlFileName)
        syntax = Syntax(None)
        loadSyntax(syntax, xmlFilePath)
        if not syntax.name in syntaxNameToXmlFileName or \
           syntaxNameToXmlFileName[syntax.name][0] < syntax.priority:
            syntaxNameToXmlFileName[syntax.name] = (syntax.priority,
                                                    xmlFileName)

        if syntax.mimetype:
            for mimetype in syntax.mimetype:
                if not mimetype in mimeTypeToXmlFileName or \
                   mimeTypeToXmlFileName[mimetype][0] < syntax.priority:
                    mimeTypeToXmlFileName[mimetype] = (syntax.priority,
                                                       xmlFileName)

        if syntax.extensions:
            for extension in syntax.extensions:
                if extension not in extensionToXmlFileName or \
                   extensionToXmlFileName[extension][0] < syntax.priority:
                    extensionToXmlFileName[extension] = (syntax.priority,
                                                         xmlFileName)

        if syntax.firstLineGlobs:
            for glob in syntax.firstLineGlobs:
                if not glob in firstLineToXmlFileName or \
                   firstLineToXmlFileName[glob][0] < syntax.priority:
                    firstLineToXmlFileName[glob] = (syntax.priority,
                                                    xmlFileName)

    # remove priority, leave only xml file names
    for dictionary in (syntaxNameToXmlFileName, mimeTypeToXmlFileName,
                       extensionToXmlFileName, firstLineToXmlFileName):
        newDictionary = {}
        for key, item in dictionary.items():
            newDictionary[key] = item[1]
        dictionary.clear()
        dictionary.update(newDictionary)

    result = {}
    result['syntaxNameToXmlFileName'] = syntaxNameToXmlFileName
    result['mimeTypeToXmlFileName'] = mimeTypeToXmlFileName
    result['extensionToXmlFileName'] = extensionToXmlFileName
    result['firstLineToXmlFileName'] = firstLineToXmlFileName

    with open('syntax_db.json', 'w') as syntaxDbFile:
        json.dump(result, syntaxDbFile, sort_keys=True, indent=4)

    print 'Done. Do not forget to commit the changes'